blob: c4abdcd0d2320975570bd9a74eb40243936b0bed (
plain) (
tree)
|
|
#pragma once
#include "httpheader.h"
#include <util/system/maxlen.h>
#include <util/datetime/parser.h>
#include <time.h>
struct THttpHeaderParser {
static constexpr int ErrFirstlineTypeMismatch = -3;
static constexpr int ErrHeader = -2;
static constexpr int Err = -1;
static constexpr int Final = 0;
static constexpr int NeedMore = 1;
static constexpr int Accepted = 2;
int Execute(const void* inBuf, size_t len) {
return execute((unsigned char*)inBuf, (int)len);
}
int Execute(TStringBuf str) {
return Execute(str.data(), str.size());
}
int Init(THttpHeader* h) {
int ret = Init((THttpBaseHeader*)(h));
hd = h;
hd->Init();
hreflangpos = hd->hreflangs;
hreflangspace = HREFLANG_MAX;
return ret;
}
int Init(THttpAuthHeader* h) {
int ret = Init((THttpHeader*)(h));
auth_hd = h;
return ret;
}
int Init(THttpRequestHeader* h) {
int ret = Init((THttpBaseHeader*)(h));
request_hd = h;
request_hd->Init();
return ret;
}
THttpHeader* hd;
long I;
int Dc;
TDateTimeFieldsDeprecated DateTimeFields;
char buf[FETCHER_URL_MAX];
size_t buflen;
char* lastchar;
const unsigned char* langstart;
size_t langlen;
char* hreflangpos;
size_t hreflangspace;
bool AcceptingXRobots;
THttpAuthHeader* auth_hd;
THttpRequestHeader* request_hd;
private:
THttpBaseHeader* base_hd;
int cs;
private:
int Init(THttpBaseHeader* header) {
base_hd = header;
auth_hd = nullptr;
request_hd = nullptr;
hd = nullptr;
init();
return 0;
}
int execute(unsigned char* inBuf, int len);
void init();
};
struct THttpChunkParser {
int Execute(const void* inBuf, int len) {
return execute((unsigned char*)inBuf, len);
}
int Init() {
init();
return 0;
}
int chunk_length;
char* lastchar;
long I;
int Dc;
i64 cnt64;
private:
int cs;
int execute(unsigned char* inBuf, int len);
void init();
};
|