ExPersona.Client.Parser (ex_persona v0.0.2) View Source

This module contains functions used in parsing the results of API calls.

In this context, "parsing" occurs after JSON responses have been decoded into a Map.

Link to this section Summary

Types

A result from a parsed API call that is streamable (i.e., a pagninated list).

Either a single or list result.

A single result from a parsed API call.

Functions

Provide a default parser in case an ExPersona.Client.Operation doesn't specify one.

Turn a parser designed for a single record into one that can handle lists.

Link to this section Types

Specs

parsed_list_result() :: {:ok, struct(), Streamable.t()} | {:error, String.t()}

A result from a parsed API call that is streamable (i.e., a pagninated list).

Specs

parsed_result() :: parsed_result() | parsed_list_result()

Either a single or list result.

Link to this type

parsed_single_result()

View Source

Specs

parsed_single_result() :: {:ok, struct()} | {:error, String.t()}

A single result from a parsed API call.

Specs

parser_func() :: (ExPersona.Client.Result.t() -> parsed_result())

Link to this section Functions

Specs

Provide a default parser in case an ExPersona.Client.Operation doesn't specify one.

This just returns the body of the response. This is useful for downloading files, for instance, where there's no transformation that should be done on the result.

Specs

Turn a parser designed for a single record into one that can handle lists.

This is used in cases where the expected result of an ExPersona.Client.Operation is one that can handle pagination, and we'd like to just specify a single parser. For instance, the ExPersona.Inquiry.list/0 function just creates this struct:

 %Operation{path: "inquiries", parser: Parser.list_parser(&Inquiry.parse/1)}

where Inquiry.parse/1 describes how to handle creating one ExPersona.Inquiry from a ExPersona.Client.Result.