mandarin-api 0.4.0 → 1.0.0

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
2
  SHA1:
3
- metadata.gz: d26d560afb95e6d1924115c5c6a95f3212a249cc
4
- data.tar.gz: 5c64b4f9f8a43cc07b22e3aaa1657f80b5ddf1b8
3
+ metadata.gz: d84ee559361d1d97dae3c114dc85adb59e47b4af
4
+ data.tar.gz: b87a8eb6b57c209ea8a378899ac848675bf194f5
5
5
  SHA512:
6
- metadata.gz: cd31f05153afbe749e926487464ec729fe8707623cab89d4d769a830067ca40a8362ebf54b62dcd840278a8240c0782470494aa08f40ebf6737f51876b07dd5c
7
- data.tar.gz: 61308ee7e37a8bbf39ee4a19a8370fcfc4eedf9cf719a56f7c67c1109eb5e1830a26c784677fbe63c25909be4c1f4fb5c0a694a1719b1bf47d195db75458e95a
6
+ metadata.gz: 722e27b9a71289c02dfb62da6fd33f6e8aa64bc987d9788a1b14784c052ec9f90355bede7e227539105359151d9701345cd7d10d48d37daaca1510d9760be518
7
+ data.tar.gz: c97df2fe2d0a0be03acc7a9ac173eec02c62ce351245b8f44a60dfb21595df7e1e17470dafc4d4a1448998c3087f48b5fbcb7b3a859bc283d0f1a27da1d2540b
data/Gemfile CHANGED
@@ -1,8 +1,3 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec name: 'mandarin-api'
4
-
5
- group :test do
6
- gem 'rake'
7
- gem 'activesupport'
8
- end
@@ -1,99 +1,46 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mandarin-api (0.4.0)
5
- rest-client (>= 2.0, < 3.0)
4
+ mandarin-api (1.0.0)
5
+ curb (~> 0.9.4)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (5.0.0.1)
11
- concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (~> 0.7)
13
- minitest (~> 5.1)
14
- tzinfo (~> 1.1)
15
- addressable (2.4.0)
16
- byebug (9.0.6)
17
- coderay (1.1.1)
18
- concurrent-ruby (1.0.2)
10
+ addressable (2.5.2)
11
+ public_suffix (>= 2.0.2, < 4.0)
19
12
  crack (0.4.3)
20
13
  safe_yaml (~> 1.0.0)
21
- diff-lcs (1.2.5)
22
- domain_name (0.5.20160826)
23
- unf (>= 0.0.5, < 1.0.0)
24
- faker (1.6.6)
25
- i18n (~> 0.5)
26
- hashdiff (0.3.0)
27
- http-cookie (1.0.3)
28
- domain_name (~> 0.5)
29
- i18n (0.7.0)
30
- json (1.8.3)
31
- method_source (0.8.2)
32
- mime-types (3.1)
33
- mime-types-data (~> 3.2015)
34
- mime-types-data (3.2016.0521)
35
- minitest (5.9.1)
36
- netrc (0.11.0)
37
- pry (0.10.4)
38
- coderay (~> 1.1.0)
39
- method_source (~> 0.8.1)
40
- slop (~> 3.4)
41
- pry-byebug (3.4.2)
42
- byebug (~> 9.0)
43
- pry (~> 0.10)
44
- pry-doc (0.9.0)
45
- pry (~> 0.9)
46
- yard (~> 0.8)
47
- rake (11.3.0)
48
- rb-readline (0.5.5)
49
- rdoc (4.2.2)
50
- json (~> 1.4)
51
- rest-client (2.0.0)
52
- http-cookie (>= 1.0.2, < 2.0)
53
- mime-types (>= 1.16, < 4.0)
54
- netrc (~> 0.8)
55
- rspec (3.5.0)
56
- rspec-core (~> 3.5.0)
57
- rspec-expectations (~> 3.5.0)
58
- rspec-mocks (~> 3.5.0)
59
- rspec-core (3.5.4)
60
- rspec-support (~> 3.5.0)
61
- rspec-expectations (3.5.0)
14
+ curb (0.9.4)
15
+ diff-lcs (1.3)
16
+ hashdiff (0.3.7)
17
+ public_suffix (3.0.1)
18
+ rspec (3.7.0)
19
+ rspec-core (~> 3.7.0)
20
+ rspec-expectations (~> 3.7.0)
21
+ rspec-mocks (~> 3.7.0)
22
+ rspec-core (3.7.0)
23
+ rspec-support (~> 3.7.0)
24
+ rspec-expectations (3.7.0)
62
25
  diff-lcs (>= 1.2.0, < 2.0)
63
- rspec-support (~> 3.5.0)
64
- rspec-mocks (3.5.0)
26
+ rspec-support (~> 3.7.0)
27
+ rspec-mocks (3.7.0)
65
28
  diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.5.0)
67
- rspec-support (3.5.0)
29
+ rspec-support (~> 3.7.0)
30
+ rspec-support (3.7.0)
68
31
  safe_yaml (1.0.4)
69
- slop (3.6.0)
70
- thread_safe (0.3.5)
71
- tzinfo (1.2.2)
72
- thread_safe (~> 0.1)
73
- unf (0.1.4)
74
- unf_ext
75
- unf_ext (0.0.7.2)
76
- webmock (2.1.0)
32
+ webmock (3.1.1)
77
33
  addressable (>= 2.3.6)
78
34
  crack (>= 0.3.2)
79
35
  hashdiff
80
- yard (0.9.5)
81
36
 
82
37
  PLATFORMS
83
38
  ruby
84
39
 
85
40
  DEPENDENCIES
86
- activesupport
87
- faker (>= 1.6, < 1.7)
88
41
  mandarin-api!
89
- pry (~> 0)
90
- pry-byebug (~> 3.0)
91
- pry-doc (~> 0)
92
- rake
93
- rb-readline (~> 0.5)
94
- rdoc (>= 2.4.2, < 5.0)
95
- rspec (~> 3.0)
96
- webmock (~> 2.1)
42
+ rspec (~> 3.7, >= 3.7.0)
43
+ webmock (~> 3.1, >= 3.1.1)
97
44
 
98
45
  BUNDLED WITH
99
- 1.13.6
46
+ 1.16.0
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'securerandom'
3
4
  require 'json'
4
- require 'rest-client'
5
+ require 'curb'
6
+
5
7
  module MandarinApi
6
8
  # Wraps request sending
7
9
  class Wrapper
@@ -14,14 +16,12 @@ module MandarinApi
14
16
  def request(endpoint, params = {})
15
17
  url = URI.join(MandarinApi.config.request_url, endpoint).to_s
16
18
  perform_loging url, params, header
17
- RestClient.post(url, json(params), header) do |response|
18
- case response.code
19
- when 200
20
- JSON.parse response.body
21
- else
22
- { 'status' => response.code, 'error' => 'Invalid request' }
23
- end
24
- end
19
+ curl = Curl::Easy.new(url)
20
+ curl.headers = header
21
+ curl.post(json(params))
22
+ body = JSON.parse(curl.body_str)
23
+ return body if curl.response_code == 200
24
+ { 'status' => curl.response_code, 'error' => body }
25
25
  end
26
26
 
27
27
  private
@@ -33,8 +33,8 @@ module MandarinApi
33
33
 
34
34
  def header
35
35
  {
36
- content_type: :json,
37
- x_auth: generate_x_auth_header(@merchant_id, @secret)
36
+ 'content_type' => 'application/json',
37
+ 'x_auth' => generate_x_auth_header(@merchant_id, @secret)
38
38
  }
39
39
  end
40
40
 
@@ -50,7 +50,7 @@ module MandarinApi
50
50
 
51
51
  def key_transform(hash)
52
52
  new_hash = {}
53
- hash.keys.each do |key|
53
+ hash.each_key do |key|
54
54
  new_hash[camelize(key.to_s)] = case hash[key]
55
55
  when Hash then key_transform hash[key]
56
56
  when Array then hash[key].map { |e| key_transform e }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'mandarin-api'
5
- s.version = '0.4.0'
5
+ s.version = '1.0.0'
6
6
  s.authors = ['Vladimir Bogaevsky']
7
7
  s.email = 'gitvbogaevsky@gmail.com'
8
8
  s.licenses = ['MIT']
@@ -13,16 +13,10 @@ Gem::Specification.new do |s|
13
13
  s.extra_rdoc_files = ['README.md', 'plantuml/callbacks.puml']
14
14
  s.require_paths = ['lib']
15
15
 
16
- s.add_development_dependency('webmock', '~> 2.1')
17
- s.add_development_dependency('rspec', '~> 3.0')
18
- s.add_development_dependency('pry', '~> 0')
19
- s.add_development_dependency('rb-readline', '~> 0.5')
20
- s.add_development_dependency('pry-doc', '~> 0')
21
- s.add_development_dependency('rdoc', '>= 2.4.2', '< 5.0')
22
- s.add_development_dependency('faker', '>= 1.6', '< 1.7')
23
- s.add_development_dependency('pry-byebug', '~> 3.0')
16
+ s.add_development_dependency('rspec', '~> 3.7', '>= 3.7.0')
17
+ s.add_development_dependency('webmock', '~> 3.1', '>= 3.1.1')
24
18
 
25
- s.add_dependency 'rest-client', '>= 2.0', '< 3.0'
19
+ s.add_dependency('curb', '~> 0.9.4')
26
20
 
27
- s.required_ruby_version = '>= 2.2.0'
21
+ s.required_ruby_version = '>= 2.4.2'
28
22
  end
@@ -27,8 +27,8 @@ RSpec.describe MandarinApi::PaymentManager do
27
27
  end
28
28
 
29
29
  describe '#perform_charge' do
30
- let(:email) { Faker::Internet.free_email }
31
- let(:phone) { "+7#{Faker::Number.between(100_000_000, 999_999_999)}" }
30
+ let(:email) { "email-email+#{rand(1000)}@gmail.com" }
31
+ let(:phone) { "+7#{rand(100_000_000..999_999_999)}" }
32
32
  let(:action) { 'pay' }
33
33
  let(:params) do
34
34
  {
@@ -1,24 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
  require 'logger'
3
- require 'active_support/logger'
4
3
 
5
4
  RSpec.describe MandarinApi::Wrapper do
6
5
  include_context 'mocks'
7
6
 
8
7
  let(:wrapper) do
9
- MandarinApi::Wrapper
10
- .new(merchant_id: rand(1000), secret: SecureRandom.hex(5), logger: logger)
8
+ MandarinApi::Wrapper.new(merchant_id: rand(1000), secret: SecureRandom.hex(5), logger: logger)
11
9
  end
12
10
  let(:logger) { nil }
13
11
 
14
12
  describe 'request' do
15
- let(:params) do
16
- {
17
- customer_info: {
18
- email: 'ololo@gmail.com', phone: '8-909-999-88-77'
19
- }
20
- }
21
- end
13
+ let(:params) { { customer_info: { email: 'ololo@gmail.com', phone: '8-909-999-88-77' } } }
22
14
  let(:x_auth) { 'x-auth' }
23
15
  let(:mandarin_adress) { 'https://secure.mandarinpay.com/' }
24
16
  let(:expected) do
@@ -50,7 +42,7 @@ RSpec.describe MandarinApi::Wrapper do
50
42
  end
51
43
 
52
44
  let(:expected) do
53
- header = { content_type: :json, x_auth: x_auth }
45
+ header = { 'content_type' => 'application/json', 'x_auth' => x_auth }
54
46
  url = URI.join(MandarinApi.config.request_url, 'api/card-bindings').to_s
55
47
  "Calling MandarinBank at: #{url}; body: #{params}, header: #{header}\n"
56
48
  end
@@ -69,17 +61,6 @@ RSpec.describe MandarinApi::Wrapper do
69
61
  expect(actual).to eq expected
70
62
  end
71
63
  end
72
-
73
- context 'ActiveSupport::Logger' do
74
- let(:logger) { ActiveSupport::Logger.new('spec/temp/logfile') }
75
- it 'logs' do
76
- allow(wrapper).to receive(:generate_x_auth_header).and_return(x_auth)
77
- allow(MandarinApi).to \
78
- receive_message_chain(:config, :request_url).and_return(mandarin_adress)
79
- wrapper.request('api/card-bindings', params)
80
- expect(actual).to eq expected
81
- end
82
- end
83
64
  end
84
65
  end
85
66
  describe 'camelize' do
@@ -1,24 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
  RSpec.shared_context 'mocks', shared_contex: :metadata do
3
3
  before :each do
4
- user_agent = "rest-client/#{Gem.loaded_specs['rest-client'].version} " \
5
- "(#{RbConfig::CONFIG['host_os']} #{RbConfig::CONFIG['host_cpu']}) " \
6
- "ruby/#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
7
4
  card_assign_body = JSON.generate(customerInfo: { email: 'ololo@gmail.com',
8
5
  phone: '8-909-999-88-77' })
9
- payout_body =
10
- JSON.generate(
11
- payment: { orderId: 123_321, action: 'payout', price: 35_000 },
12
- target: { card: '0eb51e74-e704-4c36-b5cb-8f0227621518' },
13
- customValues: [{ name: 'a', value: 'A' }, {name: 'b', value: 'B' }]
14
- )
15
- header = {
16
- 'Accept' => '*/*', 'Accept-Encoding' => 'gzip, deflate',
17
- 'Content-Length' => '70', 'Content-Type' => 'application/json',
18
- 'Host' => 'secure.mandarinpay.com',
19
- 'User-Agent' => user_agent,
20
- 'X-Auth' => 'x-auth'
21
- }
6
+ payout_body = JSON.generate(
7
+ payment: { orderId: 123_321, action: 'payout', price: 35_000 },
8
+ target: { card: '0eb51e74-e704-4c36-b5cb-8f0227621518' },
9
+ customValues: [{ name: 'a', value: 'A' }, { name: 'b', value: 'B' }]
10
+ )
11
+ header = { 'Content-Type' => 'application/json', 'X-Auth' => 'x-auth' }
22
12
  stub_request(:post, 'https://secure.mandarinpay.com/api/card-bindings')
23
13
  .with(
24
14
  body: card_assign_body,
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'webmock/rspec'
3
3
  require 'mocks'
4
- require 'faker'
5
- require 'pry-byebug'
6
4
 
7
5
  Dir['./lib/**/*.rb'].each { |f| require f }
8
6
 
metadata CHANGED
@@ -1,159 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mandarin-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Bogaevsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-08 00:00:00.000000000 Z
11
+ date: 2017-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: webmock
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.1'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.1'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rspec
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '3.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.0'
41
- - !ruby/object:Gem::Dependency
42
- name: pry
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
19
+ version: '3.7'
20
+ - - ">="
46
21
  - !ruby/object:Gem::Version
47
- version: '0'
22
+ version: 3.7.0
48
23
  type: :development
49
24
  prerelease: false
50
25
  version_requirements: !ruby/object:Gem::Requirement
51
26
  requirements:
52
27
  - - "~>"
53
28
  - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rb-readline
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.5'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
29
+ version: '3.7'
30
+ - - ">="
67
31
  - !ruby/object:Gem::Version
68
- version: '0.5'
32
+ version: 3.7.0
69
33
  - !ruby/object:Gem::Dependency
70
- name: pry-doc
34
+ name: webmock
71
35
  requirement: !ruby/object:Gem::Requirement
72
36
  requirements:
73
37
  - - "~>"
74
38
  - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rdoc
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
39
+ version: '3.1'
87
40
  - - ">="
88
41
  - !ruby/object:Gem::Version
89
- version: 2.4.2
90
- - - "<"
91
- - !ruby/object:Gem::Version
92
- version: '5.0'
42
+ version: 3.1.1
93
43
  type: :development
94
44
  prerelease: false
95
45
  version_requirements: !ruby/object:Gem::Requirement
96
46
  requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: 2.4.2
100
- - - "<"
47
+ - - "~>"
101
48
  - !ruby/object:Gem::Version
102
- version: '5.0'
103
- - !ruby/object:Gem::Dependency
104
- name: faker
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
49
+ version: '3.1'
107
50
  - - ">="
108
51
  - !ruby/object:Gem::Version
109
- version: '1.6'
110
- - - "<"
111
- - !ruby/object:Gem::Version
112
- version: '1.7'
113
- type: :development
114
- prerelease: false
115
- version_requirements: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- version: '1.6'
120
- - - "<"
121
- - !ruby/object:Gem::Version
122
- version: '1.7'
52
+ version: 3.1.1
123
53
  - !ruby/object:Gem::Dependency
124
- name: pry-byebug
54
+ name: curb
125
55
  requirement: !ruby/object:Gem::Requirement
126
56
  requirements:
127
57
  - - "~>"
128
58
  - !ruby/object:Gem::Version
129
- version: '3.0'
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '3.0'
137
- - !ruby/object:Gem::Dependency
138
- name: rest-client
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: '2.0'
144
- - - "<"
145
- - !ruby/object:Gem::Version
146
- version: '3.0'
59
+ version: 0.9.4
147
60
  type: :runtime
148
61
  prerelease: false
149
62
  version_requirements: !ruby/object:Gem::Requirement
150
63
  requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '2.0'
154
- - - "<"
64
+ - - "~>"
155
65
  - !ruby/object:Gem::Version
156
- version: '3.0'
66
+ version: 0.9.4
157
67
  description:
158
68
  email: gitvbogaevsky@gmail.com
159
69
  executables: []
@@ -197,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
197
107
  requirements:
198
108
  - - ">="
199
109
  - !ruby/object:Gem::Version
200
- version: 2.2.0
110
+ version: 2.4.2
201
111
  required_rubygems_version: !ruby/object:Gem::Requirement
202
112
  requirements:
203
113
  - - ">="
@@ -205,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
115
  version: '0'
206
116
  requirements: []
207
117
  rubyforge_project:
208
- rubygems_version: 2.6.7
118
+ rubygems_version: 2.6.13
209
119
  signing_key:
210
120
  specification_version: 4
211
121
  summary: mandarinpay.com api wrapper for ruby