Annotation of embedaddon/curl/docs/examples/cookie_interface.c, revision 1.1
1.1 ! misho 1: /***************************************************************************
! 2: * _ _ ____ _
! 3: * Project ___| | | | _ \| |
! 4: * / __| | | | |_) | |
! 5: * | (__| |_| | _ <| |___
! 6: * \___|\___/|_| \_\_____|
! 7: *
! 8: * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: *
! 10: * This software is licensed as described in the file COPYING, which
! 11: * you should have received as part of this distribution. The terms
! 12: * are also available at https://curl.haxx.se/docs/copyright.html.
! 13: *
! 14: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: * copies of the Software, and permit persons to whom the Software is
! 16: * furnished to do so, under the terms of the COPYING file.
! 17: *
! 18: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: * KIND, either express or implied.
! 20: *
! 21: ***************************************************************************/
! 22: /* <DESC>
! 23: * Import and export cookies with COOKIELIST.
! 24: * </DESC>
! 25: */
! 26:
! 27: #include <stdio.h>
! 28: #include <string.h>
! 29: #include <stdlib.h>
! 30: #include <errno.h>
! 31: #include <time.h>
! 32:
! 33: #include <curl/curl.h>
! 34:
! 35: static void
! 36: print_cookies(CURL *curl)
! 37: {
! 38: CURLcode res;
! 39: struct curl_slist *cookies;
! 40: struct curl_slist *nc;
! 41: int i;
! 42:
! 43: printf("Cookies, curl knows:\n");
! 44: res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
! 45: if(res != CURLE_OK) {
! 46: fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
! 47: curl_easy_strerror(res));
! 48: exit(1);
! 49: }
! 50: nc = cookies;
! 51: i = 1;
! 52: while(nc) {
! 53: printf("[%d]: %s\n", i, nc->data);
! 54: nc = nc->next;
! 55: i++;
! 56: }
! 57: if(i == 1) {
! 58: printf("(none)\n");
! 59: }
! 60: curl_slist_free_all(cookies);
! 61: }
! 62:
! 63: int
! 64: main(void)
! 65: {
! 66: CURL *curl;
! 67: CURLcode res;
! 68:
! 69: curl_global_init(CURL_GLOBAL_ALL);
! 70: curl = curl_easy_init();
! 71: if(curl) {
! 72: char nline[256];
! 73:
! 74: curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
! 75: curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
! 76: curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* start cookie engine */
! 77: res = curl_easy_perform(curl);
! 78: if(res != CURLE_OK) {
! 79: fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
! 80: return 1;
! 81: }
! 82:
! 83: print_cookies(curl);
! 84:
! 85: printf("Erasing curl's knowledge of cookies!\n");
! 86: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");
! 87:
! 88: print_cookies(curl);
! 89:
! 90: printf("-----------------------------------------------\n"
! 91: "Setting a cookie \"PREF\" via cookie interface:\n");
! 92: #ifdef WIN32
! 93: #define snprintf _snprintf
! 94: #endif
! 95: /* Netscape format cookie */
! 96: snprintf(nline, sizeof(nline), "%s\t%s\t%s\t%s\t%lu\t%s\t%s",
! 97: ".example.com", "TRUE", "/", "FALSE",
! 98: (unsigned long)time(NULL) + 31337UL,
! 99: "PREF", "hello example, i like you very much!");
! 100: res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
! 101: if(res != CURLE_OK) {
! 102: fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
! 103: curl_easy_strerror(res));
! 104: return 1;
! 105: }
! 106:
! 107: /* HTTP-header style cookie. If you use the Set-Cookie format and don't
! 108: specify a domain then the cookie is sent for any domain and will not be
! 109: modified, likely not what you intended. Starting in 7.43.0 any-domain
! 110: cookies will not be exported either. For more information refer to the
! 111: CURLOPT_COOKIELIST documentation.
! 112: */
! 113: snprintf(nline, sizeof(nline),
! 114: "Set-Cookie: OLD_PREF=3d141414bf4209321; "
! 115: "expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.example.com");
! 116: res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
! 117: if(res != CURLE_OK) {
! 118: fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
! 119: curl_easy_strerror(res));
! 120: return 1;
! 121: }
! 122:
! 123: print_cookies(curl);
! 124:
! 125: res = curl_easy_perform(curl);
! 126: if(res != CURLE_OK) {
! 127: fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
! 128: return 1;
! 129: }
! 130:
! 131: curl_easy_cleanup(curl);
! 132: }
! 133: else {
! 134: fprintf(stderr, "Curl init failed!\n");
! 135: return 1;
! 136: }
! 137:
! 138: curl_global_cleanup();
! 139: return 0;
! 140: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>