module YandexDelivery
Public Class Methods
add_reader(name)
click to toggle source
# File lib/yandex_delivery.rb, line 54 def add_reader(name) define_singleton_method(name) do |*args| send("#{name}_setting").value(*args) end end
add_writer(name, type)
click to toggle source
# File lib/yandex_delivery.rb, line 60 def add_writer(name, type) define_singleton_method("#{name}=") do |value| send("#{name}_setting=", DynamicSetting.build(value, type)) end end
build_params(method_name, params={})
click to toggle source
# File lib/yandex_delivery.rb, line 14 def build_params method_name, params={} params[:client_id] = YandexDelivery.client["id"] params[:sender_id] = params[:sender_id] || YandexDelivery.senders.first["id"] params.each do |k, v| if v.kind_of?(Array) params[k] = v.map.with_index {|v,i| [i,v]}.to_h end end params[:secret_key] = Digest::MD5.hexdigest("#{post_values(params)}#{YandexDelivery.send("#{method_name}_key")}") params end
create_method(name)
click to toggle source
# File lib/yandex_delivery.rb, line 37 def create_method name define_singleton_method(name) do |params = {}| request name, params end define_method(name) do |params = {}| request name, params end end
post_values(params)
click to toggle source
# File lib/yandex_delivery.rb, line 26 def post_values params return params unless params.kind_of?(Array) || params.kind_of?(Hash) if params.kind_of?(Array) params.map(&method(:post_values)).join('') else params.sort.map{|k,v| post_values(v) }.join('') end end
register(name, value, type = nil)
click to toggle source
# File lib/yandex_delivery.rb, line 46 def register(name, value, type = nil) cattr_accessor "#{name}_setting".to_sym add_reader(name) add_writer(name, type) send "#{name}=", value end
request(method_name, params={})
click to toggle source
# File lib/yandex_delivery.rb, line 8 def request method_name, params={} params = build_params method_name, params result = RestClient.post "https://delivery.yandex.ru/api/last/#{method_name.to_s.camelize(:lower)}", params JSON.parse(result) end
setup() { |self| ... }
click to toggle source
# File lib/yandex_delivery.rb, line 4 def setup yield self end