globus_dsi_rest  0.18
 All Data Structures Files Functions Variables Typedefs Groups Pages
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 
50 #ifndef GLOBUS_DSI_REST_H
51 #define GLOBUS_DSI_REST_H
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 #include <stdbool.h>
58 #include "globus_common.h"
59 #include "globus_gridftp_server.h"
60 
73 typedef
75 {
77  const char *key;
79  const char *value;
80 }
82 
90 typedef
92 {
94  size_t count;
97 }
99 
129 typedef
130 globus_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 
167 typedef
168 globus_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 
205 typedef
206 globus_result_t
208  void *read_callback_arg,
209  void *buffer,
210  size_t buffer_length);
211 
228 typedef
229 void
231  void *complete_callback_arg,
232  globus_result_t result);
233 
266 typedef
267 globus_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 
275 typedef
276 struct 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;
327  globus_dsi_rest_progress_t progress_callback;
331  void *progress_callback_arg;
332 }
333 globus_dsi_rest_callbacks_t;
334 
356 globus_result_t
358  const char *method,
359  const char *uri,
360  const globus_dsi_rest_key_array_t *query_parameters,
361  const globus_dsi_rest_key_array_t *headers,
362  const globus_dsi_rest_callbacks_t *callbacks);
363 
364 
384 globus_result_t
386  const char *uri,
387  const globus_dsi_rest_key_array_t *query_parameters,
388  char **complete_urip);
389 
406 globus_result_t
408  const char *s,
409  char **escaped);
410 
411 bool
413  globus_result_t result);
414 
427 typedef
429 {
431  void *block_data;
433  size_t block_len;
434 }
436 
449 
464 
477 
487 typedef
489 {
491  globus_gfs_operation_t op;
493  globus_off_t offset;
499  globus_off_t length;
504  bool eof;
505 }
507 
523 
533 typedef
535 {
537  size_t num_parts;
553 }
555 
607 
623 
636 
637 
647 typedef
649 {
668 }
670 
693 
694 extern globus_module_descriptor_t globus_i_dsi_rest_module;
695 
696 #define GLOBUS_DSI_REST_MODULE (&globus_i_dsi_rest_module)
697 
698 #ifdef __cplusplus
699 }
700 #endif
701 
702 #endif /* GLOBUS_DSI_REST_H */
globus_dsi_rest_key_array_t * part_header
Definition: globus_dsi_rest.h:552
struct globus_dsi_rest_write_block_arg_s globus_dsi_rest_write_block_arg_t
Single-block write specialization data_write_callback_arg.
off_t response_bytes_downloaded
Definition: globus_dsi_rest.h:667
struct globus_dsi_rest_response_arg_s globus_dsi_rest_response_arg_t
Response specialization response_callback_arg.
const char * value
Definition: globus_dsi_rest.h:79
size_t num_parts
Definition: globus_dsi_rest.h:537
bool globus_dsi_rest_error_is_retryable(globus_result_t result)
Check if an error is transient.
Definition: error_is_retryable.c:35
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:518
globus_off_t offset
Definition: globus_dsi_rest.h:493
struct globus_dsi_rest_key_value_s globus_dsi_rest_key_value_t
Key-Value Pairs.
void * block_data
Definition: globus_dsi_rest.h:431
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
size_t block_len
Definition: globus_dsi_rest.h:433
globus_off_t length
Definition: globus_dsi_rest.h:499
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
int response_code
Definition: globus_dsi_rest.h:651
globus_dsi_rest_read_t const globus_dsi_rest_read_json
JSON read specialization of globus_dsi_rest_read_t.
Definition: read_json.c:92
globus_dsi_rest_response_t const globus_dsi_rest_response
Response parsing specialization of globus_dsi_rest_response_t.
Definition: response.c:72
globus_dsi_rest_write_t const globus_dsi_rest_write_multipart
Multipart write specialization of globus_dsi_rest_write_t.
Definition: write_multipart.c:263
globus_dsi_rest_key_value_t * key_value
Definition: globus_dsi_rest.h:96
Multipart write specialization data_write_callback_arg.
Definition: globus_dsi_rest.h:533
GridFTP Operation write specialization data_write_callback_arg.
Definition: globus_dsi_rest.h:487
struct globus_dsi_rest_multipart_arg_s globus_dsi_rest_multipart_arg_t
Multipart write specialization data_write_callback_arg.
globus_gfs_operation_t op
Definition: globus_dsi_rest.h:491
void ** part_writer_arg
Definition: globus_dsi_rest.h:546
const char * key
Definition: globus_dsi_rest.h:77
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:267
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
Key-Value Pair Array.
Definition: globus_dsi_rest.h:90
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
struct globus_dsi_rest_key_array_s globus_dsi_rest_key_array_t
Key-Value Pair Array.
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_dsi_rest_write_t const globus_dsi_rest_write_block
Single-block write specialization of globus_dsi_rest_write_t.
Definition: write_block.c:58
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
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
off_t request_bytes_uploaded
Definition: globus_dsi_rest.h:661
Single-block write specialization data_write_callback_arg.
Definition: globus_dsi_rest.h:427
size_t count
Definition: globus_dsi_rest.h:94
struct globus_dsi_rest_gridftp_op_arg_s globus_dsi_rest_gridftp_op_arg_t
GridFTP Operation write specialization data_write_callback_arg.
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
globus_dsi_rest_write_t * part_writer
Definition: globus_dsi_rest.h:541
globus_dsi_rest_key_array_t desired_headers
Definition: globus_dsi_rest.h:655
bool eof
Definition: globus_dsi_rest.h:504
Response specialization response_callback_arg.
Definition: globus_dsi_rest.h:647
Key-Value Pairs.
Definition: globus_dsi_rest.h:73
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:73
void(* globus_dsi_rest_complete_t)(void *complete_callback_arg, globus_result_t result)
Request Complete Callback Signature.
Definition: globus_dsi_rest.h:230