2#include "AudioTools/CoreAudio/AudioHttp/AbstractURLStream.h"
3#include "AudioTools/CoreAudio/AudioMetaData/MetaDataICY.h"
4#include "AudioToolsConfig.h"
28 ICYStreamT(
int readBufferSize = DEFAULT_BUFFER_SIZE) {
30 setReadBufferSize(readBufferSize);
35 int readBufferSize = DEFAULT_BUFFER_SIZE)
59 virtual bool begin(
const char*
urlStr,
const char* acceptMime =
nullptr,
60 MethodID action = GET,
const char* reqMime =
"",
61 const char* reqData =
"")
override {
65 bool result = url.begin(
urlStr, acceptMime, action, reqMime, reqData);
70 int iceMetaint = icySetup.
setup(*
this);
77 LOGW(
"url does not provide metadata");
84 virtual void end()
override {
84 virtual void end()
override {
…}
91 virtual int available()
override {
return url.available(); }
94 virtual size_t readBytes(uint8_t* data,
size_t len)
override {
98 int read = url.readBytes(data, len);
101 for (
int j = 0; j < read; j++) {
104 data[pos++] = data[j];
110 result = url.readBytes(data, len);
112 LOGD(
"%s: %zu -> %zu", LOG_METHOD, len, result);
94 virtual size_t readBytes(uint8_t* data,
size_t len)
override {
…}
117 virtual int read()
override {
132 operator bool() {
return url; }
134 void setReadBufferSize(
int readBufferSize) {
135 url.setReadBufferSize(readBufferSize);
139 void setSSID(
const char* ssid)
override { url.setSSID(ssid); }
142 void setPassword(
const char* password)
override { url.setPassword(password); }
149 void setCACert(
const char* cert) { url.setCACert(cert); }
152 url.addRequestHeader(key, value);
156 return url.getReplyHeader(key);
166 const char*
urlStr()
override {
return url.urlStr(); }
167 size_t totalRead()
override {
return url.totalRead(); };
169 bool waitForData(
int timeout)
override {
return url.waitForData(timeout); }
174 void (*callback)(
MetaDataType info,
const char* str,
int len) =
nullptr;