globus_connect_gridftp_server 16.16~rc1
Loading...
Searching...
No Matches
globus_dsi_rest.h
Go to the documentation of this file.
1/*
2 * Copyright 1999-2016 University of Chicago
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
24
49
50#ifndef GLOBUS_DSI_REST_H
51#define GLOBUS_DSI_REST_H
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57#include <stdbool.h>
58#include "globus_common.h"
60
64
73typedef
75{
77 const char *key;
79 const char *value;
80}
82
99
129typedef
130globus_result_t (*globus_dsi_rest_response_t) (
131 void *response_callback_arg,
132 int response_code,
133 const char *response_status,
134 const globus_dsi_rest_key_array_t *response_headers);
135
167typedef
168globus_result_t (*globus_dsi_rest_write_t) (
169 void *write_callback_arg,
170 void *buffer,
171 size_t buffer_length,
172 size_t *amount_copied);
173
205typedef
206globus_result_t
208 void *read_callback_arg,
209 void *buffer,
210 size_t buffer_length);
211
228typedef
229void
231 void *complete_callback_arg,
232 globus_result_t result);
233
266typedef
267globus_result_t
269 void *progress_callback_arg,
270 uint64_t total_read,
271 uint64_t amt_read,
272 uint64_t total_written,
273 uint64_t amt_written);
274
275typedef
276struct globus_dsi_rest_callbacks_s
277{
283 globus_dsi_rest_response_t response_callback;
287 void *response_callback_arg;
288
294 globus_dsi_rest_complete_t complete_callback;
298 void *complete_callback_arg;
299
306 globus_dsi_rest_write_t data_write_callback;
310 void *data_write_callback_arg;
311
317 globus_dsi_rest_read_t data_read_callback;
321 void *data_read_callback_arg;
322
328 globus_dsi_rest_progress_t progress_callback;
332 void *progress_callback_arg;
333}
334globus_dsi_rest_callbacks_t;
335
357globus_result_t
359 const char *method,
360 const char *uri,
361 const globus_dsi_rest_key_array_t *query_parameters,
362 const globus_dsi_rest_key_array_t *headers,
363 const globus_dsi_rest_callbacks_t *callbacks);
364
365globus_result_t
366globus_dsi_rest_request_peek(
367 const char *method,
368 const char *uri,
369 const globus_dsi_rest_key_array_t *query_parameters,
370 const globus_dsi_rest_key_array_t *headers,
371 const globus_dsi_rest_callbacks_t *callbacks,
372 globus_dsi_rest_read_t data_peek_callback,
373 void *data_peek_callback_arg);
374
394globus_result_t
396 const char *uri,
397 const globus_dsi_rest_key_array_t *query_parameters,
398 char **complete_urip);
399
416globus_result_t
418 const char *s,
419 char **escaped);
420
421bool
423 globus_result_t result);
424
437typedef
439{
443 size_t block_len;
444}
446
459
474
484typedef struct
485{
487 size_t block_count;
488}
502
515
525typedef
527{
529 globus_gfs_operation_t op;
531 globus_off_t offset;
537 globus_off_t length;
542 bool eof;
543}
545
561
571typedef
573{
575 size_t num_parts;
576
577 struct globus_dsi_rest_write_part_s
578 {
583 globus_dsi_rest_write_t data_write_callback;
588 void *data_write_callback_arg;
594 globus_dsi_rest_key_array_t part_header;
595 } *parts;
596}
598
635
645typedef
647{
649 size_t num_parts;
650
651 struct globus_dsi_rest_read_part_s
652 {
658 globus_dsi_rest_response_t response_callback;
663 void *response_callback_arg;
668 globus_dsi_rest_read_t data_read_callback;
673 void *data_read_callback_arg;
674 } *parts;
675}
677
692
708
724
737
738
771
794
795extern globus_module_descriptor_t globus_i_dsi_rest_module;
796
797enum
798{
799 GLOBUS_DSI_REST_ERROR_PARAMETER = 1,
800 GLOBUS_DSI_REST_ERROR_MEMORY,
801 GLOBUS_DSI_REST_ERROR_PARSE,
802 GLOBUS_DSI_REST_ERROR_CURL,
803 GLOBUS_DSI_REST_ERROR_JSON,
804 GLOBUS_DSI_REST_ERROR_TIME_OUT,
805 GLOBUS_DSI_REST_ERROR_THREAD_FAIL,
806 GLOBUS_DSI_REST_ERROR_UNEXPECTED_DATA,
807};
808
809#define GLOBUS_DSI_REST_MODULE (&globus_i_dsi_rest_module)
810
811#ifdef __cplusplus
812}
813#endif
814
815#endif /* GLOBUS_DSI_REST_H */
bool globus_dsi_rest_error_is_retryable(globus_result_t result)
Check if an error is transient.
Definition error_is_retryable.c:35
globus_result_t globus_dsi_rest_uri_escape(const char *s, char **escaped)
Escape a string.
Definition uri_escape.c:92
globus_result_t globus_dsi_rest_request(const char *method, const char *uri, const globus_dsi_rest_key_array_t *query_parameters, const globus_dsi_rest_key_array_t *headers, const globus_dsi_rest_callbacks_t *callbacks)
Perform a REST request.
Definition request.c:279
globus_result_t globus_dsi_rest_uri_add_query(const char *uri, const globus_dsi_rest_key_array_t *query_parameters, char **complete_urip)
Add query parameters to a URI base string.
Definition uri_add_query.c:27
globus_result_t(* globus_dsi_rest_read_t)(void *read_callback_arg, void *buffer, size_t buffer_length)
Data Read Callback Signature.
Definition globus_dsi_rest.h:207
globus_result_t(* globus_dsi_rest_write_t)(void *write_callback_arg, void *buffer, size_t buffer_length, size_t *amount_copied)
Data Write Callback Signature.
Definition globus_dsi_rest.h:168
globus_result_t(* globus_dsi_rest_progress_t)(void *progress_callback_arg, uint64_t total_read, uint64_t amt_read, uint64_t total_written, uint64_t amt_written)
Request Progress Callback Signature.
Definition globus_dsi_rest.h:268
void(* globus_dsi_rest_complete_t)(void *complete_callback_arg, globus_result_t result)
Request Complete Callback Signature.
Definition globus_dsi_rest.h:230
globus_result_t(* globus_dsi_rest_response_t)(void *response_callback_arg, int response_code, const char *response_status, const globus_dsi_rest_key_array_t *response_headers)
Response Callback Signature.
Definition globus_dsi_rest.h:130
globus_dsi_rest_write_t const globus_dsi_rest_write_multipart
Multipart write specialization of globus_dsi_rest_write_t.
Definition write_multipart.c:264
globus_dsi_rest_read_t const globus_dsi_rest_read_gridftp_op
GridFTP operation read specialization of globus_dsi_rest_read_t.
Definition read_gridftp_op.c:346
globus_dsi_rest_write_t const globus_dsi_rest_write_blocks
Multiple-block write specialization of the globus_dsi_rest_write_t.
Definition write_blocks.c:74
globus_dsi_rest_read_t const globus_dsi_rest_read_multipart
Multipart read specialization of globus_dsi_rest_read_t.
Definition read_multipart.c:264
struct globus_dsi_rest_read_multipart_arg_s globus_dsi_rest_read_multipart_arg_t
Multipart write specialization data_read_callback_arg.
globus_dsi_rest_write_t const globus_dsi_rest_write_block
Single-block write specialization of globus_dsi_rest_write_t.
Definition write_block.c:59
globus_dsi_rest_response_t const globus_dsi_rest_response
Response parsing specialization of globus_dsi_rest_response_t.
Definition response.c:72
struct globus_dsi_rest_response_arg_s globus_dsi_rest_response_arg_t
Response specialization response_callback_arg.
struct globus_dsi_rest_gridftp_op_arg_s globus_dsi_rest_gridftp_op_arg_t
GridFTP Operation write specialization data_write_callback_arg.
globus_dsi_rest_progress_t const globus_dsi_rest_progress_idle_timeout
Idle timeout specialization of globus_dsi_rest_progress_t.
Definition progress_idle_timeout.c:62
struct globus_dsi_rest_write_multipart_arg_s globus_dsi_rest_write_multipart_arg_t
Multipart write specialization data_write_callback_arg.
globus_dsi_rest_write_t const globus_dsi_rest_write_json
JSON write specialization of globus_dsi_rest_write_t.
Definition write_json.c:47
globus_dsi_rest_write_t const globus_dsi_rest_write_form
POST FORM write specialization of globus_dsi_rest_write_t.
Definition write_form.c:47
struct globus_dsi_rest_write_block_arg_s globus_dsi_rest_write_block_arg_t
Single-block write specialization data_write_callback_arg.
globus_dsi_rest_write_t const globus_dsi_rest_write_gridftp_op
GridFTP operation write specialization of globus_dsi_rest_write_t.
Definition write_gridftp_op.c:585
globus_dsi_rest_read_t const globus_dsi_rest_read_json
JSON read specialization of globus_dsi_rest_read_t.
Definition read_json.c:89
struct globus_dsi_rest_key_array_s globus_dsi_rest_key_array_t
Key-Value Pair Array.
struct globus_dsi_rest_key_value_s globus_dsi_rest_key_value_t
Key-Value Pairs.
GridFTP Operation write specialization data_write_callback_arg.
Definition globus_dsi_rest.h:527
globus_off_t length
Definition globus_dsi_rest.h:537
globus_off_t offset
Definition globus_dsi_rest.h:531
globus_gfs_operation_t op
Definition globus_dsi_rest.h:529
bool eof
Definition globus_dsi_rest.h:542
Key-Value Pair Array.
Definition globus_dsi_rest.h:92
globus_dsi_rest_key_value_t * key_value
Definition globus_dsi_rest.h:96
size_t count
Definition globus_dsi_rest.h:94
Key-Value Pairs.
Definition globus_dsi_rest.h:75
const char * value
Definition globus_dsi_rest.h:79
const char * key
Definition globus_dsi_rest.h:77
Multipart write specialization data_read_callback_arg.
Definition globus_dsi_rest.h:647
size_t num_parts
Definition globus_dsi_rest.h:649
Response specialization response_callback_arg.
Definition globus_dsi_rest.h:750
globus_dsi_rest_key_array_t desired_headers
Definition globus_dsi_rest.h:756
off_t request_bytes_uploaded
Definition globus_dsi_rest.h:762
int response_code
Definition globus_dsi_rest.h:752
off_t response_bytes_downloaded
Definition globus_dsi_rest.h:768
Single-block write specialization data_write_callback_arg.
Definition globus_dsi_rest.h:439
void * block_data
Definition globus_dsi_rest.h:441
size_t block_len
Definition globus_dsi_rest.h:443
Multiple-block write specialization data_write_callback_arg.
Definition globus_dsi_rest.h:485
Multipart write specialization data_write_callback_arg.
Definition globus_dsi_rest.h:573
size_t num_parts
Definition globus_dsi_rest.h:575