Пример #1
0
CRef<epost::CEPostResult> CEPost_Request::GetEPostResult(void)
{
    CObjectIStream* is = GetObjectIStream();
    _ASSERT(is);
    CRef<epost::CEPostResult> res(new epost::CEPostResult);
    *is >> *res;
    Disconnect();
    // Save context data
    if ( res->IsSetHistory() ) {
        GetConnContext()->SetWebEnv(res->GetHistory().GetWebEnv());
        GetConnContext()->SetQueryKey(res->GetHistory().GetQueryKey());
    }
    return res;
}
Пример #2
0
void CEUtils_Request::Connect(void)
{
    string url = GetBaseURL() + GetScriptName();
    string body = GetQueryString();
    STimeout timeout_value;
    const STimeout* timeout = 
        g_CTimeoutToSTimeout(GetConnContext()->GetTimeout(), timeout_value);

    if ( m_Method == eHttp_Post ) {
        m_Stream.reset(new CConn_HttpStream(
            url,
            NULL,
            "Content-type: application/x-www-form-urlencoded",
            NULL, NULL, NULL, NULL,
            fHTTP_AutoReconnect,
            timeout));
        *m_Stream << body;
    }
    else {
        m_Stream.reset(new CConn_HttpStream(
            url + "?" + body,
            fHTTP_AutoReconnect,
            timeout));
    }
}
Пример #3
0
string CEUtils_Request::GetQueryString(void) const
{
    string args;
    if ( !m_Database.empty() ) {
        args = "db=" + m_Database;
    }
    const string& webenv = GetConnContext()->GetWebEnv();
    if ( !webenv.empty() ) {
        if ( !args.empty() ) {
            args += "&";
        }
        args += "WebEnv=" +
            NStr::URLEncode(webenv, NStr::eUrlEnc_ProcessMarkChars);
    }
    string qk = GetQueryKey();
    if ( !qk.empty() ) {
        if ( !args.empty() ) {
            args += "&";
        }
        args += "query_key=" + qk;
    }
    const string& tool = GetConnContext()->GetTool();
    if ( !tool.empty() ) {
        if ( !args.empty() ) {
            args += "&";
        }
        args += "tool=" +
            NStr::URLEncode(tool, NStr::eUrlEnc_ProcessMarkChars);
    }
    const string& email = GetConnContext()->GetEmail();
    if ( !email.empty() ) {
        if ( !args.empty() ) {
            args += "&";
        }
        args += "email=" +
            NStr::URLEncode(email, NStr::eUrlEnc_ProcessMarkChars);
    }
    ITERATE(TRequestArgs, it, m_Args) {
        if ( !args.empty() ) {
            args += "&";
        }
        args += it->first + "=" +
            NStr::URLEncode(it->second, NStr::eUrlEnc_ProcessMarkChars);
    }
    return args;
}
Пример #4
0
CRef<esearch::CESearchResult> CESearch_Request::GetESearchResult(void)
{
    CObjectIStream* is = GetObjectIStream();
    _ASSERT(is);
    CRef<esearch::CESearchResult> res(new esearch::CESearchResult);
    *is >> *res;
    Disconnect();
    // Save context data
    bool have_content = res->GetData().IsInfo()  &&
        res->GetData().GetInfo().IsSetContent();
    if ( have_content ) {
        if ( res->GetData().GetInfo().GetContent().IsSetWebEnv() ) {
            GetConnContext()->SetWebEnv(
                res->GetData().GetInfo().GetContent().GetWebEnv());
        }
        if ( res->GetData().GetInfo().GetContent().IsSetQueryKey() ) {
            GetConnContext()->SetQueryKey(
                res->GetData().GetInfo().GetContent().GetQueryKey());
        }
    }
    return res;
}
Пример #5
0
const string& CEUtils_Request::GetQueryKey(void) const
{
    return m_QueryKey.empty() ? GetConnContext()->GetQueryKey() : m_QueryKey;
}