/** This example comes from CouchDB Wiki 
 * http://wiki.apache.org/couchdb/Getting_started_with_C */

#include <stdio.h>
#include <curl/curl.h>
#include <curl/easy.h>
#include <sys/stat.h>

CURL *curl;
FILE *fp;
struct stat file_info;

/* the name of the file containing json data */
const char *const file_name = "data_source";

int main(int argc, char** args){
printf("%s", file_name);
curl_global_init(CURL_GLOBAL_ALL);

stat(file_name, &file_info);
fp = fopen(file_name, "r");

curl = curl_easy_init();
if(curl) {
    /* uses HTTP PUT */
    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);

    /* URL */
    curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:5984/test_db/test_doc");

    /* input file */
    curl_easy_setopt(curl, CURLOPT_READDATA, fp);

    /* file size */
    curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)file_info.st_size);

    /* data type */
    struct curl_slist *slist = NULL;
    slist = curl_slist_append(slist, "Content-Type: application/json");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);

    /* makes the request */ 
    curl_easy_perform(curl);

    curl_slist_free_all(slist);

    curl_easy_cleanup(curl);

}

fclose(fp);

curl_global_cleanup();

}
