2#include "AudioTools/CoreAudio/AudioHttp/AbstractURLStream.h"
3#include "AudioTools/CoreAudio/AudioMetaData/MetaDataICY.h"
4#include "AudioToolsConfig.h"
44 ICYStreamT(
int readBufferSize = DEFAULT_BUFFER_SIZE) {
46 setReadBufferSize(readBufferSize);
51 int readBufferSize = DEFAULT_BUFFER_SIZE)
75 virtual bool begin(
const char*
urlStr,
const char* acceptMime =
nullptr,
76 MethodID action = GET,
const char* reqMime =
"",
77 const char* reqData =
"")
override {
81 bool result = url.begin(
urlStr, acceptMime, action, reqMime, reqData);
86 int iceMetaint = icySetup.
setup(*
this);
93 LOGW(
"url does not provide metadata");
100 virtual void end()
override {
107 virtual int available()
override {
return url.available(); }
110 virtual size_t readBytes(uint8_t* data,
size_t len)
override {
114 int read = url.readBytes(data, len);
117 for (
int j = 0; j < read; j++) {
120 data[pos++] = data[j];
126 result = url.readBytes(data, len);
128 LOGD(
"%s: %zu -> %zu", LOG_METHOD, len, result);
133 virtual int read()
override {
149 operator bool() {
return url; }
151 void setReadBufferSize(
int readBufferSize) {
152 url.setReadBufferSize(readBufferSize);
156 void setSSID(
const char* ssid)
override { url.setSSID(ssid); }
159 void setPassword(
const char* password)
override { url.setPassword(password); }
165 void setCACert(
const char* cert) { url.setCACert(cert); }
168 url.addRequestHeader(key, value);
172 return url.getReplyHeader(key);
182 const char*
urlStr()
override {
return url.urlStr(); }
183 size_t totalRead()
override {
return url.totalRead(); };
185 bool waitForData(
int timeout)
override {
return url.waitForData(timeout); }
190 void (*callback)(
MetaDataType info,
const char* str,
int len) =
nullptr;