Loading...
Searching...
No Matches
GoogleDataProviderBase.qc.dox.h
// -*- mode: c++; indent-tabs-mode: nil -*-
namespace GoogleDataProvider {
class GoogleDataProviderBase : public DataProvider::AbstractDataProvider {
public:
const DiscoveryUrlBase = "https://discovery.googleapis.com/discovery/v1/apis";
const InitTimeout = 10s;
protected:
*GoogleRestClient::GoogleRestClient rest;
static hash<string, string> api_map;
static hash<string, hash<auto>> info_map;
static hash<string, hash<string, AbstractDataProviderType>> input_schema_map;
static hash<string, hash<string, AbstractDataProviderType>> output_schema_map;
// {request_type -> type, response_type -> type, http_method -> string, path -> string}
static hash<string, hash<auto>> request_map;
static Mutex m();
public:
constructor();
constructor(GoogleRestClient::GoogleRestClient rest);
setLogger(*LoggerInterface logger);
*hash<auto> prepareRequest(auto req, *hash<string, softstring> implicit_path_args, *bool backfill_request_body);
updateConnectionObjects(object conn, object connobj);
protected:
bool needsBackfillRequestBody();
public:
*hash<auto> prepareRequestIntern(AbstractDataProviderType request_type, auto req0, *hash<string, softstring> implicit_path_args, *bool backfill_request_body);
string getQueryValue(string key, AbstractDataProviderType type, auto val);
static string cap(string word);
protected:
hash<auto> backfillRequestBody(auto req);
public:
static GoogleRestClient::GoogleRestClient getRestConnection(*hash<auto> options);
static hash<auto> getRequestInfoForResource(string api, string resource);
static string getPathForSchema(string api, string resource);
static string getMethodForSchema(string api, string path);
static DataProvider::AbstractDataProviderType getResponseTypeForSchema(string api, string resource);
static DataProvider::AbstractDataProviderType getRequestTypeForSchema(string api, string resource, ...);
static checkResource(string api, list<string> resource_path);
static *hash<string, bool> getMethodsForResource(string api, list<string> resource_path, *hash<auto> path_args);
static DataProvider::AbstractDataProviderType getRequestTypeForSchemaArgs(string api, string path, *list<auto> args);
static DataProvider::AbstractDataProviderType getTypeForSchema(string api, string schema);
static DataProvider::AbstractDataProviderType getInputTypeForSchema(string api, string schema);
static hash<auto> getRequestInfo(string api);
protected:
static hash<auto> processRequests(string api, hash<auto> h, TypeResolverHelper unresolved);
public:
static hash<auto> processRequest(string key, hash<auto> info, TypeResolverHelper unresolved);
static hash<string, AbstractDataProviderType> getApi(string api);
static hash<string, AbstractDataProviderType> getInputSchemasForApi(string api);
static hash<string, AbstractDataProviderType> getInputSchemaMap(string api, hash<auto> api_info);
static hash<string, AbstractDataProviderType> getOutputSchemaMap(string api, hash<auto> api_info);
static hash<auto> getSchemaInfo(string api);
protected:
static AbstractDataProviderType makeTypeFromSchemaInfo(HashDataType type, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
public:
protected:
static AbstractDataProviderType makeTypeFromSchemaInfo(ListDataType type, string key, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
public:
protected:
static AbstractDataProviderType makeTypeFromSchemaInfo(QoreDataField field, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
public:
protected:
static AbstractDataProviderType makeTypeFromSchemaInfo(string key, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
public:
static ListDataType makeListFromSchemaInfo(string key, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
static HashDataType makeHashFromSchemaInfo(string key, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
static QoreDataField makeFieldFromProperty(HashDataType h, string key, hash<auto> info, TypeResolverHelper unresolved, *bool for_input);
static string getUrlForApi(string api, RestClient::RestClient rest);
};
};
namespace Priv {
class TypeResolverHelper {
public:
protected:
list<hash<auto>> lists;
list<hash<auto>> hashes;
list<hash<auto>> fields;
list<hash<auto>> requests;
list<hash<auto>> responses;
public:
addRequestTypeReference(string key, string ref, *bool required);
addResponseTypeReference(string key, string ref, *bool required);
AbstractDataProviderType addReference(HashDataType type, string ref, *bool required);
AbstractDataProviderType addReference(ListDataType type, string ref);
AbstractDataProviderType addReference(QoreDataField field, string ref);
resolve(hash<string, AbstractDataProviderType> schemas);
hash<auto> resolveRequests(string api, hash<auto> req, hash<string, hash<string, AbstractDataProviderType>> input_schema_map, hash<string, hash<string, AbstractDataProviderType>> output_schema_map);
static AbstractDataProviderType getType(string ref, hash<string, AbstractDataProviderType> schemas, *bool required);
};
};
GoogleDataProvider::GoogleDataProviderBase
The Google data provider base class.
Definition GoogleDataProviderBase.qc.dox.h:28
GoogleDataProvider::GoogleDataProviderBase::cap
static string cap(string word)
Returns the given word capitalized.
GoogleDataProvider::GoogleDataProviderBase::makeTypeFromSchemaInfo
static AbstractDataProviderType makeTypeFromSchemaInfo(ListDataType type, string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::getInputTypeForSchema
static DataProvider::AbstractDataProviderType getInputTypeForSchema(string api, string schema)
Returns an input / inbound data type for the given Google schema.
GoogleDataProvider::GoogleDataProviderBase::getResponseTypeForSchema
static DataProvider::AbstractDataProviderType getResponseTypeForSchema(string api, string resource)
Returns a response data type for the given API.
GoogleDataProvider::GoogleDataProviderBase::getRequestTypeForSchema
static DataProvider::AbstractDataProviderType getRequestTypeForSchema(string api, string resource,...)
Returns a request data type for the given API.
GoogleDataProvider::GoogleDataProviderBase::request_map
static hash< string, hash< auto > > request_map
schema cache; API -> request path ->
Definition GoogleDataProviderBase.qc.dox.h:55
GoogleDataProvider::GoogleDataProviderBase::m
static Mutex m()
schema cache lock
GoogleDataProvider::GoogleDataProviderBase::getApi
static hash< string, AbstractDataProviderType > getApi(string api)
Returns all output schemas for the given API.
GoogleDataProvider::GoogleDataProviderBase::input_schema_map
static hash< string, hash< string, AbstractDataProviderType > > input_schema_map
input schema cache; API -> schema name -> type
Definition GoogleDataProviderBase.qc.dox.h:48
GoogleDataProvider::GoogleDataProviderBase::getRequestTypeForSchemaArgs
static DataProvider::AbstractDataProviderType getRequestTypeForSchemaArgs(string api, string path, *list< auto > args)
Returns a data type for the given request.
GoogleDataProvider::GoogleDataProviderBase::prepareRequest
*hash< auto > prepareRequest(auto req, *hash< string, softstring > implicit_path_args, *bool backfill_request_body)
Prepares a request with a request type created from the Discovery API.
GoogleDataProvider::GoogleDataProviderBase::getMethodForSchema
static string getMethodForSchema(string api, string path)
Returns the HTTP method for the given API.
GoogleDataProvider::GoogleDataProviderBase::getRestConnection
static GoogleRestClient::GoogleRestClient getRestConnection(*hash< auto > options)
Returns a GoogleRestClient connection from the options.
GoogleDataProvider::GoogleDataProviderBase::makeHashFromSchemaInfo
static HashDataType makeHashFromSchemaInfo(string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a hash from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::makeTypeFromSchemaInfo
static AbstractDataProviderType makeTypeFromSchemaInfo(string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::prepareRequestIntern
*hash< auto > prepareRequestIntern(AbstractDataProviderType request_type, auto req0, *hash< string, softstring > implicit_path_args, *bool backfill_request_body)
Prepares a request with a request type created from the Discovery API.
GoogleDataProvider::GoogleDataProviderBase::output_schema_map
static hash< string, hash< string, AbstractDataProviderType > > output_schema_map
output schema cache; API -> schema name -> type
Definition GoogleDataProviderBase.qc.dox.h:51
GoogleDataProvider::GoogleDataProviderBase::rest
*GoogleRestClient::GoogleRestClient rest
The REST client object for API calls.
Definition GoogleDataProviderBase.qc.dox.h:39
GoogleDataProvider::GoogleDataProviderBase::getRequestInfo
static hash< auto > getRequestInfo(string api)
Returns all request types for the given API.
GoogleDataProvider::GoogleDataProviderBase::getUrlForApi
static string getUrlForApi(string api, RestClient::RestClient rest)
Returns the URL for the given API.
GoogleDataProvider::GoogleDataProviderBase::constructor
constructor()
Creates the object.
GoogleDataProvider::GoogleDataProviderBase::makeTypeFromSchemaInfo
static AbstractDataProviderType makeTypeFromSchemaInfo(HashDataType type, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::InitTimeout
const InitTimeout
Initialization I/O timeout.
Definition GoogleDataProviderBase.qc.dox.h:35
GoogleDataProvider::GoogleDataProviderBase::getTypeForSchema
static DataProvider::AbstractDataProviderType getTypeForSchema(string api, string schema)
Returns a data type for the given Google schema.
GoogleDataProvider::GoogleDataProviderBase::getInputSchemasForApi
static hash< string, AbstractDataProviderType > getInputSchemasForApi(string api)
Returns all input schemas for the given API.
GoogleDataProvider::GoogleDataProviderBase::backfillRequestBody
hash< auto > backfillRequestBody(auto req)
Used to set attributes in the request body that are not set in the request.
GoogleDataProvider::GoogleDataProviderBase::checkResource
static checkResource(string api, list< string > resource_path)
Check the given path for resources.
GoogleDataProvider::GoogleDataProviderBase::updateConnectionObjects
updateConnectionObjects(object conn, object connobj)
Update any connection used by the data provider.
GoogleDataProvider::GoogleDataProviderBase::getPathForSchema
static string getPathForSchema(string api, string resource)
Returns the path for the given API.
GoogleDataProvider::GoogleDataProviderBase::makeListFromSchemaInfo
static ListDataType makeListFromSchemaInfo(string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a list from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::makeFieldFromProperty
static QoreDataField makeFieldFromProperty(HashDataType h, string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a hash from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::getOutputSchemaMap
static hash< string, AbstractDataProviderType > getOutputSchemaMap(string api, hash< auto > api_info)
Creates the output schema map for the given API.
GoogleDataProvider::GoogleDataProviderBase::needsBackfillRequestBody
bool needsBackfillRequestBody()
If the request body should be populated with missing values.
GoogleDataProvider::GoogleDataProviderBase::constructor
constructor(GoogleRestClient::GoogleRestClient rest)
Creates the object.
GoogleDataProvider::GoogleDataProviderBase::processRequests
static hash< auto > processRequests(string api, hash< auto > h, TypeResolverHelper unresolved)
Process requests.
GoogleDataProvider::GoogleDataProviderBase::setLogger
setLogger(*LoggerInterface logger)
Accepts a LoggerInterface object for logging (or clears it)
GoogleDataProvider::GoogleDataProviderBase::api_map
static hash< string, string > api_map
API -> URL map.
Definition GoogleDataProviderBase.qc.dox.h:42
GoogleDataProvider::GoogleDataProviderBase::processRequest
static hash< auto > processRequest(string key, hash< auto > info, TypeResolverHelper unresolved)
Returns a hash from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::getMethodsForResource
static *hash< string, bool > getMethodsForResource(string api, list< string > resource_path, *hash< auto > path_args)
Returns a hash of all non-subscription methods for the given resource.
GoogleDataProvider::GoogleDataProviderBase::DiscoveryUrlBase
const DiscoveryUrlBase
Discovery URL base.
Definition GoogleDataProviderBase.qc.dox.h:32
GoogleDataProvider::GoogleDataProviderBase::makeTypeFromSchemaInfo
static AbstractDataProviderType makeTypeFromSchemaInfo(QoreDataField field, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
GoogleDataProvider::GoogleDataProviderBase::info_map
static hash< string, hash< auto > > info_map
Schema info: API -> info.
Definition GoogleDataProviderBase.qc.dox.h:45
GoogleDataProvider::GoogleDataProviderBase::getInputSchemaMap
static hash< string, AbstractDataProviderType > getInputSchemaMap(string api, hash< auto > api_info)
Creates the input schema map for the given API.
GoogleDataProvider
Qore GoogleDataProvider module definition.
Definition GoogleApiDataProvider.qc.dox.h:26