/*---------------------------------------------------------------------- | PLT_HttpHelper::GetContentRange +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::GetContentRange(const NPT_HttpResponse& response, NPT_Position& start, NPT_Position& end, NPT_LargeSize& length) { const NPT_String* range = response.GetHeaders().GetHeaderValue(NPT_HTTP_HEADER_CONTENT_RANGE); NPT_CHECK_POINTER(range); start = (NPT_Position)-1; end = (NPT_Position)-1; length = (NPT_LargeSize)-1; char s[32], e[32], l[32]; s[0] = '\0'; e[0] = '\0'; l[0] = '\0'; int ret = sscanf(*range, "bytes %31[^-]-%31s[^/]/%31s", s, e, l); if (ret < 3) { return NPT_FAILURE; } if (s[0] != '\0') { NPT_ParseInteger64(s, start); } if (e[0] != '\0') { NPT_ParseInteger64(e, end); } if (l[0] != '\0') { NPT_ParseInteger64(l, length); } return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | PLT_HttpHelper::GetRange +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::GetRange(const NPT_HttpRequest& request, NPT_Position& start, NPT_Position& end) { start = (NPT_Position)-1; end = (NPT_Position)-1; const NPT_String* range = request.GetHeaders().GetHeaderValue(NPT_HTTP_HEADER_RANGE); NPT_CHECK_POINTER(range); char s[32], e[32]; s[0] = '\0'; e[0] = '\0'; int ret = sscanf(*range, "bytes=%31[^-]-%31s", s, e); if (ret < 1) { return NPT_FAILURE; } if (s[0] != '\0') { NPT_ParseInteger64(s, start); } if (e[0] != '\0') { NPT_ParseInteger64(e, end); } return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | PLT_HttpHelper::GetContentLength +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::GetContentLength(NPT_HttpMessage& message, NPT_LargeSize& len) { len = 0; const NPT_String* val = message.GetHeaders().GetHeaderValue(NPT_HTTP_HEADER_CONTENT_LENGTH); NPT_CHECK_POINTER(val); return val->ToInteger(len); }
/*---------------------------------------------------------------------- | PLT_HttpHelper::GetHost +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::GetHost(const NPT_HttpRequest& request, NPT_String& value) { value = ""; const NPT_String* val = request.GetHeaders().GetHeaderValue(NPT_HTTP_HEADER_HOST); NPT_CHECK_POINTER(val); value = *val; return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | PLT_HttpHelper::GetContentType +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::GetContentType(NPT_HttpMessage& message, NPT_String& type) { type = ""; const NPT_String* val = message.GetHeaders().GetHeaderValue(NPT_HTTP_HEADER_CONTENT_TYPE); NPT_CHECK_POINTER(val); type = *val; return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | NPT_HttpResponse::ToLog +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::ToLog(NPT_LoggerReference logger, int level, NPT_HttpResponse* response) { NPT_COMPILER_UNUSED(logger); NPT_COMPILER_UNUSED(level); NPT_CHECK_POINTER(response); NPT_StringOutputStreamReference stream(new NPT_StringOutputStream); response->GetHeaders().GetHeaders().Apply(NPT_HttpHeaderPrinter((NPT_OutputStreamReference&)stream)); NPT_LOG_L4(logger, level, "\n%s %d %s\n%s", (const char*)response->GetProtocol(), response->GetStatusCode(), (const char*)response->GetReasonPhrase(), (const char*)stream->GetString()); return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | PLT_HttpHelper::ToLog +---------------------------------------------------------------------*/ NPT_Result PLT_HttpHelper::ToLog(NPT_LoggerReference logger, int level, NPT_HttpRequest* request) { NPT_COMPILER_UNUSED(logger); NPT_COMPILER_UNUSED(level); NPT_CHECK_POINTER(request); NPT_StringOutputStreamReference stream(new NPT_StringOutputStream); request->GetHeaders().GetHeaders().Apply(NPT_HttpHeaderPrinter((NPT_OutputStreamReference&)stream)); NPT_LOG_L4(logger, level, "\n%s %s %s\n%s", (const char*)request->GetMethod(), (const char*)request->GetUrl().ToRequestString(true), (const char*)request->GetProtocol(), (const char*)stream->GetString()); return NPT_SUCCESS; }