Qore RestSchemaValidator Module Reference  2.1.1
RestSchemaValidator::NullRestSchemaValidator Class Reference

null REST validator; no schema is used but default serialization and deserialization is performed More...

Inheritance diagram for RestSchemaValidator::NullRestSchemaValidator:

Public Member Methods

bool managesUriPath ()
 returns True if the provider manages the URI path More...
 
- Public Member Methods inherited from RestSchemaValidator::AbstractRestSchemaValidator
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...
 
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, validates any response data against schema definitions if possible More...
 
 setBasePath (string basePath)
 overrides the basePath value More...
 

Public Attributes

const DataDeserializationSupport = ...
 Data deserialization support MIME types to codes and de/serialization functions.
 
const DataSerializationSupport = ...
 Data serialization support mapping codes to MIME types and de/serialization functions.
 
const NullSchemaHashStr = "<null rest schema>"
 a unique hash for the null schema More...
 

Private Member Methods

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

Private:Internal Member Methods

bool checkResponseContentTypeHeader (reference< hash< HttpResponseInfo >> resp, auto body, *hash< auto > headers, *softlist< string > content_types)
 Check if the headers contain a content-type header which is accepted and if so, modify the response hash. More...
 

Detailed Description

null REST validator; no schema is used but default serialization and deserialization is performed

Member Function Documentation

◆ checkResponseContentTypeHeader()

bool RestSchemaValidator::NullRestSchemaValidator::checkResponseContentTypeHeader ( reference< hash< HttpResponseInfo >>  resp,
auto  body,
*hash< auto >  headers,
*softlist< string content_types 
)
private:internal

Check if the headers contain a content-type header which is accepted and if so, modify the response hash.

Parameters
respresponse hash
bodyresponse body data (if any)
headersHTTP headers to include in the response
content_typesthe accepted MIME types in order of preference
Returns
whether the headers contained a Content-Type header and the rv was modified
Note
if there are more Content-Type headers, then False is returned and response is not modified

◆ getBasePathImpl()

string RestSchemaValidator::NullRestSchemaValidator::getBasePathImpl ( )
privatevirtual

returns the base path prefix for all requests in this schema

Returns
the base path prefix for all requests in this schema

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getExampleRequestImpl()

hash<RestExampleRequestInfo> RestSchemaValidator::NullRestSchemaValidator::getExampleRequestImpl ( string  method,
string  path,
*softlist< string content_types 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getExampleResponseImpl()

hash<RestExampleResponseInfo> RestSchemaValidator::NullRestSchemaValidator::getExampleResponseImpl ( string  method,
string  path,
int  code,
*softlist< string content_types 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getHashImpl()

string RestSchemaValidator::NullRestSchemaValidator::getHashImpl ( )
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getPathOperationHashImpl()

hash<string, list<string> > RestSchemaValidator::NullRestSchemaValidator::getPathOperationHashImpl ( )
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getQoreExampleRequestImpl()

hash<RestQoreExampleCodeInfo> RestSchemaValidator::NullRestSchemaValidator::getQoreExampleRequestImpl ( string  method,
string  path 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getQoreExampleResponseImpl()

hash<RestQoreExampleCodeInfo> RestSchemaValidator::NullRestSchemaValidator::getQoreExampleResponseImpl ( string  method,
string  path,
int  code 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ getTargetUrlImpl()

string RestSchemaValidator::NullRestSchemaValidator::getTargetUrlImpl ( )
privatevirtual

returns the target URL for the schema

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ managesUriPath()

bool RestSchemaValidator::NullRestSchemaValidator::managesUriPath ( )

returns True if the provider manages the URI path

This method returns False

◆ parseRequestImpl()

hash<RestRequestServerInfo> RestSchemaValidator::NullRestSchemaValidator::parseRequestImpl ( string  method,
string  path,
*data  http_body,
reference< hash headers 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ parseResponseImpl()

hash<RestResponseClientInfo> RestSchemaValidator::NullRestSchemaValidator::parseResponseImpl ( string  method,
string  path,
int  code,
*data  response_body,
hash< auto >  hdr 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ processRequestImpl()

hash<RestRequestClientInfo> RestSchemaValidator::NullRestSchemaValidator::processRequestImpl ( string  method,
string  path,
auto  body,
*hash< auto >  headers,
*softlist< string content_types 
)
privatevirtual

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

◆ processResponseImpl()

hash<HttpResponseInfo> RestSchemaValidator::NullRestSchemaValidator::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

◆ setBasePathImpl()

RestSchemaValidator::NullRestSchemaValidator::setBasePathImpl ( string  basePath)
privatevirtual

overrides the basePath value

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

Implements RestSchemaValidator::AbstractRestSchemaValidator.

Member Data Documentation

◆ NullSchemaHashStr

const RestSchemaValidator::NullRestSchemaValidator::NullSchemaHashStr = "<null rest schema>"

a unique hash for the null schema

Since
RestSchemaValidator 2.0