
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <assert.h>
#include "base64.h"

#define file_location "/home/ravi/Desktop/single_data.xml"

struct string {
  char *ptr;
  size_t len;
};

void init_string(struct string *s) {
  s->len = 0;
  s->ptr = (char *)malloc(s->len+1);
  if (s->ptr == NULL) {
    fprintf(stderr, "malloc() failed\n");
    exit(1);
  }
  s->ptr[0] = '\0';
}

size_t writefunc(void *ptr, size_t size, size_t nmemb, struct string *s)
{
  size_t new_len = s->len + size*nmemb;
  s->ptr =(char *) realloc(s->ptr, new_len+1);
  if (s->ptr == NULL) {
    fprintf(stderr, "realloc() failed\n");
    exit(EXIT_FAILURE);
  }
  memcpy(s->ptr+s->len, ptr, size*nmemb);

  //sprintf (s->ptr+s->len,"New header:\n%s\n",(char *)ptr);


  s->ptr[new_len] = '\0';
  s->len = new_len;

  return size*nmemb;
}


int main(int argc, char *argv[])
{
FILE *f;
	size_t len, elen;
	unsigned char *buf, *e;
	
	CURL *curl;
    CURLcode res;
    
      char *ptr=NULL;
	  int i=0;
     struct string s;
     
    init_string(&s);
   
    char *url = "https://ice.connect2.me/Ice.svc/PostFeedData?apikey=z7s1iZ1014kWrrVfukW1RolO39cEwg&feedid=4ZbVetqqRHhCQXLsXR08OKg@ZSE5qT4pc3Xz3uNgURs=";
   
	curl = curl_easy_init();
	curl_global_init(CURL_GLOBAL_ALL);
	
	f = fopen(file_location, "r");
	if (f == NULL)
		return -1;
	fseek(f, 0, SEEK_END);
	len = ftell(f);
	fseek(f, 0, SEEK_SET);
	buf = malloc(len);
	
	if (buf == NULL) {
		fclose(f);
		return -1;
	}
	fread(buf, 1, len, f);
	fclose(f);

	e = base64_encode(buf, len, &elen);		
	if (e == NULL)
		return -2;
		
	//printf("encoded data= %s",e);
	s.ptr = e;
	s.len = (long)strlen(e);
	
	
	
	//printf("len= %ld",pooh.sizeleft);
	if(curl)
	  {		
		
		struct curl_slist *slist = NULL;
		slist = curl_slist_append(slist, "Accept: application/json");
		slist = curl_slist_append(slist, "Content-Type: application/json");
		//	curl_easy_setopt(curl, CURLOPT_HTTPHEADER,slist );
	
		curl_easy_setopt(curl, CURLOPT_HEADER, 1);	
		curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, writefunc);
		curl_easy_setopt(curl, CURLOPT_HEADERDATA,&s );
	
		curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
		curl_easy_setopt(curl, CURLOPT_URL, url);
		//curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS,"");
		//curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE,strlen(e));
	
	printf("%s\n", s.ptr);	
	   res = curl_easy_perform(curl);
	    if(res != CURLE_OK)
				fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
		
		
		
		free(s.ptr);	
		//free(e);
	    curl_easy_cleanup(curl);
	     curl_global_cleanup();
	    curl_slist_free_all(slist);
	}

	return 0;
}



