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_t * | coap_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_t * | coap_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

  request | Request 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

  request | Request 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

  s | The path string to split.
  length | The actual length of `s`.
  buf | Result buffer for parsed segments.
  buflen | Maximum 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 390 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

  s | The query string to split.
  length | The actual length of `s`.
  buf | Result buffer for parsed segments.
  buflen | Maximum 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 402 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_var | The string to split up.
  len | The actual length of `str_var`
  uri | The coap_uri_t object to store the result.

Returns
  `0` on success, or < 0 on error.

Definition at line 43 of file uri.c.

Here is the caller graph for this function: