class ApipieBindings::Action
Attributes
name[R]
Public Class Methods
new(resource, name, api)
click to toggle source
# File lib/apipie_bindings/action.rb, line 9 def initialize(resource, name, api) @resource = resource @name = name.to_sym @api = api end
Public Instance Methods
api_params_tree(&block)
click to toggle source
# File lib/apipie_bindings/action.rb, line 65 def api_params_tree(&block) ApipieBindings::Utilities.params_hash_tree(self.params, &block) end
apidoc()
click to toggle source
# File lib/apipie_bindings/action.rb, line 19 def apidoc methods = @api.apidoc[:docs][:resources][@resource][:methods].select do |action| action[:name].to_sym == @name end methods.first end
call(params={}, headers={}, options={})
click to toggle source
# File lib/apipie_bindings/action.rb, line 15 def call(params={}, headers={}, options={}) @api.call(@resource, @name, params, headers, options) end
examples()
click to toggle source
# File lib/apipie_bindings/action.rb, line 43 def examples apidoc[:examples].map do |example| ApipieBindings::Example.parse(example) end end
find_route(params={})
click to toggle source
# File lib/apipie_bindings/action.rb, line 49 def find_route(params={}) sorted_routes = routes.sort_by { |r| [-1 * r.params_in_path.count, r.path] } suitable_route = sorted_routes.find do |route| route.params_in_path.all? { |path_param| params.keys.map(&:to_s).include?(path_param) } end suitable_route ||= sorted_routes.last return suitable_route end
inspect()
click to toggle source
# File lib/apipie_bindings/action.rb, line 95 def inspect to_s end
missing_params(master, slave)
click to toggle source
# File lib/apipie_bindings/action.rb, line 77 def missing_params(master, slave) missing = [] master.each do |required_param| if required_param.is_a?(Hash) key = required_param.keys.first slave_hash = slave.select { |p| p.is_a?(Hash) && p[key] } missing << missing_params(required_param[key], slave_hash.first ? slave_hash.first[key] : []) else missing << required_param unless slave.include?(required_param) end end missing.flatten.sort end
params()
click to toggle source
# File lib/apipie_bindings/action.rb, line 33 def params if apidoc apidoc[:params].map do |param| ApipieBindings::Param.new(param) end else [] end end
params_tree(params)
click to toggle source
# File lib/apipie_bindings/action.rb, line 69 def params_tree(params) params.inject([]) do |tree, (key, val)| subtree = val.is_a?(Hash) ? { key.to_s => params_tree(val) } : key.to_s tree << subtree tree end end
routes()
click to toggle source
# File lib/apipie_bindings/action.rb, line 26 def routes apidoc[:apis].map do |api| ApipieBindings::Route.new( api[:api_url], api[:http_method], api[:short_description]) end end
to_s()
click to toggle source
# File lib/apipie_bindings/action.rb, line 91 def to_s "<Action :#{@name}>" end
validate!(params)
click to toggle source
# File lib/apipie_bindings/action.rb, line 60 def validate!(params) missing_params = missing_params(api_params_tree { |par| par.required? }, params_tree(params)) raise ApipieBindings::MissingArgumentsError.new(missing_params) unless missing_params.empty? end