libcoap  4.2.0
URI Parsing Functions

CoAP PDUs contain normalized URIs with their path and query split into multiple segments. More...

Functions

int coap_split_uri (const uint8_t *str_var, size_t len, coap_uri_t *uri)
 Parses a given string into URI components. More...
 
int coap_split_path (const uint8_t *s, size_t length, unsigned char *buf, size_t *buflen)
 Splits the given URI path into segments. More...
 
int coap_split_query (const uint8_t *s, size_t length, unsigned char *buf, size_t *buflen)
 Splits the given URI query into segments. More...
 
coap_string_tcoap_get_query (const struct coap_pdu_t *request)
 Extract query string from request PDU according to escape rules in 6.5.8. More...
 
coap_string_tcoap_get_uri_path (const struct coap_pdu_t *request)
 Extract uri_path string from request PDU. More...
 

Detailed Description

CoAP PDUs contain normalized URIs with their path and query split into multiple segments.

The functions in this module help splitting strings.

Function Documentation

◆ coap_get_query()

coap_string_t* coap_get_query ( const struct coap_pdu_t request)

Extract query string from request PDU according to escape rules in 6.5.8.

Parameters
requestRequest PDU.
Returns
Reconstructed and escaped query string part.
+ Here is the caller graph for this function:

◆ coap_get_uri_path()

coap_string_t* coap_get_uri_path ( const struct coap_pdu_t request)

Extract uri_path string from request PDU.

Parameters
requestRequest PDU.
Returns
Reconstructed and escaped uri path string part.
+ Here is the caller graph for this function:

◆ coap_split_path()

int coap_split_path ( const uint8_t s,
size_t  length,
unsigned char *  buf,
size_t *  buflen 
)

Splits the given URI path into segments.

Each segment is preceded by an option pseudo-header with delta-value 0 and the actual length of the respective segment after percent-decoding.

Parameters
sThe path string to split.
lengthThe actual length of s.
bufResult buffer for parsed segments.
buflenMaximum length of buf. Will be set to the actual number of bytes written into buf on success.
Returns
The number of segments created or -1 on error.

Definition at line 400 of file uri.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ coap_split_query()

int coap_split_query ( const uint8_t s,
size_t  length,
unsigned char *  buf,
size_t *  buflen 
)

Splits the given URI query into segments.

Each segment is preceded by an option pseudo-header with delta-value 0 and the actual length of the respective query term.

Parameters
sThe query string to split.
lengthThe actual length of s.
bufResult buffer for parsed segments.
buflenMaximum length of buf. Will be set to the actual number of bytes written into buf on success.
Returns
The number of segments created or -1 on error.
Bug:
This function does not reserve additional space for delta > 12.

Definition at line 412 of file uri.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ coap_split_uri()

int coap_split_uri ( const uint8_t str_var,
size_t  len,
coap_uri_t uri 
)

Parses a given string into URI components.

The identified syntactic components are stored in the result parameter uri. Optional URI components that are not specified will be set to { 0, 0 }, except for the port which is set to COAP_DEFAULT_PORT. This function returns 0 if parsing succeeded, a value less than zero otherwise.

Parameters
str_varThe string to split up.
lenThe actual length of str_var
uriThe coap_uri_t object to store the result.
Returns
0 on success, or < 0 on error.

Definition at line 53 of file uri.c.

+ Here is the caller graph for this function: