예제 #1
0
// Process Get Request
int processGetTask(EJHttpRequest *request, write_callback callback, void *stream, int32_t *responseCode) {
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream)
            && curl.setOption(CURLOPT_FOLLOWLOCATION, true)
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
예제 #2
0
//Process Get Request
static int processGetTask(HttpRequest *request, write_callback callback, void *stream, long *responseCode, write_callback headerCallback, void *headerStream, char *errorBuffer)
{
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream, headerCallback, headerStream, errorBuffer)
            && curl.setOption(CURLOPT_FOLLOWLOCATION, true)
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
예제 #3
0
//Process DELETE Request
static int processDeleteTask(CCHttpRequest *request, write_callback callback, void *stream, int32_t *responseCode, write_callback headerCallback, void *headerStream)
{
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream, headerCallback, headerStream)
            && curl.setOption(CURLOPT_CUSTOMREQUEST, "DELETE")
            && curl.setOption(CURLOPT_FOLLOWLOCATION, true)
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
예제 #4
0
//Process DELETE Request
static int processDeleteTask(HttpClient* client, HttpRequest* request, write_callback callback, void* stream, long* responseCode, write_callback headerCallback, void* headerStream, char* errorBuffer)
{
    CURLRaii curl;
    bool ok = curl.init(client, request, callback, stream, headerCallback, headerStream, errorBuffer)
            && curl.setOption(CURLOPT_CUSTOMREQUEST, "DELETE")
            && curl.setOption(CURLOPT_FOLLOWLOCATION, true)
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
    static int processPostFileDataTask(App42HttpRequest *request, write_callback callback, void *stream, long  *responseCode, write_callback headerCallback, void *headerStream)
    {
        struct curl_httppost *formpost = NULL;
        struct curl_httppost *lastptr = NULL;
        
        std::string fileName = request->fileName();
        std::string requestName = request->requestName();
        std::map<std::string,std::string> postParams = request->postParams();

        printf("\nrequestName=%s\n",requestName.c_str());
        printf("\nfileName=%s\n",fileName.c_str());
        
        curl_formadd(&formpost,
                     &lastptr,
                     CURLFORM_COPYNAME, requestName.c_str(),
                     CURLFORM_BUFFER, fileName.c_str(),
                     CURLFORM_BUFFERPTR, request->getFileData(),
                     CURLFORM_BUFFERLENGTH, (long)request->getFileDataSize(),
                     CURLFORM_CONTENTTYPE,"multipart/form-data",
                     CURLFORM_END);
        
        /* Fill in the filename field */
        curl_formadd(&formpost,
                     &lastptr,
                     CURLFORM_COPYNAME, "filename",
                     CURLFORM_COPYCONTENTS, fileName.c_str(),
                     CURLFORM_END);
        
        
        std::map<std::string,std::string>::iterator it;
        
        for(it=postParams.begin(); it!=postParams.end(); ++it)
        {
            curl_formadd(&formpost,
                         &lastptr,
                         CURLFORM_PTRNAME, it->first.c_str(),
                         CURLFORM_PTRCONTENTS, it->second.c_str(),
                         CURLFORM_END);
            
        }
        
        
        CURLRaii curl;
        bool ok = curl.init(request, callback, stream, headerCallback, headerStream)
        && curl.setOption(CURLOPT_POST, 1)
        && curl.setOption(CURLOPT_HTTPPOST, formpost)
        && curl.perform(responseCode);
        
        curl_formfree(formpost);
        return ok ? 0 : 1;
    }
예제 #6
0
// Process PUT Request
int processPutTask(EJHttpRequest *request, write_callback callback, void *stream, int32_t *responseCode) {
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream)
            && curl.setOption(CURLOPT_CUSTOMREQUEST, "PUT")
            && curl.setOption(CURLOPT_POSTFIELDS, request->getRequestData())
            && curl.setOption(CURLOPT_POSTFIELDSIZE, request->getRequestDataSize())
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
예제 #7
0
//Process POST Request
static int processPostTask(CCHttpRequest *request, write_callback callback, void *stream, int32_t *responseCode, write_callback headerCallback, void *headerStream)
{
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream, headerCallback, headerStream)
            && curl.setOption(CURLOPT_POST, 1)
            && curl.setOption(CURLOPT_POSTFIELDS, request->getRequestData())
            && curl.setOption(CURLOPT_POSTFIELDSIZE, request->getRequestDataSize())
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
예제 #8
0
//Process PUT Request
static int processPutTask(HttpRequest *request, write_callback callback, void *stream, long *responseCode, write_callback headerCallback, void *headerStream, char *errorBuffer)
{
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream, headerCallback, headerStream, errorBuffer)
            && curl.setOption(CURLOPT_CUSTOMREQUEST, "PUT")
            && curl.setOption(CURLOPT_POSTFIELDS, request->getRequestData())
            && curl.setOption(CURLOPT_POSTFIELDSIZE, request->getRequestDataSize())
            && curl.perform(responseCode);
    return ok ? 0 : 1;
}
예제 #9
0
//Process PostFile Request
static int processPostFileTask(HttpRequest *request, write_callback callback, void *stream, long *responseCode, write_callback headerCallback, void *headerStream, char *errorBuffer)
{
    struct curl_httppost *post1;
    struct curl_httppost *postend;
    
    post1 = NULL;
    postend = NULL;
    curl_formadd(&post1, &postend,
                 CURLFORM_COPYNAME, "files[]",
                 CURLFORM_FILE, request->getFilePath().c_str(),
                 CURLFORM_CONTENTTYPE, "application/octet-stream",
                 CURLFORM_END);
    CURLRaii curl;
    bool ok = curl.init(request, callback, stream, headerCallback, headerStream, errorBuffer)
    && curl.setOption(CURLOPT_NOPROGRESS, 1L)
    && curl.setOption(CURLOPT_MAXREDIRS, 50L)
    && curl.setOption(CURLOPT_TCP_KEEPALIVE, 1L)
    && curl.setOption(CURLOPT_HTTPPOST, post1)
    && curl.perform(responseCode);
    return ok ? 0 : 1;
}