Don't print an error message for empty courses
[nci.git] / util.h
blob3933465b5c52851fa1c365205d67204cf093c156
1 #define BUCKET_NUM 32
3 typedef struct {
4 /* */
5 uint_fast8_t skipped_chars;
6 yajl_handle yh;
7 } curl_to_yajl_ctx;
8 typedef struct {
9 /* */
10 char *name;
11 char *value;
12 } grading_standard_entry;
15 * Note that the map structure doesn't dup anything, yet does free
16 * everything. Once something is added as a key or value to the map,
17 * consider it freed. This is true even if the add was for a redundant
18 * key.
20 typedef struct {
21 /* */
22 char *k;
23 char **vs;
24 } entry;
25 typedef struct {
26 /* */
27 size_t es[BUCKET_NUM];
28 entry *e[BUCKET_NUM];
29 size_t num_values_per_entry;
30 } map;
31 typedef struct {
32 /* */
33 uint_fast8_t saw_id_key;
34 char **id_str;
35 uint_fast8_t saw_message_key;
36 char *error_message;
37 } ie_y_ctx;
38 typedef struct {
39 /* */
40 int idx_of_next_entry;
41 const char **field_names;
42 char *field0;
43 char **otherfields;
44 map *m;
45 unsigned int depth;
46 char *enclosing_id;
47 uint_fast8_t saw_id_key;
48 unsigned int enclosing_id_depth;
49 uint_fast8_t exhausted_enclosing_id;
50 uint_fast8_t saw_message_key;
51 char *error_message;
52 } kve_y_ctx;
53 typedef struct {
54 /* */
55 unsigned int depth;
56 unsigned int depth_of_upload_params;
57 uint_fast8_t in_upload_params;
58 uint_fast8_t next_val_is_url;
59 char *upload_url;
60 char **upload_params_keys;
61 char **upload_params_vals;
62 size_t upload_params_len;
63 char *error_message;
64 } fu_pt1_y_ctx;
66 char * get_auth_token(void);
67 char * get_url_base(void);
69 int key_value_extract(const char *path, const char *cookiejar_path, const
70 char **field_names, char *enclosing_id, map *m);
72 int make_gse_post(grading_standard_entry *cutoffs, size_t cutoffs_num, struct
73 curl_httppost **out_post);
74 int make_course_post(const char *hgs, const char *aagw, int
75 disable_grading_standard, const char *start_date, const
76 char *end_date, const
77 char *gse_id, struct curl_httppost **out_post);
78 struct curl_httppost * make_agroup_post(const char *name, const char *weight,
79 const char *drop_lowest, const
80 char *drop_highest);
81 struct curl_httppost * make_assignment_post(const char *name, const
82 char *max_points, const
83 char *due_date, const
84 char *group_id);
85 struct curl_httppost * make_update_grade_post(char ***csv, size_t col, size_t
86 rows);
88 int file_upload(const char *uri, const char *auth_token, const char *name, const char *path, const
89 char *folder_name);
91 int map_add(map *m, char *k, char **vs);
93 void map_clean(map *m);
95 char ** map_get(map *m, char *k);
97 void map_get_keys(map *m, char ***out_k, size_t *out_num);
99 void print_esc_0x22(const char *s);
101 int read_csv(FILE *f, char ****out_csv, size_t *out_rows, size_t *out_cols);
103 int send_and_id_scan(const char *uri, const char *auth_token, struct
104 curl_httppost *post, const char *method, char **id);