| Qore RestSchemaValidator Module Reference 2.2.1

Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
RestSchemaValidator::AbstractRestSchemaValidator Class Reference

abstract REST schema validation classes More...

Inheritance diagram for RestSchemaValidator::AbstractRestSchemaValidator:
[legend]

## Public Member Functions
| constructor ()
| Creates the object without a logger.
| constructor (Logger::LoggerInterface logger)
| Creates the object with the given logger.
string | getBasePath ()
| returns the base path prefix for all requests in this schema
DataProvider::AbstractDataProvider | getDataProvider (HTTPClient rest)
| returns a data provider object for this connection, if supported by any REST schema validator object
hash< RestExampleRequestInfo > | getExampleRequest (string method, string path, *softlist< string > content_types)
| returns a hash of example message information for the given request
hash< RestExampleResponseInfo > | getExampleResponse (string method, string path, int code, *softlist< string > content_types)
| returns a hash of example message information for the given request
string | getHash ()
| returns a unique hash for the schema that can be used to compare schemas
hash< string, list< string > > | getPathOperationHash ()
| returns a hash of URI paths as keys with values as lists of supported HTTP methods
hash< RestQoreExampleCodeInfo > | getQoreExampleRequest (string method, string path)
| returns a hash of example Qore code for the given request
hash< RestQoreExampleCodeInfo > | getQoreExampleResponse (string method, string path, int code)
| returns example Qore code for the given response
string | getTargetUrl ()
| returns the target URL for the schema
*TimeZone | getTimeZoneLocale ()
| Returns the time zone locale used for serialization / deserialization.
bool | managesUriPath ()
| returns True if the provider manages the URI path
hash< RestRequestServerInfo > | parseRequest (string method, string path, *data http_body, reference< hash< auto > > headers)
| processes and parses a client request and returns the deserialized message body (if any)
hash< RestResponseClientInfo > | parseResponse (string method, string path, int code, *data response_body, hash< auto > hdr)
| parses and validates the response from the server and returns a hash of the processed info
hash< RestRequestClientInfo > | processRequest (string method, string path, auto body, *hash< auto > headers, *softlist< string > content_types)
| processes a client-side REST request and returns a hash that can be used to make the outgoing client-side HTTP request
hash< HttpResponseInfo > | processResponse (string method, string path, int code, auto response_body, *hash< auto > headers, *softlist< string > content_types)
| Processes a REST response with a serialized message body.
| setBasePath (string basePath)
| overrides the basePath value
| setTimeZoneLocale (*TimeZone tz)
| Allows the time zone locale to be set for serialization / deserialization.

## Protected Member Functions
abstract string | getBasePathImpl ()
| returns the base path prefix for all requests in this schema
DataProvider::AbstractDataProvider | getDataProviderImpl (HTTPClient rest)
| returns a data provider object for this connection, if supported by any REST schema validator object
abstract hash< RestExampleRequestInfo > | getExampleRequestImpl (string method, string path, *softlist< string > content_types)
| returns a hash of example message information for the given request
abstract hash< RestExampleResponseInfo > | getExampleResponseImpl (string method, string path, int code, *softlist< string > content_types)
| returns a hash of example message information for the given request
abstract string | getHashImpl ()
| returns a unique hash for the schema that can be used to compare schemas
abstract hash< string, list< string > > | getPathOperationHashImpl ()
| returns a hash of URI paths as keys with values as lists of supported HTTP methods
abstract hash< RestQoreExampleCodeInfo > | getQoreExampleRequestImpl (string method, string path)
| returns a hash of example Qore code for the given request
abstract hash< RestQoreExampleCodeInfo > | getQoreExampleResponseImpl (string method, string path, int code)
| returns example Qore code for the given response
abstract string | getTargetUrlImpl ()
| returns the target URL for the schema
abstract *TimeZone | getTimeZoneLocaleImpl ()
| Returns the time zone locale used for serialization / deserialization.
abstract hash< RestRequestServerInfo > | parseRequestImpl (string method, string path, *data http_body, reference< hash > headers)
| processes and parses a client request and returns the deserialized message body (if any)
abstract hash< RestResponseClientInfo > | parseResponseImpl (string method, string path, int code, *data response_body, hash< auto > hdr)
| parses and validates the response from the server and returns a hash of the processed info
abstract hash< RestRequestClientInfo > | processRequestImpl (string method, string path, auto body, *hash< auto > headers, *softlist< string > content_types)
| processes a client-side REST request and returns a hash that can be used to make the outgoing client-side HTTP request
abstract hash< HttpResponseInfo > | processResponseImpl (string method, string path, int code, auto response_body, *hash< auto > headers, *softlist< string > content_types)
| processes a REST response with a serialized message body, validates any response data against schema definitions if possible
abstract | setBasePathImpl (string basePath)
| overrides the basePath value
abstract | setTimeZoneLocaleImpl (*TimeZone tz)
| Allows the time zone locale to be set for serialization / deserialization.

## Detailed Description

abstract REST schema validation classes

## Member Function Documentation

## ◆ getBasePath()

string RestSchemaValidator::AbstractRestSchemaValidator::getBasePath | ( |  | ) |

returns the base path prefix for all requests in this schema

Returns
  the base path prefix for all requests in this schema

## ◆ getBasePathImpl()

abstract string RestSchemaValidator::AbstractRestSchemaValidator::getBasePathImpl | ( |  | ) |
| protected

returns the base path prefix for all requests in this schema

Returns
  the base path prefix for all requests in this schema

## ◆ getDataProvider()

DataProvider::AbstractDataProvider RestSchemaValidator::AbstractRestSchemaValidator::getDataProvider | ( | HTTPClient | rest | ) |

returns a data provider object for this connection, if supported by any REST schema validator object

Parameters

  rest | the `RestClient` object to make the connection

Returns
  a data provider object for this connection, if supported by any REST schema validator object

Exceptions

  DATA-PROVIDER-ERROR | this class does not support the data provider API

Note
  rest must be a `RestClient` object; this parameter is declared with a base class to avoid a circular dependency between modules

## ◆ getDataProviderImpl()

DataProvider::AbstractDataProvider RestSchemaValidator::AbstractRestSchemaValidator::getDataProviderImpl | ( | HTTPClient | rest | ) |
| protected

returns a data provider object for this connection, if supported by any REST schema validator object

Parameters

  rest | the `RestClient` object to make the connection

Returns
  a data provider object for this connection, if supported by any REST schema validator object

Exceptions

  DATA-PROVIDER-ERROR | this class does not support the data provider API

Note
  rest must be a `RestClient` object; this parameter is declared with a base class to avoid a circular dependency between modules

## ◆ getExampleRequest()

hash< RestExampleRequestInfo > RestSchemaValidator::AbstractRestSchemaValidator::getExampleRequest | ( | string | method,
|  | string | path,
|  | *softlist< string > | content_types )

returns a hash of example message information for the given request

Parameters

  method | the HTTP method (case insensitive)
  path | the URI path of the request
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown

Returns
  a RestExampleRequestInfo of example message information for the given request

## ◆ getExampleRequestImpl()

abstract hash< RestExampleRequestInfo > RestSchemaValidator::AbstractRestSchemaValidator::getExampleRequestImpl | ( | string | method,
|  | string | path,
|  | *softlist< string > | content_types )
| protected

returns a hash of example message information for the given request

Parameters

  method | the HTTP method (case insensitive)
  path | the URI path of the request
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown

Returns
  a RestExampleRequestInfo of example message information for the given request

## ◆ getExampleResponse()

hash< RestExampleResponseInfo > RestSchemaValidator::AbstractRestSchemaValidator::getExampleResponse | ( | string | method,
|  | string | path,
|  | int | code,
|  | *softlist< string > | content_types )

returns a hash of example message information for the given request

Parameters

  method | the HTTP method of the original request (case insensitive)
  path | the URI path of the original request
  code | the HTTP response code of the response
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown

Returns
  a RestExampleResponseInfo hash giving example response message info

## ◆ getExampleResponseImpl()

abstract hash< RestExampleResponseInfo > RestSchemaValidator::AbstractRestSchemaValidator::getExampleResponseImpl | ( | string | method,
|  | string | path,
|  | int | code,
|  | *softlist< string > | content_types )
| protected

returns a hash of example message information for the given request

Parameters

  method | the HTTP method of the original request (case insensitive)
  path | the URI path of the original request
  code | the HTTP response code of the response
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown

Returns
  a RestExampleResponseInfo hash giving example response message info

## ◆ getHash()

string RestSchemaValidator::AbstractRestSchemaValidator::getHash | ( |  | ) |

returns a unique hash for the schema that can be used to compare schemas

Returns
  a unique hash for the schema that can be used to compare schemas

Since
  RestSchemaValidator 2.0

## ◆ getHashImpl()

abstract string RestSchemaValidator::AbstractRestSchemaValidator::getHashImpl | ( |  | ) |
| protected

returns a unique hash for the schema that can be used to compare schemas

Returns
  a unique hash for the schema that can be used to compare schemas

Since
  RestSchemaValidator 2.0

## ◆ getPathOperationHash()

hash< string, list< string > > RestSchemaValidator::AbstractRestSchemaValidator::getPathOperationHash | ( |  | ) |

returns a hash of URI paths as keys with values as lists of supported HTTP methods

Returns
  a hash of URI paths as keys with values as lists of supported HTTP methods

## ◆ getPathOperationHashImpl()

abstract hash< string, list< string > > RestSchemaValidator::AbstractRestSchemaValidator::getPathOperationHashImpl | ( |  | ) |
| protected

returns a hash of URI paths as keys with values as lists of supported HTTP methods

Returns
  a hash of URI paths as keys with values as lists of supported HTTP methods

## ◆ getQoreExampleRequest()

hash< RestQoreExampleCodeInfo > RestSchemaValidator::AbstractRestSchemaValidator::getQoreExampleRequest | ( | string | method,
|  | string | path )

returns a hash of example Qore code for the given request

Parameters

  method | the HTTP method (case insensitive)
  path | the URI path of the request

Returns
  a RestQoreExampleCodeInfo hash giving example Qore code to generate the given request message

## ◆ getQoreExampleRequestImpl()

abstract hash< RestQoreExampleCodeInfo > RestSchemaValidator::AbstractRestSchemaValidator::getQoreExampleRequestImpl | ( | string | method,
|  | string | path )
| protected

returns a hash of example Qore code for the given request

Parameters

  method | the HTTP method (case insensitive)
  path | the URI path of the request

Returns
  a RestQoreExampleCodeInfo hash giving example Qore code to generate the given request message

## ◆ getQoreExampleResponse()

hash< RestQoreExampleCodeInfo > RestSchemaValidator::AbstractRestSchemaValidator::getQoreExampleResponse | ( | string | method,
|  | string | path,
|  | int | code )

returns example Qore code for the given response

Parameters

  method | the HTTP method of the original request (case insensitive)
  path | the URI path of the original request
  code | the HTTP response code of the response

Returns
  a RestQoreExampleCodeInfo hash giving example Qore code to generate the given response message

## ◆ getQoreExampleResponseImpl()

abstract hash< RestQoreExampleCodeInfo > RestSchemaValidator::AbstractRestSchemaValidator::getQoreExampleResponseImpl | ( | string | method,
|  | string | path,
|  | int | code )
| protected

returns example Qore code for the given response

Parameters

  method | the HTTP method of the original request (case insensitive)
  path | the URI path of the original request
  code | the HTTP response code of the response

Returns
  a RestQoreExampleCodeInfo hash giving example Qore code to generate the given response message

## ◆ getTargetUrl()

string RestSchemaValidator::AbstractRestSchemaValidator::getTargetUrl | ( |  | ) |

returns the target URL for the schema

Returns
  the target URL for the schema

Exceptions

  MISSING-TARGET-URL | no target URL provided for the schema

## ◆ getTargetUrlImpl()

abstract string RestSchemaValidator::AbstractRestSchemaValidator::getTargetUrlImpl | ( |  | ) |
| protected

returns the target URL for the schema

Returns
  the target URL for the schema

Exceptions

  MISSING-TARGET-URL | no target URL provided for the schema

## ◆ getTimeZoneLocale()

*TimeZone RestSchemaValidator::AbstractRestSchemaValidator::getTimeZoneLocale | ( |  | ) |

Returns the time zone locale used for serialization / deserialization.

Returns
  the time zone locale to set

Since
  RestSchemaValidator 2.1.3

## ◆ getTimeZoneLocaleImpl()

abstract *TimeZone RestSchemaValidator::AbstractRestSchemaValidator::getTimeZoneLocaleImpl | ( |  | ) |
| protected

Returns the time zone locale used for serialization / deserialization.

Returns
  the time zone locale to set

Since
  RestSchemaValidator 2.1.3

## ◆ managesUriPath()

bool RestSchemaValidator::AbstractRestSchemaValidator::managesUriPath | ( |  | ) |

returns True if the provider manages the URI path

The base class method returns True by default, override in child classes to return False

## ◆ parseRequest()

hash< RestRequestServerInfo > RestSchemaValidator::AbstractRestSchemaValidator::parseRequest | ( | string | method,
|  | string | path,
|  | *data | http_body,
|  | reference< hash< auto > > | headers )

processes and parses a client request and returns the deserialized message body (if any)

Parameters

  method | the HTTP method (case-insensitive)
  path | the URI path with any query arguments
  http_body | the serialized message body
  headers | a reference to the hash of HTTP headers received; any default header values to be assumed by the server for the request will be added here

Returns
  a RestRequestServerInfo hash of request information

Exceptions

  DESERIALIZATION-ERROR | the request body could not be deserialized, results in a `400 Bad Request` response returned to the caller
  SCHEMA-VALIDATION-ERROR | this exception should be thrown if there is a validation error in the request so that a `400 Bad Request` response can be returned to the caller
  INVALID-METHOD | invalid HTTP method for the request; the `arg` argument should have a list of acceptable HTTP methods for this request

## ◆ parseRequestImpl()

abstract hash< RestRequestServerInfo > RestSchemaValidator::AbstractRestSchemaValidator::parseRequestImpl | ( | string | method,
|  | string | path,
|  | *data | http_body,
|  | reference< hash > | headers )
| protected

processes and parses a client request and returns the deserialized message body (if any)

Parameters

  method | the HTTP method (case-insensitive)
  path | the URI path with any query arguments
  http_body | the serialized message body
  headers | a reference to the hash of HTTP headers received; any default header values to be assumed by the server for the request will be added here

Returns
  a RestRequestServerInfo hash of request information

Exceptions

  DESERIALIZATION-ERROR | the request body could not be deserialized, results in a `400 Bad Request` response returned to the caller
  SCHEMA-VALIDATION-ERROR | this exception should be thrown if there is a validation error in the request so that a `400 Bad Request` response can be returned to the caller
  INVALID-METHOD | invalid HTTP method for the request; the `arg` argument should have a list of acceptable HTTP methods for this request

## ◆ parseResponse()

hash< RestResponseClientInfo > RestSchemaValidator::AbstractRestSchemaValidator::parseResponse | ( | string | method,
|  | string | path,
|  | int | code,
|  | *data | response_body,
|  | hash< auto > | hdr )

parses and validates the response from the server and returns a hash of the processed info

Parameters

  method | the HTTP method (case insensitive)
  path | the URI path of the original request (without any query arguments)
  code | the HTTP response code
  response_body | the HTTP response body data (if any)
  hdr | as hash of HTTP headers received

Exceptions

  DESERIALIZATION-ERROR | the request body could not be deserialized or had an invalid `Content-Type`

## ◆ parseResponseImpl()

abstract hash< RestResponseClientInfo > RestSchemaValidator::AbstractRestSchemaValidator::parseResponseImpl | ( | string | method,
|  | string | path,
|  | int | code,
|  | *data | response_body,
|  | hash< auto > | hdr )
| protected

parses and validates the response from the server and returns a hash of the processed info

Parameters

  method | the HTTP method (case insensitive)
  path | the URI path of the original request (without any query arguments)
  code | the HTTP response code
  response_body | the HTTP response body data (if any)
  hdr | as hash of HTTP headers received

Exceptions

  DESERIALIZATION-ERROR | the request body could not be deserialized or had an invalid `Content-Type`

## ◆ processRequest()

hash< RestRequestClientInfo > RestSchemaValidator::AbstractRestSchemaValidator::processRequest | ( | string | method,
|  | string | path,
|  | auto | body,
|  | *hash< auto > | headers,
|  | *softlist< string > | content_types )

processes a client-side REST request and returns a hash that can be used to make the outgoing client-side HTTP request

Parameters

  method | the HTTP method (case-insensitive)
  path | the URI path with any query arguments
  body | the unserialized message body data
  headers | any headers to include in the request; note that the `Content-Type` header should not be sent here as it will be overridden when the message is serialized
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown

Returns
  a RestRequestClientInfo hash with information about the request

Exceptions

  SERIALIZATION-ERROR | unsupported message body MIME type requested or missing serialization module

## ◆ processRequestImpl()

abstract hash< RestRequestClientInfo > RestSchemaValidator::AbstractRestSchemaValidator::processRequestImpl | ( | string | method,
|  | string | path,
|  | auto | body,
|  | *hash< auto > | headers,
|  | *softlist< string > | content_types )
| protected

processes a client-side REST request and returns a hash that can be used to make the outgoing client-side HTTP request

Parameters

  method | the HTTP method (case-insensitive)
  path | the URI path with any query arguments
  body | the unserialized message body data
  headers | any headers to include in the request; note that the `Content-Type` header should not be sent here as it will be overridden when the message is serialized
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown

Returns
  a RestRequestClientInfo hash with information about the request

Exceptions

  SERIALIZATION-ERROR | unsupported message body MIME type requested or missing serialization module

## ◆ processResponse()

hash< HttpResponseInfo > RestSchemaValidator::AbstractRestSchemaValidator::processResponse | ( | string | method,
|  | string | path,
|  | int | code,
|  | auto | response_body,
|  | *hash< auto > | headers,
|  | *softlist< string > | content_types )

Processes a REST response with a serialized message body.

Validates any response data against schema definitions if possible

Parameters

  method | the HTTP method of the original request
  path | the URI path of the original request (without query arguments)
  code | the HTTP response code
  response_body | the response body data (if any)
  headers | HTTP headers to include in the response
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown; if this argument is not present, then json is preferred over yaml

Returns
  an HttpServer::HttpResponseInfo hash for the response

Exceptions

  ACCEPT-ERROR | the response body could not be serialized because the client does not accept a supported type
  SERIALIZATION-ERROR | the response body could not be serialized due to an error

Note
  <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html>RFC 2616 section 14</a>: If an \c Accept header field is present, and if the server cannot send a response which is acceptable according to the combined \c Accept field value, then the server SHOULD send a 406 (not acceptable) response. To ensure this happens, if an \c Accept error of this nature occurs in this call, an \c "ACCEPT-ERROR" must be thrown

## ◆ processResponseImpl()

abstract hash< HttpResponseInfo > RestSchemaValidator::AbstractRestSchemaValidator::processResponseImpl | ( | string | method,
|  | string | path,
|  | int | code,
|  | auto | response_body,
|  | *hash< auto > | headers,
|  | *softlist< string > | content_types )
| protected

processes a REST response with a serialized message body, validates any response data against schema definitions if possible

Parameters

  method | the HTTP method of the original request
  path | the URI path of the original request (without query arguments)
  code | the HTTP response code
  response_body | the response body data (if any)
  headers | HTTP headers to include in the response
  content_types | the desired MIME types for serialization in order of preference; if none are usable then an exception is thrown; if this argument is not present, then json is preferred over yaml

Returns
  an HttpResponseInfo hash for the response

Exceptions

  ACCEPT-ERROR | the response body could not be serialized because the client does not accept a supported type
  SERIALIZATION-ERROR | the response body could not be serialized due to an error

Note
  <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html>RFC 2616 section 14</a>: If an Accept header field is present, and if the server cannot send a response which is acceptable according to the combined Accept field value, then the server SHOULD send a 406 (not acceptable) response. To ensure this happens, if an Accept error of this nature occurs in this call, an \c "ACCEPT-ERROR" must be thrown

## ◆ setBasePath()

RestSchemaValidator::AbstractRestSchemaValidator::setBasePath | ( | string | basePath | ) |

overrides the basePath value

Parameters

  basePath | the new base path value; use an empty string here to clear the basePath

## ◆ setBasePathImpl()

abstract RestSchemaValidator::AbstractRestSchemaValidator::setBasePathImpl | ( | string | basePath | ) |
| protected

overrides the basePath value

Parameters

  basePath | the new base path value; use an empty string here to clear the basePath

## ◆ setTimeZoneLocale()

RestSchemaValidator::AbstractRestSchemaValidator::setTimeZoneLocale | ( | *TimeZone | tz | ) |

Allows the time zone locale to be set for serialization / deserialization.

Parameters

  tz | the time zone locale to set

Since
  RestSchemaValidator 2.1.3

## ◆ setTimeZoneLocaleImpl()

abstract RestSchemaValidator::AbstractRestSchemaValidator::setTimeZoneLocaleImpl | ( | *TimeZone | tz | ) |
| protected

Allows the time zone locale to be set for serialization / deserialization.

Parameters

  tz | the time zone locale to set

Since
  RestSchemaValidator 2.1.3