12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- This package offers support for the Google REST APIs.
- Each Google Service API is a REST API that offers multiple resources.
- All Google Service APIs are described in the Google Discovery service:
- https://developers.google.com/discovery/
- The Google APIS use JSON, JSON-Schema and OAuth2 to do their work.
- These services can be converted to a object pascal implementation with the
- googleapiconv program (see directory examples/generator)
- It will fetch the JSON describing a REST API from the Google discovery server:
- googleapiconv -s calendar/v3 -o calendar.pp
- It can also download the rest description through an URL:
- http://www.googleapis.com/discovery/v1/apis/calendar/v3/rest -o calendar.pp
- It can also use downloaded versions of the JSON files.
- The program has many options, running it without options gives an overview.
- A Google API breaks down in 4 parts, all of which have a base class in the
- following units:
- TGoogleClient - unit googleclient
- ---------------------------------
- This is a simple component that handles the transport and authorization,
- it needs a TFPWebClient descendent (such as TFPHTTPWebClient) and a
- TFPOauth2Handler descendent to communicate with Google servers.
- These 2 classes are part of fcl-web, a synapse-based TFPWebclient descendant is
- available separately.
- TGoogleAPI - unit googleservice
- -------------------------------
- There is a descendent of this component for each Google service API, which
- handles all calls to the service. It uses a TGoogleClient component to handle
- actual communication.
- This class contains a method called ServiceCall which is used by all
- resources in the API to execute service requests. It will use the client to
- do the actual HTTP request.
- Each unit google*.pp in this package contains a single component that
- descends from the TGoogleAPI component.
- TGoogleResource - unit googleservice
- ------------------------------------
- For each resource exposed by the service, a descendent of this class is generated
- that has all the methods for that resource, as described in the REST service description.
- TGoogleResource uses an instance of the TGoogleAPI class to handle all calls to
- the service.
- Each API unit google*.pp in this package contains one or more TGoogleResource
- descendents, used in the API of that unit.
- TGoogleBaseObject - unit googlebase
- -----------------------------------
- For each data type used in the API, a descendent of this class is used: it is a
- descendent of TBaseObject (unit restbase, part of fcl-web) and handles
- loading from and saving to JSON.
- Unit googlediscoverytopas
- -------------------------
- This unit contains the code to convert a Google REST API description to a
- object pascal unit.
- Authentication happens using OAuth2, the units for this are available in the
- fcl-web package (fpjwt, fpoauth2, fpoauth2ini).
- Example programs for Lazarus will be published separately.
|