Project

General

Profile

Statistics
| Branch: | Revision:

root / mainbox / query.c @ 9e764ac9

History | View | Annotate | Download (1.41 KB)

1 9e764ac9 Tom Mullins
#include "query.h"
2
#include <stdio.h>
3
#include <curl/curl.h>
4
5
int query_init() {
6
  CURLcode error_code;
7
8
  error_code = curl_global_init(CURL_GLOBAL_NOTHING);
9
  if (error_code)
10
    fprintf(stderr, "curl_global_init: %s\n", curl_easy_strerror(error_code));
11
12
  return error_code;
13
}
14
15
void query_cleanup() {
16
  curl_global_cleanup();
17
}
18
19
static size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {
20
  int *resultp = userp;
21
22
  return fwrite(buffer, size, nmemb, stdout);
23
}
24
25
int query_user_permission(int tool_id, int user_id) {
26
  CURL* handle;
27
  CURLcode error_code;
28
  char url[1024];
29
  int result = 0;
30
31
  handle = curl_easy_init();
32
  if (handle == NULL)
33
    return 0;
34
35
  sprintf(url, "http://roboclub.org/tooltron/%08x/%d/", user_id, tool_id);
36
  /* TODO temporary */ sprintf(url, "http://www.google.com");
37
  error_code = curl_easy_setopt(handle, CURLOPT_URL, url);
38
  if (error_code) goto error;
39
40
  error_code = curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_data);
41
  if (error_code) goto error;
42
43
  error_code = curl_easy_setopt(handle, CURLOPT_WRITEDATA, &result);
44
  if (error_code) goto error;
45
46
  error_code = curl_easy_perform(handle);
47
  if (error_code) goto error;
48
49
  curl_easy_cleanup(handle);
50
  return result;
51
52
error:
53
  fprintf(stderr, "curl: %s\n", curl_easy_strerror(error_code));
54
  fprintf(stderr, "     when authenticating user %08x on tool %d\n",
55
      user_id, tool_id);
56
  curl_easy_cleanup(handle);
57
  return 0;
58
}