Qore RestSchemaValidator Module Reference 2.2.1
Loading...
Searching...
No Matches
RestSchemaValidator::AbstractRestSchemaValidator Class Reference

abstract REST schema validation classes More...

#include <RestSchemaValidator.qm.dox.h>

Inheritance diagram for RestSchemaValidator::AbstractRestSchemaValidator:
[legend]

Public Member Methods

 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< RestExampleRequestInfogetExampleRequest (string method, string path, *softlist< string > content_types)
 returns a hash of example message information for the given request
 
hash< RestExampleResponseInfogetExampleResponse (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< RestQoreExampleCodeInfogetQoreExampleRequest (string method, string path)
 returns a hash of example Qore code for the given request
 
hash< RestQoreExampleCodeInfogetQoreExampleResponse (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< RestRequestServerInfoparseRequest (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< RestResponseClientInfoparseResponse (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< RestRequestClientInfoprocessRequest (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.
 

Private Member Methods

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< RestExampleRequestInfogetExampleRequestImpl (string method, string path, *softlist< string > content_types)
 returns a hash of example message information for the given request
 
abstract hash< RestExampleResponseInfogetExampleResponseImpl (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< RestQoreExampleCodeInfogetQoreExampleRequestImpl (string method, string path)
 returns a hash of example Qore code for the given request
 
abstract hash< RestQoreExampleCodeInfogetQoreExampleResponseImpl (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< RestRequestServerInfoparseRequestImpl (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< RestResponseClientInfoparseResponseImpl (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< RestRequestClientInfoprocessRequestImpl (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 ( )
private

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
restthe 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-ERRORthis 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)
private

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

Parameters
restthe 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-ERRORthis 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
methodthe HTTP method (case insensitive)
paththe URI path of the request
content_typesthe 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 
)
private

returns a hash of example message information for the given request

Parameters
methodthe HTTP method (case insensitive)
paththe URI path of the request
content_typesthe 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
methodthe HTTP method of the original request (case insensitive)
paththe URI path of the original request
codethe HTTP response code of the response
content_typesthe 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 
)
private

returns a hash of example message information for the given request

Parameters
methodthe HTTP method of the original request (case insensitive)
paththe URI path of the original request
codethe HTTP response code of the response
content_typesthe 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 ( )
private

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 ( )
private

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
methodthe HTTP method (case insensitive)
paththe 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 
)
private

returns a hash of example Qore code for the given request

Parameters
methodthe HTTP method (case insensitive)
paththe 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
methodthe HTTP method of the original request (case insensitive)
paththe URI path of the original request
codethe 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 
)
private

returns example Qore code for the given response

Parameters
methodthe HTTP method of the original request (case insensitive)
paththe URI path of the original request
codethe 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-URLno target URL provided for the schema

◆ getTargetUrlImpl()

abstract string RestSchemaValidator::AbstractRestSchemaValidator::getTargetUrlImpl ( )
private

returns the target URL for the schema

Returns
the target URL for the schema
Exceptions
MISSING-TARGET-URLno 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 ( )
private

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
methodthe HTTP method (case-insensitive)
paththe URI path with any query arguments
http_bodythe serialized message body
headersa 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-ERRORthe request body could not be deserialized, results in a 400 Bad Request response returned to the caller
SCHEMA-VALIDATION-ERRORthis 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-METHODinvalid 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 
)
private

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

Parameters
methodthe HTTP method (case-insensitive)
paththe URI path with any query arguments
http_bodythe serialized message body
headersa 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-ERRORthe request body could not be deserialized, results in a 400 Bad Request response returned to the caller
SCHEMA-VALIDATION-ERRORthis 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-METHODinvalid 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
methodthe HTTP method (case insensitive)
paththe URI path of the original request (without any query arguments)
codethe HTTP response code
response_bodythe HTTP response body data (if any)
hdras hash of HTTP headers received
Exceptions
DESERIALIZATION-ERRORthe 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 
)
private

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

Parameters
methodthe HTTP method (case insensitive)
paththe URI path of the original request (without any query arguments)
codethe HTTP response code
response_bodythe HTTP response body data (if any)
hdras hash of HTTP headers received
Exceptions
DESERIALIZATION-ERRORthe 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
methodthe HTTP method (case-insensitive)
paththe URI path with any query arguments
bodythe unserialized message body data
headersany 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_typesthe 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-ERRORunsupported 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 
)
private

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

Parameters
methodthe HTTP method (case-insensitive)
paththe URI path with any query arguments
bodythe unserialized message body data
headersany 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_typesthe 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-ERRORunsupported 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
methodthe HTTP method of the original request
paththe URI path of the original request (without query arguments)
codethe HTTP response code
response_bodythe response body data (if any)
headersHTTP headers to include in the response
content_typesthe 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-ERRORthe response body could not be serialized because the client does not accept a supported type
SERIALIZATION-ERRORthe 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 
)
private

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

Parameters
methodthe HTTP method of the original request
paththe URI path of the original request (without query arguments)
codethe HTTP response code
response_bodythe response body data (if any)
headersHTTP headers to include in the response
content_typesthe 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-ERRORthe response body could not be serialized because the client does not accept a supported type
SERIALIZATION-ERRORthe 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
basePaththe new base path value; use an empty string here to clear the basePath

◆ setBasePathImpl()

abstract RestSchemaValidator::AbstractRestSchemaValidator::setBasePathImpl ( string  basePath)
private

overrides the basePath value

Parameters
basePaththe 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
tzthe time zone locale to set
Since
RestSchemaValidator 2.1.3

◆ setTimeZoneLocaleImpl()

abstract RestSchemaValidator::AbstractRestSchemaValidator::setTimeZoneLocaleImpl ( *TimeZone  tz)
private

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

Parameters
tzthe time zone locale to set
Since
RestSchemaValidator 2.1.3