#include <stdio.h>
#include <curl/curl.h>

char error_buffer[CURL_ERROR_SIZE]={0};

int main(int argc, char *argv[])
{
    CURL *curl = curl_easy_init();
    if(curl)
    {
        struct curl_httppost* firstform = NULL;
        struct curl_httppost* lastform = NULL;        
        // выполнений действий с библиотекой
        printf("All initialized.\n");
        if(curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer))
        {
            printf("Cannot set error buffer.\n");
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_easy_setopt(curl, CURLOPT_URL, "http://bin.mypage.sk/bin.php"))
        {
            printf("Cannot set URL: %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_easy_setopt(curl, CURLOPT_PROXY, "localhost:3128"))
        {
            printf("Cannot set proxy: %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
            }
        if(curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP))
        {
            printf("Cannot set proxytype: %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }

        // set form option
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "MAX_FILE_SIZE",
            CURLFORM_COPYCONTENTS, "10000000",
            CURLFORM_END))
        {
            printf("Cannot set option \"MAX_FILE_SIZE\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "action",
            CURLFORM_COPYCONTENTS, "upload",
            CURLFORM_END))
        {
            printf("Cannot set option \"action\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "username",
            CURLFORM_COPYCONTENTS, "my_program",
            CURLFORM_END))
        {
            printf("Cannot set option \"username\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "password",
            CURLFORM_COPYCONTENTS, "",
            CURLFORM_END))
        {
            printf("Cannot set option \"password\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "expire",
            CURLFORM_COPYCONTENTS, "7",
            CURLFORM_END))
        {
            printf("Cannot set option \"expire\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "note",
            CURLFORM_COPYCONTENTS, "Test",
            CURLFORM_END))
        {
            printf("Cannot set option \"note\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_formadd(&firstform, &lastform,
            CURLFORM_COPYNAME, "userfile",
            CURLFORM_FILE, argv[1],
            CURLFORM_END))
        {
            printf("Cannot set option \"userfile\": %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }
        if(curl_easy_setopt(curl, CURLOPT_HTTPPOST, firstform))
        {
            printf("Cannot set proxytype: %s.\n", error_buffer);
            curl_easy_cleanup(curl);
            return 1;
        }

        printf("All prepared. Starting upload.\n");
        if(curl_easy_perform(curl) == CURLE_OK)
        {
        printf("File uploaded.\n");
        }
        else
        {
        printf("Error when upload file: %s.\n", error_buffer);
        }
        }
        else
        {
        printf("Error with initialization licurl.\n");
        return 1;
    }
    curl_easy_cleanup(curl);
    return 0; // выходим из программы
}


