mandarin-api 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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