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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 80afba17ce436ff3d3ec81cb4641e6f7d3470633
4
- data.tar.gz: 6dd61e01196931d811015ca3b5cec1d9ea254fed
2
+ SHA256:
3
+ metadata.gz: ccac6f457278e5150acabec5c0875de5ee20c7b7ffab9717a5ba2e6811c7890c
4
+ data.tar.gz: 65b0173713c8e3294f35b375fd55c6ec9c5a2fdc979e2d0ba877c89cb9c5db17
5
5
  SHA512:
6
- metadata.gz: b19df43c4fa72196f614ed66a0bc915ad8efebb0df2f1687a7b6013bfda5944a0ffb46ce104004bcef7590161bfc9a2b653312be1ead7a420ae1e370c163240e
7
- data.tar.gz: 4019dce3e809914d67220ede54b49c14fbdae59283698d94858d4bfce3f259f7f30f66ae4abadfcc7d5e61c91bce4c0d776cf974b84afc6ccc6688294bdc0308
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
 
@@ -5,46 +5,62 @@ require "faraday"
5
5
 
6
6
  module Zadarma
7
7
  class Client
8
- class << self
9
- include Methods
8
+ include Methods
10
9
 
11
- def request(method, path, params = {})
12
- raise "No auth data provided" unless Zadarma.api_key && Zadarma.api_secret
13
-
14
- params.merge!(format: "json")
10
+ def initialize(api_key, api_secret)
11
+ @api_key = api_key
12
+ @api_secret = api_secret
13
+ end
15
14
 
16
- response = client.send(method, "/v1" + path, params) do |request|
17
- request.headers["Accept"] = "application/json"
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
- result.except("status")
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
- protected
36
+ protected
33
37
 
34
- def client
35
- @client ||= ::Faraday.new(url: "https://api.zadarma.com") do |faraday|
36
- faraday.request :url_encoded
37
- faraday.response :logger if Zadarma.log_requests
38
- faraday.adapter Faraday.default_adapter
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
- def signature(url, params)
43
- query = Hash[params.sort].to_query
44
- sign_str = url + query + Digest::MD5.hexdigest(query)
45
- sign = Base64.encode64(OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha1"), Zadarma.api_secret, sign_str)).strip
46
- sign
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
@@ -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.2"
4
- s.date = "2015-10-07"
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/zhekanax/zadarma-ruby"
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.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugeniy Belyaev
8
- autorequire:
8
+ - Devin Gaffney
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-10-07 00:00:00.000000000 Z
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/zhekanax/zadarma-ruby
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
- rubyforge_project:
90
- rubygems_version: 2.4.5.1
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: []