Qore RestSchemaValidator Module Reference  1.1
RestSchemaValidator::AbstractRestSchemaValidator Class Referenceabstract

abstract REST schema validation classes More...

Inheritance diagram for RestSchemaValidator::AbstractRestSchemaValidator:

Public Member Methods

string getBasePath ()
 returns the base path prefix for all requests in this schema 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...
 
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...
 
hash< RestRequestServerInfoparseRequest (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< RestResponseClientInfoparseResponse (string method, string path, int code, *data response_body, hash 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 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 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...
 

Private Member Methods

abstract string getBasePathImpl ()
 returns the base path prefix for all requests in this schema 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 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 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 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 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, any response_body, *hash 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...
 

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.

◆ 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.

◆ 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.

◆ parseRequest()

hash<RestRequestServerInfo> RestSchemaValidator::AbstractRestSchemaValidator::parseRequest ( string  method,
string  path,
*data  http_body,
reference< hash 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  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  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  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  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

Implemented in RestSchemaValidator::NullRestSchemaValidator.

◆ processResponse()

hash<HttpResponseInfo> RestSchemaValidator::AbstractRestSchemaValidator::processResponse ( string  method,
string  path,
int  code,
auto  response_body,
*hash  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 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

◆ processResponseImpl()

abstract hash<HttpResponseInfo> RestSchemaValidator::AbstractRestSchemaValidator::processResponseImpl ( string  method,
string  path,
int  code,
any  response_body,
*hash  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

◆ 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.