83 *hash<auto>
prepareRequest(
auto req, *hash<string, softstring> implicit_path_args, *
bool backfill_request_body);
115 *hash<auto>
prepareRequestIntern(AbstractDataProviderType request_type,
auto req0, *hash<string, softstring> implicit_path_args, *
bool backfill_request_body);
118 string getQueryValue(
string key, AbstractDataProviderType type,
auto val);
122 static string cap(
string word);
133 static hash<auto> getRequestInfoForResource(
string api,
string resource);
167 static hash<auto>
processRequests(
string api, hash<auto> h, TypeResolverHelper unresolved);
172 static hash<auto>
processRequest(
string key, hash<auto> info, TypeResolverHelper unresolved);
175 static hash<string, AbstractDataProviderType>
getApi(
string api);
181 static hash<string, AbstractDataProviderType>
getInputSchemaMap(
string api, hash<auto> api_info);
186 static hash<auto> getSchemaInfo(
string api);
190 static AbstractDataProviderType
makeTypeFromSchemaInfo(HashDataType type, hash<auto> info, TypeResolverHelper unresolved, *
bool for_input);
196 static AbstractDataProviderType
makeTypeFromSchemaInfo(ListDataType type,
string key, hash<auto> info, TypeResolverHelper unresolved, *
bool for_input);
202 static AbstractDataProviderType
makeTypeFromSchemaInfo(QoreDataField field, hash<auto> info, TypeResolverHelper unresolved, *
bool for_input);
208 static AbstractDataProviderType
makeTypeFromSchemaInfo(
string key, hash<auto> info, TypeResolverHelper unresolved, *
bool for_input);
219 static QoreDataField
makeFieldFromProperty(HashDataType h,
string key, hash<auto> info, TypeResolverHelper unresolved, *
bool for_input);
227class TypeResolverHelper {
234 list<hash<auto>> lists;
237 list<hash<auto>> hashes;
240 list<hash<auto>> fields;
243 list<hash<auto>> requests;
246 list<hash<auto>> responses;
250 addRequestTypeReference(
string key,
string ref, *
bool required);
253 addResponseTypeReference(
string key,
string ref, *
bool required);
256 AbstractDataProviderType addReference(HashDataType type,
string ref, *
bool required);
259 AbstractDataProviderType addReference(ListDataType type,
string ref);
262 AbstractDataProviderType addReference(QoreDataField field,
string ref);
265 resolve(hash<string, AbstractDataProviderType> schemas);
268 hash<auto> resolveRequests(
string api, hash<auto> req, hash<
string, hash<string, AbstractDataProviderType>> input_schema_map, hash<
string, hash<string, AbstractDataProviderType>> output_schema_map);
271 static AbstractDataProviderType getType(
string ref, hash<string, AbstractDataProviderType> schemas, *
bool required);
The Google data provider base class.
Definition GoogleDataProviderBase.qc.dox.h:28
static string cap(string word)
Returns the given word capitalized.
static AbstractDataProviderType makeTypeFromSchemaInfo(ListDataType type, string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
static DataProvider::AbstractDataProviderType getInputTypeForSchema(string api, string schema)
Returns an input / inbound data type for the given Google schema.
static DataProvider::AbstractDataProviderType getResponseTypeForSchema(string api, string resource)
Returns a response data type for the given API.
static DataProvider::AbstractDataProviderType getRequestTypeForSchema(string api, string resource,...)
Returns a request data type for the given API.
static hash< string, hash< auto > > request_map
schema cache; API -> request path ->
Definition GoogleDataProviderBase.qc.dox.h:55
static Mutex m()
schema cache lock
static hash< string, AbstractDataProviderType > getApi(string api)
Returns all output schemas for the given API.
*RestClient::RestClient rest
The REST client object for API calls.
Definition GoogleDataProviderBase.qc.dox.h:39
static hash< string, hash< string, AbstractDataProviderType > > input_schema_map
input schema cache; API -> schema name -> type
Definition GoogleDataProviderBase.qc.dox.h:48
static DataProvider::AbstractDataProviderType getRequestTypeForSchemaArgs(string api, string path, *list< auto > args)
Returns a data type for the given request.
*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.
static string getMethodForSchema(string api, string path)
Returns the HTTP method for the given API.
static HashDataType makeHashFromSchemaInfo(string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a hash from a Google schema description.
static AbstractDataProviderType makeTypeFromSchemaInfo(string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
*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.
static hash< string, hash< string, AbstractDataProviderType > > output_schema_map
output schema cache; API -> schema name -> type
Definition GoogleDataProviderBase.qc.dox.h:51
static hash< auto > getRequestInfo(string api)
Returns all request types for the given API.
static string getUrlForApi(string api, RestClient::RestClient rest)
Returns the URL for the given API.
constructor()
Creates the object.
static AbstractDataProviderType makeTypeFromSchemaInfo(HashDataType type, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
const InitTimeout
Initialization I/O timeout.
Definition GoogleDataProviderBase.qc.dox.h:35
setRestClient(RestClient rest)
Override REST client.
static DataProvider::AbstractDataProviderType getTypeForSchema(string api, string schema)
Returns a data type for the given Google schema.
static hash< string, AbstractDataProviderType > getInputSchemasForApi(string api)
Returns all input schemas for the given API.
constructor(RestClient::RestClient rest)
Creates the object.
hash< auto > backfillRequestBody(auto req)
Used to set attributes in the request body that are not set in the request.
static checkResource(string api, list< string > resource_path)
Check the given path for resources.
updateConnectionObjects(object conn, object connobj)
Update any connection used by the data provider.
static string getPathForSchema(string api, string resource)
Returns the path for the given API.
static ListDataType makeListFromSchemaInfo(string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a list from a Google schema description.
static QoreDataField makeFieldFromProperty(HashDataType h, string key, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a hash from a Google schema description.
static hash< string, AbstractDataProviderType > getOutputSchemaMap(string api, hash< auto > api_info)
Creates the output schema map for the given API.
bool needsBackfillRequestBody()
If the request body should be populated with missing values.
static RestClient::RestClient getRestConnection(*hash< auto > options)
Returns a GoogleRestClient connection from the options.
static hash< auto > processRequests(string api, hash< auto > h, TypeResolverHelper unresolved)
Process requests.
setLogger(*LoggerInterface logger)
Accepts a LoggerInterface object for logging (or clears it)
static hash< string, string > api_map
API -> URL map.
Definition GoogleDataProviderBase.qc.dox.h:42
static hash< auto > processRequest(string key, hash< auto > info, TypeResolverHelper unresolved)
Returns a hash from a Google schema description.
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.
const DiscoveryUrlBase
Discovery URL base.
Definition GoogleDataProviderBase.qc.dox.h:32
static AbstractDataProviderType makeTypeFromSchemaInfo(QoreDataField field, hash< auto > info, TypeResolverHelper unresolved, *bool for_input)
Returns a type from a Google schema description.
static hash< string, hash< auto > > info_map
Schema info: API -> info.
Definition GoogleDataProviderBase.qc.dox.h:45
static hash< string, AbstractDataProviderType > getInputSchemaMap(string api, hash< auto > api_info)
Creates the input schema map for the given API.
Qore GoogleDataProvider module definition.
Definition GoogleApiDataProvider.qc.dox.h:26