GRU - Generic Reusable Utilities
network/gru_uri_test_opt.c

URI parsing example

// amqp://localhost:61613/queue amq localhost 61613 queue
int test_with_strip(int argc, char **argv) {
gru_uri_t uri = {0};
if (argc < 3) {
fprintf(stderr, "Missing arguments\n");
return EXIT_FAILURE;
}
uri = gru_uri_parse_ex(argv[1], GRU_URI_PARSE_STRIP, &status);
if (gru_status_error(&status)) {
fprintf(stderr, "%s", status.message);
goto err_exit;
}
if (strcmp(uri.scheme, argv[2]) != 0) {
fprintf(stderr,
"Expected scheme '%s' does not match returned one '%s'\n", argv[2], uri.scheme);
goto err_exit;
}
if (strcmp(uri.host, argv[3]) != 0) {
fprintf(
stderr, "Expected host '%s' does not match returned one '%s'\n", argv[3], uri.host);
goto err_exit;
}
if (uri.port != atoi(argv[4])) {
fprintf(
stderr, "Expected port '%s' does not match returned one '%d'\n", argv[2], uri.port);
goto err_exit;
}
if (strcmp(uri.path, argv[5]) != 0) {
fprintf(
stderr, "Expected path '%s' does not match returned one '%s'\n", argv[5], uri.path);
goto err_exit;
}
return EXIT_SUCCESS;
err_exit:
return EXIT_FAILURE;
}
int main(int argc, char **argv) {
return test_with_strip(argc, argv);
}
int main(int argc, char **argv)
Definition: gru_list_test.c:198
gru_export gru_status_t gru_status_new()
Copyright 2016 Otavio Rodolfo Piske.
Definition: gru_status.c:18
bool gru_status_error(const gru_status_t *status)
Checks for error status.
Definition: gru_status.c:83
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:183
void gru_uri_cleanup(gru_uri_t *uri)
Cleans up a URI object.
Definition: gru_uri.c:380
@ GRU_URI_PARSE_STRIP
Definition: gru_uri.h:49
int test_with_strip(int argc, char **argv)
Copyright 2016 Otavio Rodolfo Piske.
Definition: gru_uri_test_opt.c:23
Status type.
Definition: gru_status.h:47
char * message
Definition: gru_status.h:48
Definition: gru_uri.h:60
char * host
Definition: gru_uri.h:62
uint16_t port
Definition: gru_uri.h:64
char * path
Definition: gru_uri.h:63
char * scheme
Definition: gru_uri.h:61