当前位置: 首页>>代码示例>>C++>>正文


C++ CCgiContext类代码示例

本文整理汇总了C++中CCgiContext的典型用法代码示例。如果您正苦于以下问题:C++ CCgiContext类的具体用法?C++ CCgiContext怎么用?C++ CCgiContext使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了CCgiContext类的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ProcessRequest

int CSoapServerApplication::ProcessRequest(CCgiContext& ctx)
{
    const CCgiRequest& request  = ctx.GetRequest();
    CCgiResponse&      response = ctx.GetResponse();
    response.SetContentType("text/xml");
    if (!x_ProcessWsdlRequest(response, request)) {
        x_ProcessSoapRequest(response, request);
    }
    response.Flush();
    return 0;
}
开发者ID:,项目名称:,代码行数:11,代码来源:

示例2: ProcessRequest

int CNetCacheBlobFetchApp::ProcessRequest(CCgiContext& ctx)
{
    const CCgiRequest& request = ctx.GetRequest();
    CCgiResponse&      reply   = ctx.GetResponse();

    bool is_found;

    string key = request.GetEntry("key", &is_found);
    if (key.empty() || !is_found) {
        NCBI_THROW(CArgException, eNoArg, "CGI entry 'key' is missing");
    }

    string fmt = request.GetEntry("fmt", &is_found);
    if (fmt.empty() || !is_found)
        fmt = "image/png";

    string filename(request.GetEntry("filename", &is_found));
    if (is_found && !filename.empty()) {
        string is_inline(request.GetEntry("inline", &is_found));

        reply.SetHeaderValue("Content-Disposition",
                (is_found && NStr::StringToBool(is_inline) ?
                        "inline; filename=" : "attachment; filename=") +
                filename);
    }

    reply.SetContentType(fmt);

    reply.WriteHeader();

    CNetStorageObject netstorage_object(m_NetStorage.Open(key));

    char buffer[NETSTORAGE_IO_BUFFER_SIZE];

    size_t total_bytes_written = 0;

    while (!netstorage_object.Eof()) {
        size_t bytes_read = netstorage_object.Read(buffer, sizeof(buffer));

        reply.out().write(buffer, bytes_read);
        total_bytes_written += bytes_read;

        if (bytes_read < sizeof(buffer))
            break;
    }

    netstorage_object.Close();

    LOG_POST(Info << "retrieved data: " << total_bytes_written << " bytes");

    return 0;
}
开发者ID:DmitrySigaev,项目名称:ncbi,代码行数:52,代码来源:ncfetch.cpp

示例3: Execute

void CSeqBasicCommand::Execute( CCgiContext& ctx )
{
    const CNcbiRegistry& reg = ctx.GetConfig();
    
    /* load in the html template file */
    string baseFile = reg.Get( "filesystem", "HtmlBaseFile" );
    auto_ptr<CHTMLPage> page( new CHTMLPage( NcbiEmptyString, baseFile ) );
    
    /* set up to replace <@[email protected]> in template file with html returned
       from CreateView */
    page->AddTagMap( "QUICKSEARCH", CreateQuickSearch(ctx) );
    page->AddTagMap( "VIEW", CreateView( ctx ) );
    /* actual page output */
    ctx.GetResponse().WriteHeader();
    page->Print(ctx.GetResponse().out(), CNCBINode::eHTML );
}
开发者ID:iandonaldson,项目名称:slri,代码行数:16,代码来源:seqdata_cmd.cpp

示例4: Execute

void CHelloCommand::Execute( CCgiContext& ctx )
{
    const CNcbiRegistry& reg = ctx.GetConfig();
    
    // load in the html template file
    string baseFile = reg.Get( "filesystem", "HtmlBaseFile" );
	auto_ptr<CHTMLPage> page( new CHTMLPage( NcbiEmptyString, baseFile ) );
    
    // set up to replace <@[email protected]> in template file with html returned
    // from CreateView
	page->AddTagMap( "VIEW", CreateView( ctx ) );

	// actual page output
    ctx.GetResponse().WriteHeader();
    page->Print(ctx.GetResponse().out(), CNCBINode::eHTML );
}
开发者ID:svn2github,项目名称:ncbi_tk,代码行数:16,代码来源:hellocmd.cpp

示例5: HandleRequest

void CNcbiResource::HandleRequest( CCgiContext& ctx )
{
    bool defCom = false;
	
	try {
	    TCmdList::iterator it = find_if( m_cmd.begin(), m_cmd.end(), 
										 PRequested<CNcbiCommand>( ctx ) );
    
		unique_ptr<CNcbiCommand> cmd( ( it == m_cmd.end() ) 
									? ( defCom = true, GetDefaultCommand() )
									: (*it)->Clone() );
		cmd->Execute( ctx );
#if !defined(NCBI_COMPILER_GCC)  ||  NCBI_COMPILER_VERSION >= 300  ||  defined(_IO_THROW)
    } catch( IOS_BASE::failure& /* e */  ) {
        throw;
#endif
    } catch( std::exception& e ) {
	    _TRACE( e.what() );
		ctx.PutMsg( string("Error handling request: ") + e.what() );
		if( !defCom ) {
		  unique_ptr<CNcbiCommand> cmd( GetDefaultCommand() );
		  cmd->Execute( ctx );
		}
    }
}
开发者ID:svn2github,项目名称:ncbi_tk,代码行数:25,代码来源:ncbires.cpp

示例6: IsRequested

bool CNcbiCommand::IsRequested( const CCgiContext& ctx ) const
{ 
    const string value = GetName();
  
    TCgiEntries& entries =
        const_cast<TCgiEntries&>(ctx.GetRequest().GetEntries());

    pair<TCgiEntriesI,TCgiEntriesI> p = entries.equal_range( GetEntry() );
    for ( TCgiEntriesI itEntr = p.first; itEntr != p.second; ++itEntr ) {
        if( AStrEquiv( value, itEntr->second, PNocase() ) ) {
            return true;
        } // if
    } // for

    // if there is no 'cmd' entry
    // check the same for IMAGE value
    p = entries.equal_range( NcbiEmptyString );
    for ( TCgiEntriesI iti = p.first; iti != p.second; ++iti ) {
        if( AStrEquiv( value, iti->second, PNocase() ) ) {
            return true;
        } // if
    }
    
    return false;
}
开发者ID:svn2github,项目名称:ncbi_tk,代码行数:25,代码来源:ncbires.cpp

示例7: ProcessRequest

int CVAApp::ProcessRequest(CCgiContext& ctx)
{

    // execute request
    ctx.GetResource().HandleRequest(ctx);
    return(0);
}
开发者ID:hsptools,项目名称:hsp-wrap,代码行数:7,代码来源:cVAapp.cpp

示例8: GetQueryStringValue

/* returns the string 'value' portion of the 'key=value' pairing 
 * in the querystring. */
inline string CSeqCommand::GetQueryStringValue(CCgiContext& ctx, const string &key)
{
   TCgiEntries& entries = const_cast<TCgiEntries&> (ctx.GetRequest().GetEntries());
   pair<TCgiEntriesI, TCgiEntriesI> Map = entries.equal_range(key);
   string value = kEmptyStr; 
   for(TCgiEntriesI i = Map.first; i != Map.second; ++i)
   {
      value = i->second;
   }
   return value;
}
开发者ID:iandonaldson,项目名称:slri,代码行数:13,代码来源:seqdata_cmd.cpp

示例9: Execute

void CNcbiRelocateCommand::Execute( CCgiContext& ctx )
{
    try {
        string url = GetLink(ctx);
        _TRACE("CNcbiRelocateCommand::Execute changing location to:" << url);
        // Theoretically, the status should be set, but...
        // Commented temporarily to avoid the redirection to go out of
        // NCBI and confuse some not-so-smart clients.
        // It can be restored later when (and if) the NCBI internal HTTP
        // servers are tuned to intercept the redirections and resolve these
        // internally.
        //
        //        ctx.GetResponse().SetStatus(301, "Moved");
        ctx.GetResponse().SetHeaderValue("Location", url);
        ctx.GetResponse().WriteHeader();
    }
    catch (exception&) {
        ERR_POST_X(1, "CNcbiRelocateCommand::Execute error getting url");
        throw;
    }
}
开发者ID:svn2github,项目名称:ncbi_tk,代码行数:21,代码来源:ncbires.cpp

示例10: x_GetCGIContextParams

void CBlastHitMatrixCGIApplication::x_GetCGIContextParams(CCgiContext &ctx)
{
    const CCgiRequest& request  = ctx.GetRequest();
    const TCgiEntries& entries = request.GetEntries();

    m_RID = s_GetRequestParam(entries,"rid");

    string paramVal = s_GetRequestParam(entries,"width");    
    
    m_Width = !paramVal.empty() ? NStr::StringToInt(paramVal) : 800;
    
    paramVal = s_GetRequestParam(entries,"height");    
    
    m_Height = !paramVal.empty() ? NStr::StringToInt(paramVal) : 600;
      
    //Indicates that image should output in the file
    m_File = s_GetRequestParam(entries,"file");        

    m_Thumbnail = s_GetRequestParam(entries,"thumbnail");    
}
开发者ID:jackgopack4,项目名称:pico-blast,代码行数:20,代码来源:cgi_hit_matrix.cpp

示例11: x_GetSeqAnnot

void CBlastHitMatrixCGIApplication::x_GetSeqAnnot(CCgiContext& ctx)
{
        const CNcbiRegistry & reg = ctx.GetConfig();
        string blastURL = reg.Get("NetParams", "BlastURL");
        string url = (string)blastURL + "?CMD=Get&RID=" + m_RID + "&FORMAT_TYPE=ASN.1&FORMAT_OBJECT=Alignment";
        
        SConnNetInfo* net_info = ConnNetInfo_Create(NULL);
        // create HTTP connection
        CConn_HttpStream inHttp(url,net_info);   

        try {
            m_Annot.Reset(new CSeq_annot);
            auto_ptr<CObjectIStream> is
                    (CObjectIStream::Open(eSerial_AsnText, inHttp));
            *is >> *m_Annot;                                    
        }
         catch (CException& e) {
              m_Annot.Reset();              
              NCBI_THROW(CBlastHitMatrixCGIException, eInvalidSeqAnnot, "Exception reading SeqAnnot via url " + url + ", exception message: " + e.GetMsg());              
        }               
}
开发者ID:jackgopack4,项目名称:pico-blast,代码行数:21,代码来源:cgi_hit_matrix.cpp

示例12: ProcessRequest

int CBlastHitMatrixCGIApplication::ProcessRequest(CCgiContext &ctx)
{
    // retrieve our CGI rendering params
    x_GetCGIContextParams(ctx);            
    x_InitAppData(ctx);        
        
    bool success = true;       
    if(m_BlastHitMatrix->IsFileOut()) {
        success = m_BlastHitMatrix->WriteToFile();
    }
    else {        
        string encoding("image/png");
        CCgiResponse& response = ctx.GetResponse();
        response.SetContentType(encoding);
        response.WriteHeader();        
        success = m_BlastHitMatrix->Display(response.out());
    }
    if(!success) {
        NCBI_THROW(CBlastHitMatrixCGIException, eImageRenderError, "Exception occured, exception message: " + m_BlastHitMatrix->GetErrorMessage()); 
    }
    return 0;
}
开发者ID:jackgopack4,项目名称:pico-blast,代码行数:22,代码来源:cgi_hit_matrix.cpp

示例13: ProcessRequest

int CTestMultipartCgiApplication::ProcessRequest(CCgiContext& ctx)
{
    const CArgs& args = GetArgs();
    CCgiResponse& response = ctx.GetResponse();
    string mode = args["mode"].AsString();

    if (mode == "mixed") {
        response.SetMultipartMode(CCgiResponse::eMultipart_mixed);
    } else if (mode == "related") {
        response.SetMultipartMode(CCgiResponse::eMultipart_related);
    } else if (mode == "replace") {
        response.SetMultipartMode(CCgiResponse::eMultipart_replace);
    }

    response.WriteHeader();

    response.out() << "main document" << endl;

    if (mode == "mixed") {
        response.BeginPart("attachment.foo", "application/x-foo-bar");
        response.out() << "attachment" << endl;
    } else if (mode == "related") {
        response.BeginPart("more-content.foo", "application/x-foo-bar");
        response.out() << "more content" << endl;
    } else if (mode == "replace") {
        response.EndPart();
        SleepSec(1);
        response.BeginPart(kEmptyStr, "text/html");
        response.out() << "updated document" << endl;
    }
    if (mode != "none") {
        response.EndLastPart();
    }

    return 0;
}
开发者ID:svn2github,项目名称:ncbi_tk,代码行数:36,代码来源:test_multipart_cgi.cpp

示例14: Execute

void CVACommand :: Execute(CCgiContext& ctx)
{

	CCgiRequest&  req = ctx.GetRequest();
   	CCgiResponse& resp = ctx.GetResponse();
	
	string mst = req.GetEntry("master").GetValue();
	if ( mst.empty() ) {
	
		PrtMes::PrintErrorHeader(&resp, "VastAlign", 1);
      		PrtMes::PrintMsgWithTail(&resp,
            		"<h3>No master privided. </h3>n");
 	}

	if ( 4 == mst.size() ) mst += ' ';
	if ( 6 <= mst.size() ) {
		mst[4] = mst[5];
		if ( 6 == mst.size() ) mst[5] = '\0';
	}
	if ( 'x' == mst[4] ) mst[4] = ' ';
	unsigned i;
	for (i=0; i< mst.size(); i++) mst[i]  = toupper(mst[i]);

	string slv = req.GetEntry("slave").GetValue();
	if ( slv.empty() ) {

	     PrtMes::PrintErrorHeader(&resp, "VastAlign", 1);
	     PrtMes::PrintMsgWithTail(&resp, "<h3>No slave privided. </h3>n");
        }

	if ( 4 == slv.size() ) slv += ' ';
	if ( 6 <= slv.size() ) {
		slv[4] = slv[5];
		if ( 6 == slv.size()) slv[5] = '\0';
	}
	
        if ( 'x' == slv[4] ) slv[4] = ' ';
	for (i=0; i< slv.size(); i++) slv[i] = toupper(slv[i]);

	
	string value = req.GetEntry("from").GetValue();
	unsigned from = 0;
	if ( !value.empty() ) from = atoi(value.c_str());

	value = req.GetEntry("to").GetValue();
	unsigned to = 0;
	if ( !value.empty() ) to = atoi(value.c_str());

	VastPageDataPtr vpp = NewDataType <VastPageData> (1);
  	unsigned row_count =
      		constructTopNBestAlignedVastRows(vpp,1, (char *)mst.c_str(),
					(char *)slv.c_str(), from, to, 0, 0,1);

  	if (!row_count) vpp[0].IpdpLen = 0;
  	BiostrucAnnotSetPtr pbsa = constructBASPFromVastPagePtr(vpp, 1);

{AsnIoPtr aip;
aip = AsnIoOpen("pbsa.out", "w");
BiostrucAnnotSetAsnWrite(pbsa, aip, NULL);
AsnIoClose(aip);
}

	auto_ptr <CObjectOStream> oos
	      ( CObjectOStream::Open( eSerial_AsnBinary, resp.out() ) ); //Cn3D
	CObjectOStream::AsnIo aip(*oos, "Biostruc-annot-set");

	//  printf("Content-type: chemical/ncbi-asn1-binary\n\n"); launch Cn3D 
	//  printf("Content-type: text/html\n\n"); for test

/*
   auto_ptr <CObjectOStream> oos
              ( CObjectOStream::Open( eSerial_AsnText, resp.out() ) );
   aip = AsnIoOpen("pbsa.out", "w");  
*/

	resp.SetContentType("application/octet-stream"); 	// Cn3D
	resp.WriteHeader();
  	BiostrucAnnotSetAsnWrite(pbsa, aip, NULL);
	aip.End();

  	BiostrucAnnotSetFree(pbsa);
	delete [] vpp;

  	return;
}
开发者ID:hsptools,项目名称:hsp-wrap,代码行数:85,代码来源:cVAcmd.cpp


注:本文中的CCgiContext类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。