GRU - Generic Reusable Utilities
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
gru_uri.h
Go to the documentation of this file.
1 /*
2  Copyright 2016 Otavio Rodolfo Piske
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 #ifndef GRU_URI_H
17 #define GRU_URI_H
18 
19 #include <inttypes.h>
20 #include <stdbool.h>
21 
22 #include <common/gru_status.h>
23 #include <string/gru_alt.h>
24 
25 #include <uriparser/Uri.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
35 typedef enum gru_uri_parse_opt_t_ {
39 
40 typedef enum gru_uri_format_opt_t_ {
47 
48 typedef struct gru_uri_t_ {
49  char *scheme;
50  char *host;
51  char *path;
52  uint16_t port;
53 } gru_uri_t;
54 
62  const char *gru_restrict uri, gru_status_t *gru_restrict status);
63 
73 
81  const gru_uri_t *gru_restrict uri, gru_status_t *gru_restrict status);
82 
92 
99 gru_export bool gru_uri_set_scheme(gru_uri_t *uri, const char *scheme);
100 
107 gru_export bool gru_uri_set_path(gru_uri_t *uri, const char *path);
108 
117 
123 
124 #ifdef __cplusplus
125 }
126 #endif
127 
128 #endif /* GRU_URI_H */
#define gru_restrict
Definition: gru_portable.h:20
char * gru_uri_format(const gru_uri_t *uri, gru_uri_format_opt_t fopt, gru_status_t *status)
Definition: gru_uri.c:196
bool gru_uri_set_path(gru_uri_t *uri, const char *path)
Sets the URI path.
Definition: gru_uri.c:239
enum gru_uri_format_opt_t_ gru_uri_format_opt_t
char * scheme
Definition: gru_uri.h:49
char * host
Definition: gru_uri.h:50
Formats only scheme and host.
Definition: gru_uri.h:42
void gru_uri_cleanup(gru_uri_t *uri)
Cleans up a URI object.
Definition: gru_uri.c:288
#define gru_export
Definition: gru_portable.h:19
gru_uri_t gru_uri_parse(const char *url, gru_status_t *status)
Definition: gru_uri.c:129
Definition: gru_uri.h:48
char * gru_uri_simple_format(const gru_uri_t *uri, gru_status_t *status)
Definition: gru_uri.c:157
gru_uri_parse_opt_t_
Definition: gru_uri.h:35
gru_uri_format_opt_t_
Definition: gru_uri.h:40
enum gru_uri_parse_opt_t_ gru_uri_parse_opt_t
gru_export gru_uri_t gru_uri_clone(gru_uri_t other, gru_status_t *status)
Clone a URI object.
Definition: gru_uri.c:253
gru_export gru_uri_t gru_uri_parse_ex(const char *gru_restrict url, gru_uri_parse_opt_t parseopt, gru_status_t *gru_restrict status)
URI parser with additional options.
Definition: gru_uri.c:133
Status type.
Definition: gru_status.h:47
Formats only scheme, host and port if available.
Definition: gru_uri.h:43
Definition: gru_uri.h:41
Definition: gru_uri.h:37
uint16_t port
Definition: gru_uri.h:52
bool gru_uri_set_scheme(gru_uri_t *uri, const char *scheme)
Sets the scheme in a URI object.
Definition: gru_uri.c:229
Definition: gru_uri.h:36
Formats scheme, host, port and path if available.
Definition: gru_uri.h:44
char * path
Definition: gru_uri.h:51
struct gru_uri_t_ gru_uri_t