oss_crc_sample.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #include "aos_log.h"
  2. #include "aos_util.h"
  3. #include "aos_string.h"
  4. #include "aos_status.h"
  5. #include "oss_auth.h"
  6. #include "oss_util.h"
  7. #include "oss_api.h"
  8. #include "oss_config.h"
  9. #include "oss_sample_util.h"
  10. void append_object_from_buffer_with_crc()
  11. {
  12. aos_pool_t *p = NULL;
  13. aos_string_t bucket;
  14. aos_string_t object;
  15. char *str = "Time is a bird for ever on the wing.";
  16. aos_status_t *s = NULL;
  17. int is_cname = 0;
  18. int64_t position = 0;
  19. uint64_t initcrc = 0;
  20. aos_table_t *headers = NULL;
  21. aos_table_t *resp_headers = NULL;
  22. aos_list_t resp_body;
  23. oss_request_options_t *options = NULL;
  24. aos_list_t buffer;
  25. aos_buf_t *content = NULL;
  26. aos_pool_create(&p, NULL);
  27. options = oss_request_options_create(p);
  28. init_sample_request_options(options, is_cname);
  29. headers = aos_table_make(p, 0);
  30. aos_str_set(&bucket, BUCKET_NAME);
  31. aos_str_set(&object, OBJECT_NAME);
  32. aos_list_init(&resp_body);
  33. /* append object */
  34. aos_list_init(&buffer);
  35. content = aos_buf_pack(p, str, strlen(str));
  36. aos_list_add_tail(&content->node, &buffer);
  37. oss_delete_object(options, &bucket, &object, NULL);
  38. s = oss_do_append_object_from_buffer(options, &bucket, &object, position,
  39. initcrc, &buffer, headers, NULL, NULL, &resp_headers, &resp_body);
  40. if (aos_status_is_ok(s)) {
  41. printf("crc: append object from buffer succeeded\n");
  42. } else {
  43. printf("crc: append object from buffer failed\n");
  44. }
  45. position = aos_atoi64((char*)(apr_table_get(resp_headers, OSS_NEXT_APPEND_POSITION)));
  46. initcrc = aos_atoui64((char*)(apr_table_get(resp_headers, OSS_HASH_CRC64_ECMA)));
  47. /* append object */
  48. s = oss_do_append_object_from_buffer(options, &bucket, &object, position,
  49. initcrc, &buffer, NULL, NULL, NULL, NULL, NULL);
  50. /* delete object */
  51. s= oss_delete_object(options, &bucket, &object, NULL);
  52. aos_pool_destroy(p);
  53. }
  54. void append_object_from_file_with_crc()
  55. {
  56. aos_pool_t *p = NULL;
  57. char *object_name = "oss_append_object.txt";
  58. aos_string_t bucket;
  59. aos_string_t object;
  60. aos_string_t filename;
  61. aos_status_t *s = NULL;
  62. int is_cname = 0;
  63. int64_t position = 0;
  64. uint64_t initcrc = 0;
  65. aos_table_t *headers = NULL;
  66. aos_table_t *resp_headers = NULL;
  67. aos_list_t resp_body;
  68. oss_request_options_t *options = NULL;
  69. aos_pool_create(&p, NULL);
  70. options = oss_request_options_create(p);
  71. init_sample_request_options(options, is_cname);
  72. headers = aos_table_make(p, 0);
  73. aos_str_set(&bucket, BUCKET_NAME);
  74. aos_str_set(&object, object_name);
  75. aos_list_init(&resp_body);
  76. aos_str_set(&filename, __FILE__);
  77. /* append object */
  78. s = oss_do_append_object_from_file(options, &bucket, &object, position,
  79. initcrc, &filename, headers, NULL, NULL, &resp_headers, &resp_body);
  80. if (aos_status_is_ok(s)) {
  81. printf("crc: append object from file succeeded\n");
  82. } else {
  83. printf("crc: append object from file failed\n");
  84. }
  85. position = aos_atoi64((char*)(apr_table_get(resp_headers, OSS_NEXT_APPEND_POSITION)));
  86. initcrc = aos_atoui64((char*)(apr_table_get(resp_headers, OSS_HASH_CRC64_ECMA)));
  87. /* append object */
  88. s = oss_do_append_object_from_file(options, &bucket, &object, position,
  89. initcrc, &filename, NULL, NULL, NULL, NULL, NULL);
  90. if (aos_status_is_ok(s)) {
  91. printf("crc: append object from file succeeded\n");
  92. } else {
  93. printf("crc: append object from file failed\n");
  94. }
  95. /* delete object */
  96. s= oss_delete_object(options, &bucket, &object, NULL);
  97. aos_pool_destroy(p);
  98. }
  99. void disable_crc()
  100. {
  101. aos_pool_t *p = NULL;
  102. char *str = "Sow nothing, reap nothing.";
  103. aos_status_t *s = NULL;
  104. int is_cname = 0;
  105. aos_string_t bucket;
  106. aos_string_t object;
  107. oss_request_options_t *options = NULL;
  108. aos_list_t resp_body;
  109. aos_list_t buffer;
  110. aos_buf_t *content;
  111. /* init test*/
  112. aos_pool_create(&p, NULL);
  113. options = oss_request_options_create(p);
  114. init_sample_request_options(options, is_cname);
  115. aos_str_set(&bucket, BUCKET_NAME);
  116. aos_str_set(&object, OBJECT_NAME);
  117. aos_list_init(&resp_body);
  118. aos_list_init(&buffer);
  119. content = aos_buf_pack(options->pool, str, strlen(str));
  120. aos_list_add_tail(&content->node, &buffer);
  121. options->ctl->options->enable_crc = AOS_FALSE;
  122. /* put object */
  123. s = oss_put_object_from_buffer(options, &bucket, &object, &buffer, NULL, NULL);
  124. if (aos_status_is_ok(s)) {
  125. printf("put object from buffer succeeded\n");
  126. } else {
  127. printf("put object from buffer failed\n");
  128. }
  129. aos_pool_destroy(p);
  130. /* get object */
  131. aos_pool_create(&p, NULL);
  132. options = oss_request_options_create(p);
  133. init_sample_request_options(options, is_cname);
  134. options->ctl->options->enable_crc = AOS_FALSE;
  135. s = oss_get_object_to_buffer(options, &bucket, &object, NULL, NULL, &buffer, NULL);
  136. if (aos_status_is_ok(s)) {
  137. printf("get object to buffer succeeded\n");
  138. } else {
  139. printf("get object to buffer failed\n");
  140. }
  141. aos_pool_destroy(p);
  142. }
  143. void crc_sample()
  144. {
  145. /* 说明:CRC校验功能默认打开,上传、下载默认启动CRC校验;append_object需要指定上次append返回的CRC */
  146. append_object_from_buffer_with_crc();
  147. append_object_from_file_with_crc();
  148. disable_crc();
  149. }