test.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include "json.h"
  5. #include "arraylist.h"
  6. #include "server.h"
  7. #include "error.h"
  8. #include "bomberstudent_server.h"
  9. #include "client.h"
  10. #include "file.h"
  11. /* --- Extern --- */
  12. extern Error error;
  13. int parse(){
  14. char str[200];
  15. char* key = NULL;
  16. char* val = NULL;
  17. JsonParser json;
  18. strcpy(str, "{\"name\" : \"Jack\", \"age\": 27, \"test\": true, \"tab\": [1, 2, 3, 4, 5], \"obj\": {\"name\" : \"Jack\", \"age\": 27}, \"nb\": 27.8 }");
  19. //Parse
  20. int a = json_parse(&json, str);
  21. printf("Parse : %d\n", a);
  22. //Affiche toutes les clefs : valeurs
  23. for(int i = 0; i < json.elt; i++){
  24. key = key_index(&json, i);
  25. val = get_index(&json, i);
  26. printf("%s : %s\n", key, val);
  27. }
  28. //Recup un nombre
  29. printf("Double : %f %.2f | Int : %d %d\n", get_number(&json, "age"), get_number(&json, "nb"), get_integer(&json, "age"), get_integer(&json, "nb"));
  30. //Recup boolean
  31. printf("Bool : %d %d\n", get_boolean(&json, "test"), get_boolean(&json, "tab"));
  32. //Recup obj
  33. JsonParser* js;
  34. js = get_object(&json, "obj");
  35. if(js != NULL){
  36. int key_i = get_pos(js, "name");
  37. printf("JSON : %s %s, age %d\n", key_index(js, key_i), get_value(js, "name"), get_integer(js, "age"));
  38. } else {
  39. printf("JSON : Error");
  40. }
  41. //Supprime
  42. free(key);
  43. free(val);
  44. clean_json_parser(&json);
  45. return 0;
  46. }
  47. int encode(){
  48. //Encode
  49. JsonEncoder json;
  50. ini_encoder(&json);
  51. add_string(&json, "name", "robert");
  52. add_number(&json, "nb", 25.698, 2);
  53. add_integer(&json, "int", 846);
  54. add_string(&json, "aze", "rty");
  55. add_boolean(&json, "bool", false);
  56. add_value(&json, "\"test\": \"aze\nrty\"");
  57. printf("Json\n");
  58. printf("%s\n", json_encode(&json));
  59. //Encode un JsonEncoder
  60. JsonEncoder json2;
  61. ini_encoder(&json2);
  62. add_integer(&json2, "vie", 42);
  63. add_object(&json2, "obj", json);
  64. printf("\nJson 2\n");
  65. printf("%s\n", json_encode(&json2));
  66. //Decode
  67. JsonParser parser, *parser2;
  68. char* key, *val;
  69. json_parse(&parser, json_encode(&json2));
  70. //Affiche toutes les clefs : valeurs
  71. printf("\nParser\n");
  72. for(int i = 0; i < parser.elt; i++){
  73. key = key_index(&parser, i);
  74. val = get_index(&parser, i);
  75. printf("%s : %s\n", key, val);
  76. }
  77. //Lecture du sous json
  78. parser2 = get_object(&parser, "obj");
  79. //Affiche toutes les clefs : valeurs
  80. printf("\nParser 2\n");
  81. for(int i = 0; i < parser2->elt; i++){
  82. key = key_index(parser2, i);
  83. val = get_index(parser2, i);
  84. printf("%s : %s\n", key, val);
  85. }
  86. //Clean
  87. clean_json_encoder(&json);
  88. clean_json_encoder(&json2);
  89. clean_json_parser(&parser);
  90. return 0;
  91. }
  92. int serv(){
  93. char str[BUFFER_SIZE];
  94. Server s = server_create_tcp();
  95. s->server_bind(s, 8080);
  96. s->server_accept(s);
  97. s->server_receive(s, str, BUFFER_SIZE);
  98. printf("%s\n", str);
  99. server_close_client(s);
  100. server_close(s);
  101. s = server_create_udp();
  102. s->server_bind(s, 8080);
  103. s->server_receive(s, str, BUFFER_SIZE);
  104. printf("%s\n", str);
  105. server_close(s);
  106. return 0;
  107. }
  108. int serv_udp(){
  109. char str[BUFFER_SIZE];
  110. Server s = server_create_udp();
  111. s->server_bind(s, 18624);
  112. s->server_receive(s, str, BUFFER_SIZE);
  113. s->server_send(s, "i'm a bomberstudent server");
  114. printf("%s\n", str);
  115. server_close(s);
  116. return 0;
  117. }
  118. int serv_tcp(){
  119. char str[BUFFER_SIZE];
  120. Server s = server_create_tcp();
  121. s->server_bind(s, 18642);
  122. s->server_accept(s);
  123. s->server_receive(s, str, BUFFER_SIZE);
  124. printf("%s\n", str);
  125. s->server_send(s, "Hello");
  126. server_close_client(s);
  127. server_close(s);
  128. return 0;
  129. }
  130. int handler(int cliId, JsonParser* jp){
  131. printf("Handler : %d - %s\n", cliId, get_value(jp, "key"));
  132. JsonEncoder je;
  133. ini_encoder(&je);
  134. add_integer(&je, "code", 200);
  135. add_string(&je, "etat", "ok");
  136. send_client(cliId, &je);
  137. return 1;
  138. }
  139. void notify(){
  140. Client* cli = get_client(0);
  141. JsonEncoder je;
  142. ini_encoder(&je);
  143. add_string(&je, "etat", "ok");
  144. add_integer(&je, "value", 42);
  145. notify_client(cli, "POST", "test", &je);
  146. }
  147. int files(){
  148. char** result = NULL, * content = NULL;
  149. char path[500];
  150. int length;
  151. result = file_list("map", &length);
  152. if(length == ERR){
  153. return 0;
  154. }
  155. for(int i = 0; i < length; i++){
  156. printf("Name : %s\n", result[i]);
  157. sprintf(path, "map/%s", result[i]);
  158. content = file_get_content(path);
  159. if(content != NULL){
  160. printf("Content :\n%s\n", content);
  161. free(content);
  162. }
  163. free(result[i]);
  164. }
  165. free(result);
  166. return 1;
  167. }
  168. int main(){
  169. //return parse();
  170. //return encode();
  171. //return serv();
  172. //return serv_udp();
  173. //return serv_tcp();
  174. /*
  175. error_finit("bomberstudent_server.log");
  176. ini_server();
  177. add_handler("POST", "aze/rty", handler);
  178. if(!launch_udp_server(PORT_UDP)){
  179. error.print("Impossible de démarrer le serveur");
  180. error.exit_err();
  181. }
  182. if(!launch_tcp_server(PORT_TCP)){
  183. error.print("Impossible de démarrer le serveur");
  184. error.exit_err();
  185. }
  186. sleep(10);
  187. notify();
  188. sleep(15);
  189. error.exit();
  190. //*/
  191. return files();
  192. }