Annotation of embedaddon/curl/docs/examples/cookie_interface.c, revision 1.1.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>