RestHandler::AbstractRestClass Class Referenceabstract

the base abstract class for REST handler classes More...

Inheritance diagram for RestHandler::AbstractRestClass:
[legend]

## Public Member Functions

hash< HttpServer::HttpHandlerResponseInfo > | handleRequest (HttpListenerInterface listener, RestHandler rh, Socket s, *list cl, string mn, hash cx, *hash args)
| this method is called by the RestHandler class to match the right object with incoming requests
abstract string | name ()
| this provides the name of the REST class
*AbstractRestClass | subClass (string name, hash cx, *hash args)
| this method will be called to find a sub-class (ie with GET /invoices/1 - if this class represents "invoices", then subClass("1") will be called to return invoice 1; return NOTHING if the object doesn't exist More...

## Private Member Functions

hash< HttpServer::HttpHandlerResponseInfo > | dispatch (RestHandler rh, string mn, *hash ah, hash cx)
| this method is called to dispatch requests on the given object More...
hash< HttpServer::HttpHandlerResponseInfo > | dispatchStream (HttpListenerInterface listener, RestHandler rh, Socket s, string mn, *hash ah, hash cx)
| this method is called to dispatch streamed requests on the given object
hash< HttpServer::HttpHandlerResponseInfo > | unknownSubClassError (string n_name)
| returns a 404 Not Found response when a request tries to access an unknown subclass

## Detailed Description

the base abstract class for REST handler classes

## Member Function Documentation

## dispatch()

hash<HttpServer::HttpHandlerResponseInfo> RestHandler::AbstractRestClass::dispatch | ( | RestHandler | rh,
|  | string | mn,
|  | *hash | ah,
|  | hash | cx
| ) |  |

private

this method is called to dispatch requests on the given object

Parameters

  rh | the RestHandler object
  mn | the method name
  ah | the holds URI and / or message body arguments for the REST call

  cx

  call context hash; this hash will have the following keys:
  - `socket:` the bind address used to bind the listener (`"socket-info"` provides more detailed information)
  - `socket-info`: a hash of socket information for the listening socket (as returned by Qore::Socket::getSocketInfo())
  - `peer-info`: a hash of socket information for the remote socket (as returned by Qore::Socket::getPeerInfo())
  - `url:` a hash of broken-down URL information (as returned from parse_url())
  - `id:` the unique HTTP connection ID
  - `ssl:` True if the request was encrypted with HTTPS, False if not
  - `listener-id`: the HTTP server listener ID (see HttpServer::HttpServer::getListenerInfo())

Returns
  the return value is the same as the return value for HttpServer::AbstractHttpRequestHandler::handleRequest()

## subClass()

*AbstractRestClass RestHandler::AbstractRestClass::subClass | ( | string | name,
|  | hash | cx,
|  | *hash | args
| ) |  |

this method will be called to find a sub-class (ie with GET /invoices/1 - if this class represents "invoices", then subClass("1") will be called to return invoice 1; return NOTHING if the object doesn't exist

Parameters

  name | the name of the subclass

  cx

  call context hash; this hash will have the following keys:
  - `socket:` the bind address used to bind the listener (`"socket-info"` provides more detailed information)
  - `socket-info`: a hash of socket information for the listening socket (as returned by Qore::Socket::getSocketInfo())
  - `peer-info`: a hash of socket information for the remote socket (as returned by Qore::Socket::getPeerInfo())
  - `url:` a hash of broken-down URL information (as returned from parse_url())
  - `id:` the unique HTTP connection ID
  - `ssl:` True if the request was encrypted with HTTPS, False if not
  - `listener-id`: the HTTP server listener ID (see HttpServer::HttpServer::getListenerInfo())
  - `hdr:` a hash of header information as returned by Qore::Socket::readHTTPHeader()
  - `body:` the deserialized message body
  - `aih:` a hash of `"Accept"` values

  args | any URI arguments in the request

Returns
  an object corresponding to the `name` argument or NOTHING if none can be matched