uploaded liboauth for tizen_3.0
[platform/upstream/liboauth.git] / tests / oauthsign.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <oauth.h>
4 #include <strings.h>
5
6 static void usage (char *program_name) {
7   printf(" usage: %s mode url ckey tkey csec tsec\n", program_name);
8   exit (1);
9 }
10
11 /**
12  * 
13  * compile:
14  *  gcc -loauth -o oauthsign oauthsign.c
15  */
16 int main (int argc, char **argv) {
17
18   char *url;     //< the url to sign
19   char *c_key;    //< consumer key
20   char *c_secret;  //< consumer secret
21   char *t_key;    //< token key
22   char *t_secret ;  //< token secret
23
24   int mode = 0;   //< mode: 0=GET 1=POST
25
26   // TODO: use getopt to parse parameters
27
28   // FIXME: read secrets from stdin - they show up in ps(1)
29   // also overwrite memory of secrets before freeing it.
30  
31   if (argc !=7) usage(argv[0]);
32
33   if ( atoi(argv[1]) > 0 ) mode=atoi(argv[1]);// questionable numeric shortcut
34   else if (!strcasecmp(argv[1],"GET"))         mode=1;
35   else if (!strcasecmp(argv[1],"POST"))        mode=2;
36   else if (!strcasecmp(argv[1],"POSTREQUEST")) mode=4;
37   else usage(argv[0]);
38
39   url      = argv[2];
40   c_key    = argv[3];
41   t_key    = argv[4];
42   c_secret = argv[5];
43   t_secret = argv[6];
44
45   if (mode==1) { // GET
46     char *geturl = NULL;
47     geturl = oauth_sign_url2(url, NULL, OA_HMAC, NULL, c_key, c_secret, t_key, t_secret);
48     if(geturl) {
49       printf("%s\n", geturl);
50       free(geturl);
51     }
52   } else { // POST
53     char *postargs = NULL, *post = NULL;
54     post = oauth_sign_url2(url, &postargs, OA_HMAC, NULL, c_key, c_secret, t_key, t_secret);
55     if (!post || !postargs) {
56         return (1);
57     }
58     if (mode==2) { // print postargs only
59       if (postargs) printf("%s\n", postargs);
60     } else if (mode==3) { // print url and postargs
61       if (post && postargs) printf("%s\n%s\n", post, postargs);
62     } else if (post && postargs) {
63       char *reply = oauth_http_post(post,postargs);
64       if(reply){
65         //write(STDOUT, reply, strlen(reply))
66         printf("%s\n", reply);
67         free(reply);
68       }
69     }
70     if(post) free(post);
71     if(postargs) free(postargs);
72   }
73
74   return (0);
75 }