class LazyAnt::Endpoint
Endpoint
Definition
(in dsl) api :echo do
get '/echo' param :hello, default: 'world', required: true, rename: 'SHIT_KEY'
end
client.echo(hello: 'test')
> GET '/echo?SHIT_KEY=test'¶ ↑
Public Class Methods
new(*args)
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 17 def initialize(*args) @query = default_query.merge(args.extract_options!) @url = build_url(*args) end
Protected Class Methods
inherited(child)
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 84 def inherited(child) child.params = {} end
param(name, options = {})
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 80 def param(name, options = {}) params[name] = options end
Public Instance Methods
execute(connection)
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 22 def execute(connection) @query = connection.params.merge(@query) validate! connection.send(verb, @url, renamed_query) do |req| req.params.clear if [:put, :post].include?(req.method) end end
Protected Instance Methods
build_url(*args)
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 38 def build_url(*args) args = Array(args) url = path.dup arg_names = url.scan(/:([\w_]+)/).map(&:first) arg_names.each do |k| arg = args.shift raise ArgumentError, "missing required key :#{k}" unless arg url.gsub!(/:#{k}/, arg.to_s) end url end
default_query()
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 50 def default_query res = {} params.each do |k, v| res[k] = v[:default] if v[:default] res end res end
renamed_query()
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 59 def renamed_query query = @query.dup params.each do |k, v| if v[:rename] query[v[:rename]] = query[k] query.delete k end end query end
validate!()
click to toggle source
# File lib/lazy_ant/endpoint.rb, line 32 def validate! params.select { |_k, v| v[:required] }.each do |k, _v| raise ArgumentError, "params[:#{k}] is required!" unless @query[k] end end