Reference
With this module, lua-Spore becomes a Google APIs Client Library for Lua. The list of supported APIs could be found here.
Global Functions
new_from_discovery( desc, [, { options }] )
Instanciate a ReST client from a
Google Discovery Document
defined by an URL or a table with keys api
and version
.
The optional table options
allows to overwrite some parameters of the description
(see new_from_spec
).
local discovery = require 'Spore.GoogleDiscovery' local client = discovery.new_from_discovery 'https://www.googleapis.com/discovery/v1/apis/urlshortener/v1/rest'
local client = discovery.new_from_discovery { api = 'urlshortener', version = 'v1' }
convert( gdoc )
Converts a Google Discovery Document
into a Spore Specification (both are represented by a table
).
Utilities
discovery2spore url
Converts a Google Discovery Document into a Spore Specification. By this way, the Spore specification could be edited/modified before use.
$ discovery2spore https://www.googleapis.com/discovery/v1/apis/urlshortener/v1/rest > urlshortener.json
Examples
Translate "Hello World"
local client = require 'Spore.GoogleDiscovery'.new_from_discovery{ api = 'translate', version = 'v2', } client:enable 'Format.JSON' client:enable('Parameter.Force', { key = '===========<INSERT-YOUR-KEY>===========' }) client.translate = client.translations_list -- alias local r = client:translate{ source='en', target='fr', q=[[Hello World]] } for _, v in ipairs(r.body.data.translations) do print(v.translatedText) end
The Discovery of Discovery
Retrieve the list of Google APIs which are described by a Discovery Document.
local discovery = require 'Spore.GoogleDiscovery' local client = discovery.new_from_discovery 'https://www.googleapis.com/discovery/v1/apis/discovery/v1/rest' client:enable 'Format.JSON' local r = client:apis_list() for _, item in ipairs(r.body.items) do print(item.name, item.version) end
URL Shortener
local client = require 'Spore.GoogleDiscovery'.new_from_discovery{ api = 'urlshortener', version = 'v1', } client:enable 'Format.JSON' local r = client:url_insert{ payload = { longUrl = 'http://www.google.com/' } } print(r.body.id, r.body.longUrl)