Module: YandexDelivery
- Defined in:
- lib/yandex_delivery.rb,
lib/generators/yandex_delivery/install/install_generator.rb
Defined Under Namespace
Classes: DynamicSetting, InstallGenerator
Class Method Summary
collapse
Class Method Details
.add_reader(name) ⇒ Object
54
55
56
57
58
|
# 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) ⇒ Object
60
61
62
63
64
|
# 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 = {}) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
|
# 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) ⇒ Object
37
38
39
40
41
42
43
44
|
# 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) ⇒ Object
26
27
28
29
30
31
32
33
34
35
|
# 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) ⇒ Object
46
47
48
49
50
51
52
|
# 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 = {}) ⇒ Object
8
9
10
11
12
|
# 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| ... } ⇒ Object
4
5
6
|
# File 'lib/yandex_delivery.rb', line 4
def setup
yield self
end
|