zadarma 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +12 -1
- data/lib/zadarma/client.rb +45 -29
- data/lib/zadarma/methods.rb +26 -1
- data/zadarma.gemspec +4 -4
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ccac6f457278e5150acabec5c0875de5ee20c7b7ffab9717a5ba2e6811c7890c
|
4
|
+
data.tar.gz: 65b0173713c8e3294f35b375fd55c6ec9c5a2fdc979e2d0ba877c89cb9c5db17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b15fea29704770ad426c592cae7c1ad03751fe46741ada9b9caf4588c398b22c5da929e5e479f7764b4c507a2229298aa748f38d9e69d6c6dbee326e61e56033
|
7
|
+
data.tar.gz: 7bc7b791e7e553d1f6acd6b2d556fff6b8b2fbe475511fc13d7ed88587aabd1edc2d118fb1b56f11ab760cea2f7322f5656308ade4af879312b76bcd738b8c6d
|
data/README.md
CHANGED
@@ -21,7 +21,12 @@ Or install it yourself as:
|
|
21
21
|
Zadarma.log_requests = false # default
|
22
22
|
|
23
23
|
Zadarma::Client.balance
|
24
|
-
|
24
|
+
or
|
25
|
+
|
26
|
+
client = Zadarma::Client.new("YOUR_API_KEY", "YOUR_API_SECRET")
|
27
|
+
client.balance
|
28
|
+
|
29
|
+
|
25
30
|
## Available methods:
|
26
31
|
|
27
32
|
* `balance` - user balance
|
@@ -36,6 +41,12 @@ Or install it yourself as:
|
|
36
41
|
* `send_sms(number, message, params = {})` - send sms
|
37
42
|
* `statistics(date_start, date_end, params = {})` - get stats
|
38
43
|
* `pbx_statistics(date_start, date_end)` - get PBX stats
|
44
|
+
* `direct_numbers` - get direct numbers
|
45
|
+
* `documents_groups_list` - get document groups
|
46
|
+
* `direct_numbers_available(direction_id)` - get direct numbers available for purchase
|
47
|
+
* `direct_numbers_countries` - get countries where numbers are available
|
48
|
+
* `direct_numbers_country(country_code)` - get numbers within a given country
|
49
|
+
* `direct_numbers_order(number_id, period, direction_id, documents_group_id, purpose, receive_sms, user_id)` - purchase a number
|
39
50
|
|
40
51
|
## Contributing
|
41
52
|
|
data/lib/zadarma/client.rb
CHANGED
@@ -5,46 +5,62 @@ require "faraday"
|
|
5
5
|
|
6
6
|
module Zadarma
|
7
7
|
class Client
|
8
|
-
|
9
|
-
include Methods
|
8
|
+
include Methods
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
def initialize(api_key, api_secret)
|
11
|
+
@api_key = api_key
|
12
|
+
@api_secret = api_secret
|
13
|
+
end
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
request.headers["Authorization"] = "#{Zadarma.api_key}:#{signature("/v1" + path, params)}"
|
19
|
-
end
|
20
|
-
|
21
|
-
result = ActiveSupport::JSON.decode(response.body).with_indifferent_access
|
22
|
-
raise Zadarma::Error.new("Error [HTTP #{response.status}]: #{result[:message]} ") unless "success" == result[:status]
|
15
|
+
def request(method, path, params = {})
|
16
|
+
raise "No auth data provided" unless @api_key && @api_secret
|
23
17
|
|
24
|
-
|
25
|
-
|
26
|
-
rescue ActiveSupport::JSON.parse_error
|
27
|
-
raise Zadarma::Error.new("Response is not JSON: #{response.body}")
|
18
|
+
params.merge!(format: "json")
|
28
19
|
|
20
|
+
response = client.send(method, "/v1" + path, params) do |request|
|
21
|
+
request.headers["Accept"] = "application/json"
|
22
|
+
request.headers["Authorization"] = "#{@api_key}:#{signature("/v1" + path, params)}"
|
29
23
|
end
|
30
24
|
|
25
|
+
result = ActiveSupport::JSON.decode(response.body).with_indifferent_access
|
26
|
+
raise Zadarma::Error.new("Error [HTTP #{response.status}]: #{result[:message]} ") unless "success" == result[:status]
|
27
|
+
|
28
|
+
result.except("status")
|
29
|
+
|
30
|
+
rescue ActiveSupport::JSON.parse_error
|
31
|
+
raise Zadarma::Error.new("Response is not JSON: #{response.body}")
|
32
|
+
|
33
|
+
end
|
34
|
+
|
31
35
|
|
32
|
-
|
36
|
+
protected
|
33
37
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
38
|
+
def client
|
39
|
+
@client ||= ::Faraday.new(url: "https://api.zadarma.com") do |faraday|
|
40
|
+
faraday.request :url_encoded
|
41
|
+
faraday.response :logger if Zadarma.log_requests
|
42
|
+
faraday.adapter Faraday.default_adapter
|
40
43
|
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def signature(url, params)
|
47
|
+
query = Hash[params.sort].to_query
|
48
|
+
sign_str = url + query + Digest::MD5.hexdigest(query)
|
49
|
+
sign = Base64.encode64(OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha1"), @api_secret, sign_str)).strip
|
50
|
+
sign
|
51
|
+
end
|
41
52
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
53
|
+
# Class methods
|
54
|
+
class << self
|
55
|
+
include Methods
|
56
|
+
|
57
|
+
def request(method, path, params = {})
|
58
|
+
# Make instance and execute request
|
59
|
+
obj = Zadarma::Client.new(Zadarma.api_key, Zadarma.api_secret)
|
60
|
+
obj.request(method, path, params)
|
47
61
|
end
|
48
62
|
end
|
63
|
+
|
64
|
+
|
49
65
|
end
|
50
66
|
end
|
data/lib/zadarma/methods.rb
CHANGED
@@ -56,6 +56,31 @@ module Zadarma
|
|
56
56
|
request :get, "/statistics/pbx/", start: time_s(time_start), end: time_s(time_end)
|
57
57
|
end
|
58
58
|
|
59
|
+
def direct_numbers
|
60
|
+
request :get, "/direct_numbers/"
|
61
|
+
end
|
62
|
+
|
63
|
+
def documents_groups_list
|
64
|
+
request :get, "/documents/groups/list/"
|
65
|
+
end
|
66
|
+
|
67
|
+
def direct_numbers_available(direction_id)
|
68
|
+
request :get, "/direct_numbers/available/#{direction_id}/"
|
69
|
+
end
|
70
|
+
|
71
|
+
def direct_numbers_countries
|
72
|
+
request :get, "/direct_numbers/countries"
|
73
|
+
end
|
74
|
+
|
75
|
+
def direct_numbers_country(country_code)
|
76
|
+
request :get, "/direct_numbers/country", country: country_code
|
77
|
+
end
|
78
|
+
|
79
|
+
def direct_numbers_order(number_id, period=nil, direction_id=nil, documents_group_id=nil, purpose=nil, receive_sms=nil, user_id=nil)
|
80
|
+
params = {number_id: number_id, period: period, direction_id: direction_id, documents_group_id: documents_group_id, purpose: purpose, receive_sms: receive_sms}
|
81
|
+
params[:user_id] = user_id if !user_id.nil?
|
82
|
+
request :post, "/direct_numbers/order", params
|
83
|
+
end
|
59
84
|
|
60
85
|
protected
|
61
86
|
|
@@ -63,4 +88,4 @@ module Zadarma
|
|
63
88
|
value.to_time.strftime "%Y-%m-%d %H:%M:%S" if value.present?
|
64
89
|
end
|
65
90
|
end
|
66
|
-
end
|
91
|
+
end
|
data/zadarma.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "zadarma"
|
3
|
-
s.version = "0.0.
|
4
|
-
s.date = "
|
3
|
+
s.version = "0.0.4"
|
4
|
+
s.date = "2022-04-18"
|
5
5
|
s.summary = "zadarma.com api ruby interface"
|
6
6
|
s.description = ""
|
7
|
-
s.authors = ["Eugeniy Belyaev"]
|
7
|
+
s.authors = ["Eugeniy Belyaev", "Devin Gaffney"]
|
8
8
|
s.email = "eugeniy.b@gmail.com"
|
9
9
|
s.files = `git ls-files -z`.split("\x0")
|
10
10
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
11
11
|
s.require_paths = ["lib"]
|
12
|
-
s.homepage = "https://github.com/
|
12
|
+
s.homepage = "https://github.com/evgeniy-b/zadarma-ruby"
|
13
13
|
s.license = "MIT"
|
14
14
|
|
15
15
|
s.required_ruby_version = '>= 1.9.3'
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zadarma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugeniy Belyaev
|
8
|
-
|
8
|
+
- Devin Gaffney
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2022-04-18 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: json
|
@@ -67,11 +68,11 @@ files:
|
|
67
68
|
- lib/zadarma/error.rb
|
68
69
|
- lib/zadarma/methods.rb
|
69
70
|
- zadarma.gemspec
|
70
|
-
homepage: https://github.com/
|
71
|
+
homepage: https://github.com/evgeniy-b/zadarma-ruby
|
71
72
|
licenses:
|
72
73
|
- MIT
|
73
74
|
metadata: {}
|
74
|
-
post_install_message:
|
75
|
+
post_install_message:
|
75
76
|
rdoc_options: []
|
76
77
|
require_paths:
|
77
78
|
- lib
|
@@ -86,9 +87,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
87
|
- !ruby/object:Gem::Version
|
87
88
|
version: '0'
|
88
89
|
requirements: []
|
89
|
-
|
90
|
-
|
91
|
-
signing_key:
|
90
|
+
rubygems_version: 3.1.2
|
91
|
+
signing_key:
|
92
92
|
specification_version: 4
|
93
93
|
summary: zadarma.com api ruby interface
|
94
94
|
test_files: []
|