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

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 More...
 
DataProvider::AbstractDataProvider getDataProvider (HTTPClient rest)
 returns a data provider object for this connection, if supported by any REST schema validator object More...
 
hash< RestExampleRequestInfogetExampleRequest (string method, string path, *softlist< string > content_types)
 returns a hash of example message information for the given request More...
 
hash< RestExampleResponseInfogetExampleResponse (string method, string path, int code, *softlist< string > content_types)
 returns a hash of example message information for the given request More...
 
string getHash ()
 returns a unique hash for the schema that can be used to compare schemas More...
 
hash< string, list< string > > getPathOperationHash ()
 returns a hash of URI paths as keys with values as lists of supported HTTP methods More...
 
hash< RestQoreExampleCodeInfogetQoreExampleRequest (string method, string path)
 returns a hash of example Qore code for the given request More...
 
hash< RestQoreExampleCodeInfogetQoreExampleResponse (string method, string path, int code)
 returns example Qore code for the given response More...
 
string getTargetUrl ()
 returns the target URL for the schema More...
 
*TimeZone getTimeZoneLocale ()
 Returns the time zone locale used for serialization / deserialization. More...
 
bool managesUriPath ()
 returns True if the provider manages the URI path More...
 
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) More...
 
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 More...
 
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 More...
 
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. More...
 
 setBasePath (string basePath)
 overrides the basePath value More...
 
 setTimeZoneLocale (*TimeZone tz)
 Allows the time zone locale to be set for serialization / deserialization. More...
 

Private Member Methods

abstract string getBasePathImpl ()
 returns the base path prefix for all requests in this schema More...
 
DataProvider::AbstractDataProvider getDataProviderImpl (HTTPClient rest)
 returns a data provider object for this connection, if supported by any REST schema validator object More...
 
abstract hash< RestExampleRequestInfogetExampleRequestImpl (string method, string path, *softlist< string > content_types)
 returns a hash of example message information for the given request More...
 
abstract hash< RestExampleResponseInfogetExampleResponseImpl (string method, string path, int code, *softlist< string > content_types)
 returns a hash of example message information for the given request More...
 
abstract string getHashImpl ()
 returns a unique hash for the schema that can be used to compare schemas More...
 
abstract hash< string, list< string > > getPathOperationHashImpl ()
 returns a hash of URI paths as keys with values as lists of supported HTTP methods More...
 
abstract hash< RestQoreExampleCodeInfogetQoreExampleRequestImpl (string method, string path)
 returns a hash of example Qore code for the given request More...
 
abstract hash< RestQoreExampleCodeInfogetQoreExampleResponseImpl (string method, string path, int code)
 returns example Qore code for the given response More...
 
abstract string getTargetUrlImpl ()
 returns the target URL for the schema More...
 
abstract *TimeZone getTimeZoneLocaleImpl ()
 Returns the time zone locale used for serialization / deserialization. More...
 
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) More...
 
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 More...
 
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 More...
 
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 More...
 
abstract setBasePathImpl (string basePath)
 overrides the basePath value More...
 
abstract setTimeZoneLocaleImpl (*TimeZone tz)
 Allows the time zone locale to be set for serialization / deserialization. More...
 

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 ( )
privatepure virtual

returns the base path prefix for all requests in this schema

Returns
the base path prefix for all requests in this schema

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 ( )
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 ( )
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 ( )
privatepure virtual

returns the target URL for the schema

Returns
the target URL for the schema
Exceptions
MISSING-TARGET-URLno target URL provided for the schema

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 ( )
privatepure virtual

Returns the time zone locale used for serialization / deserialization.

Returns
the time zone locale to set
Since
RestSchemaValidator 2.1.3

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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 
)
privatepure virtual

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 
)
privatepure virtual

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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)
privatepure virtual

overrides the basePath value

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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ 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)
privatepure virtual

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

Parameters
tzthe time zone locale to set
Since
RestSchemaValidator 2.1.3

Implemented in RestSchemaValidator::NullRestSchemaValidator.