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

CURLcode url_checker(char *url, char **new_url, void *data)
{
    printf("--- url checker ---\n");
    printf("OLD URL: \"%s\"\n", url);
    printf("   DATA: %p\n", data);
    if (strcmp(url, "http://localhost:8080/") == 0) {
        //*new_url = strdup("http://tiger.ank-sia.com");
        *new_url = strdup("http://tiger.ank-sia.com");
    } else if (strcmp(url, "http://www.ank-sia.com/") == 0) {
        *new_url = strdup("http://www.ank-sia.com/~yarcat/FordIsOver");
    } else if (strcmp(url, "http://www.ank-sia.com/~yarcat/FordIsOver/") == 0) {
        *new_url = strdup("http://www.google.com/");
    } else {
        *new_url = url;
    }
    if (*new_url == NULL) {
        return CURLE_OUT_OF_MEMORY;;
    }
    printf("NEW URL: \"%s\"\n", *new_url);
    return CURLE_OK;
}

CURLcode cookie_checker(char *h, char **new_h, void *data)
{
    printf("--- cookie checker ---\n");
    printf("OLD HEADER: \"%s\"\n", h);
    printf("      DATA: %p\n", data);
    *new_h = h;
    printf("NEW HEADER: \"%s\"\n", *new_h);
    return CURLE_OK;
}

int main(void)
{
  CURL *curl;
  CURLcode res;
  long resp_code;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080/");
    printf("COOKIEFILE: %d\n", curl_easy_setopt(
        curl, CURLOPT_COOKIEFILE, ""));
    printf("URLCHECKFUNCTION: %d\n", curl_easy_setopt(
        curl, CURLOPT_URLCHECKFUNCTION, url_checker));
    printf("COOKIECHECKFUNCTION: %d\n", curl_easy_setopt(
        curl, CURLOPT_COOKIECHECKFUNCTION, cookie_checker));
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
    //printf ("URLCHECKDATA: %d\n", curl_easy_setopt(
    //    curl, CURLOPT_URLCHECKDATA, NULL));
    res = curl_easy_perform(curl);
    printf("res = %d\n", res);
    printf("CURLINFO_RESPONSE_CODE: %d\n", curl_easy_getinfo(
        curl, CURLINFO_RESPONSE_CODE, &resp_code));
    printf("resp_code = %d\n", (int)resp_code);
    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  return 0;
}

/* vim: set et sw=4 ts=4 sts=4 cino=(4 : */

