plumbapius v0.7.1 Plumbapius.Request

Defines methods for validating requests by schema

Link to this section Summary

Link to this section Functions

Link to this function

match?(schema, request_method, request_path)

Specs

Link to this function

validate_body(request_schema, request_body)

Specs

validate_body(Plumbapius.Request.Schema.t(), map()) :: :ok | {:error, list()}

Validates request body according to a schema.

Parameters

  • request_schema: Request schema for validation.
  • request_body: Request body to validate.

Examples

iex> request_schema = Plumbapius.Request.Schema.new(%{
...>   "method"=>"GET",
...>   "path"=>"/users",
...>   "content-type"=>"application/json",
...>   "request"=>%{
...>     "$schema" => "http://json-schema.org/draft-04/schema#",
...>     "type" => "object",
...>     "properties" => %{"msisdn" => %{"type" => "number"}},
...>     "required" => ["msisdn"]
...>   },
...>   "responses"=>[]
...> })
iex> Plumbapius.Request.validate_body(request_schema, %{"msisdn" => 12345})
:ok
iex> Plumbapius.Request.validate_body(request_schema, %{"msisdn" => "12345"})
{:error, "#/msisdn: Type mismatch. Expected Number but got String."}