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