Interface
A middleware must use the namespace Spore.Middleware
and follow this caveat:
local m = {} function m:call (req) ... something useful end return m
Spore.Middleware.Auth.Basic
client:enable('Auth.Basic', { username = 'schacon/token', password = '6ef8395fecf207165f1a82178ae1b984', })
Spore.Middleware.Auth.OAuth
This middleware requires luacrypto.
This middleware should be loaded as the last middleware, because it directly sends the request.
client:enable('Auth.OAuth', { oauth_consumer_key = 'key', oauth_consumer_secret = 'secret', oauth_token = 'accesskey', oauth_token_secret = 'accesssecret', oauth_signature_method = 'HMAC-SHA1', })
Spore.Middleware.Format.JSON
client:enable 'Format.JSON'
Spore.Middleware.Format.XML
This middleware requires LuaExpat.
client:enable 'Format.XML'
client:enable('Format.XML', { indent = ' ', key_attr = { tagname = attrname, ... }, },
Spore.Middleware.Format.YAML
This middleware requires luaYAML.
client:enable 'Format.YAML'
Spore.Middleware.Parameter.Default
client:enable('Parameter.Default', { state = 'open', ... })
Spore.Middleware.Parameter.Force
client:enable('Parameter.Force', { format = 'json', ... })
Spore.Middleware.Proxy.Basic
client:enable('Proxy.Basic', { proxy = 'http://proxy.myorg:8080', username = 'john', -- optional password = 's3kr3t', -- optional })
client:enable 'Proxy.Basic' -- uses HTTP_PROXY=http://john:s3kr3t@proxy.myorg:8080
Spore.Middleware.Cache
client:enable 'Cache'
Note: This middleware uses only URL as unique key.
Spore.Middleware.Logging
This middleware requires LuaLogging.
require 'logging.file' client:enable('Logging', { logger = logging.file 'test%s.log' })
Spore.Middleware.Mock
rules = { function (req) return req.method == 'HEAD' end, function (req) return { status = 404 } end, 'pattern_in_url', -- shortcut for: function (req) return req.url:match 'pattern_in_url' end function (req) return { status = 401 } end, } client:enable('Mock', rules)
Spore.Middleware.Redirection
This middleware handles the header Location
.
client:enable 'Redirection'
Spore.Middleware.Runtime
client:enable 'Runtime' ... print(response.headers['x-spore-runtime']
Spore.Middleware.UserAgent
client:enable('UserAgent', { useragent = 'Mozilla/5.0' })