soapy_yandex 0.0.4 → 0.0.5
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 +4 -4
- data/.rubocop_todo.yml +11 -0
- data/.ruby-version +1 -1
- data/Gemfile +1 -0
- data/Rakefile +1 -0
- data/YMchain.pem +49 -0
- data/lib/soapy_yandex/client.rb +8 -3
- data/lib/soapy_yandex/error.rb +2 -1
- data/lib/soapy_yandex/money_client.rb +2 -1
- data/lib/soapy_yandex/request.rb +1 -0
- data/lib/soapy_yandex/response.rb +1 -0
- data/lib/soapy_yandex/version.rb +2 -1
- data/lib/soapy_yandex.rb +5 -0
- data/soapy_yandex.gemspec +1 -0
- data/spec/money_spec.rb +1 -0
- data/spec/spec_helper.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 931e5150e67cea989c45589e62cf305df9c28dd2
|
|
4
|
+
data.tar.gz: a1984827b6a208d0fb832b4c88eaa77241117901
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9f2a5fc6dd97a997aa553b1872b8c7caec8f34dbf02e11200340442e1021db4c933bc7ed47177e01aeea3753180e1627e811a90bd208066bafacd824a3df5579
|
|
7
|
+
data.tar.gz: 8a7e4a9a0a6ba47129ff8e9d23c59f80805d5f4a92aed80faacd03e88405a44f903bb6787def1b66da6d587ce8f051d2b3085fa7a828dd88eb986d0e189096cf
|
data/.rubocop_todo.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# This configuration was generated by
|
|
2
|
+
# `rubocop --auto-gen-config`
|
|
3
|
+
# on 2016-06-29 18:51:22 +0200 using RuboCop version 0.39.0.
|
|
4
|
+
# The point is for the user to remove these configuration records
|
|
5
|
+
# one by one as the offenses are removed from the code base.
|
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
|
8
|
+
|
|
9
|
+
# Offense count: 1
|
|
10
|
+
Metrics/AbcSize:
|
|
11
|
+
Max: 16
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.2.
|
|
1
|
+
2.2.4
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/YMchain.pem
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
subject=/DC=ru/DC=yamoney/CN=NBCO YM Int
|
|
2
|
+
issuer=/C=RU/L=Moscow/O=Yandex.Money/CN=NBCO YM Root
|
|
3
|
+
-----BEGIN CERTIFICATE-----
|
|
4
|
+
MIIDqjCCApKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJSVTEP
|
|
5
|
+
MA0GA1UEBxMGTW9zY293MRUwEwYDVQQKEwxZYW5kZXguTW9uZXkxFTATBgNVBAMT
|
|
6
|
+
DE5CQ08gWU0gUm9vdDAeFw0xNTEwMjcxNTEyMDBaFw0yNTEwMjcxNTEwMDBaMEMx
|
|
7
|
+
EjAQBgoJkiaJk/IsZAEZFgJydTEXMBUGCgmSJomT8ixkARkWB3lhbW9uZXkxFDAS
|
|
8
|
+
BgNVBAMTC05CQ08gWU0gSW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
|
9
|
+
AQEA328FsVfkHjZ+HQV6ZJ7gsG13ag9kdqDT8B6MvskxPJ13qGdjrsUTLA+5RHta
|
|
10
|
+
awcy8DPfpG6SQeI2mM2Sg8kMPktpfqXV9WBlxwiKqX7gIT3dBoGb6GHkKYEiT/id
|
|
11
|
+
N6EdzYNfV1rD7j/dg7y0Fxn8kMzCbku2NoYiSgrCbQzjqTwOTtM4gurxaXIVb5bP
|
|
12
|
+
eGD1vs5JsF6EyWpRUxLrNXP8CZDB9tLiqrT7xLuG1mB9WSefPDQzOcSP0ukBU3aa
|
|
13
|
+
y8JbwJtkfj9BjrhnLGRJp4YoHGyASvOkq5XwVz1gqyn/QaAxTDycfQfBGNmL0Re1
|
|
14
|
+
kx9ODEkmyDnwHDY+C/fTDxDpIQIDAQABo4GfMIGcMA8GA1UdEwEB/wQFMAMBAf8w
|
|
15
|
+
HQYDVR0OBBYEFCZ6yXTNavz4zpfikZ6lP428m4bSMAsGA1UdDwQEAwIBBjAwBgNV
|
|
16
|
+
HR8EKTAnMCWgI6Ahhh9odHRwOi8vY3Jscy55YW1vbmV5LnJ1L3ltY2EuY3JsMBAG
|
|
17
|
+
CSsGAQQBgjcVAQQDAgEAMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA0GCSqG
|
|
18
|
+
SIb3DQEBCwUAA4IBAQAQv8HlZQBpv4v09JpwzLgWYsWvRbuglZN8AQXgHO19CFmi
|
|
19
|
+
jwPMgkhFnJ/Qv33grhmTMK8Qx51VFZpJ/WZMmrlT7LR9E49j1QZhCba9K4jdv/1w
|
|
20
|
+
Nnri6cTfcINrVw7V7aBuZmEfx7/9bsCTa1gddi6AAHMM8/9yhmTsQmjuRUg1tmt/
|
|
21
|
+
KoRmc27ga4NY2uclWDep3cIi020/87jXgIhAm68CU+/qy70EtueSvs4/vifdj3LN
|
|
22
|
+
5H3RPuc7Oay093G+s7BKTuq2ftoCtr0BKXIYp18kBb9trEp6yge3kSDZBZiIuHx6
|
|
23
|
+
Ur7/7nPKw3vGz1v/r+W416f7pMox2UpfPlHrQ7Ox
|
|
24
|
+
-----END CERTIFICATE-----
|
|
25
|
+
|
|
26
|
+
subject=/C=RU/L=Moscow/O=Yandex.Money/CN=NBCO YM Root
|
|
27
|
+
issuer=/C=RU/L=Moscow/O=Yandex.Money/CN=NBCO YM Root
|
|
28
|
+
-----BEGIN CERTIFICATE-----
|
|
29
|
+
MIIDhDCCAmygAwIBAgIBATANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJSVTEP
|
|
30
|
+
MA0GA1UEBxMGTW9zY293MRUwEwYDVQQKEwxZYW5kZXguTW9uZXkxFTATBgNVBAMT
|
|
31
|
+
DE5CQ08gWU0gUm9vdDAeFw0xNTEwMjcxNTEwMDBaFw0yNTEwMjcxNTEwMDBaMEwx
|
|
32
|
+
CzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFTATBgNVBAoTDFlhbmRleC5N
|
|
33
|
+
b25leTEVMBMGA1UEAxMMTkJDTyBZTSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
|
34
|
+
AQ8AMIIBCgKCAQEAzZ/d+4ohJafRq73KtWXBGh78hFIl1hcVU4TtylTiR66x+HYh
|
|
35
|
+
Y6VVQclhhcOsLMfzjOx/8d7HkbnI5gNnJmCej9ns0yDhZHQtHBuTe+7y7zNQtQF/
|
|
36
|
+
Xe1YQrIxcDZun33X6VW2kag2A/6p2m28P6RIms4lbqU/8y74r7m6nSfNW1atL6D4
|
|
37
|
+
p2AR7qz07/p7aIy2nfB0K4C7QKAguQcXPGHH9BgI10+FtpzAi2KYSmvlMHjcdpcs
|
|
38
|
+
IBWACQVyrd0/payDHQBS4M2Ecmnr+2+EpSt/eg8QiIiGVy+99PxFqFYuLx/XtuH3
|
|
39
|
+
a6xwMZCRMjciRKy9JT2BQhJte2UeAlDpW2ICNQIDAQABo3EwbzAPBgNVHRMBAf8E
|
|
40
|
+
BTADAQH/MB0GA1UdDgQWBBTSTaqjsJgBMV8CiKVDdayytLdmqTALBgNVHQ8EBAMC
|
|
41
|
+
AQYwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybHMueWFtb25leS5ydS95bWNh
|
|
42
|
+
LmNybDANBgkqhkiG9w0BAQsFAAOCAQEAB9e+pde82S+mAvTkHHxmEBA5uHCToBKp
|
|
43
|
+
R653iU5NlM8CEyTTzXSdwl4HowoQM5cIDJA6i9cRtnDDGL04AxAflcsV4eGytqKj
|
|
44
|
+
GeNBT/+8fuDxcekAwJ4pJvZS/ginxDOs3LLNeRcdPP0mUDT8XKrpRKwat44+PWDo
|
|
45
|
+
gpU/mhG6p7Qjejf+hHsR3/ionjXPOT0qoo3N8ez0OU6GL/zdx7YMSZbffITYTAeY
|
|
46
|
+
0WR/zoXEFonWIAr4weK+j9Z8l8MCoZ19Cg8ORKfrqmf2b9HmrO8+4wUj4vQJX4cl
|
|
47
|
+
us7t6n1GJvWrnaU1vi3rULZAqm+i+RSHnfFZhvE0mKIDdAyOzlVQYg==
|
|
48
|
+
-----END CERTIFICATE-----
|
|
49
|
+
|
data/lib/soapy_yandex/client.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module SoapyYandex
|
|
2
3
|
class Client
|
|
3
4
|
def initialize(opts)
|
|
@@ -10,7 +11,7 @@ module SoapyYandex
|
|
|
10
11
|
http_request = HTTParty.post(
|
|
11
12
|
uri_base + request.api_path,
|
|
12
13
|
headers: headers,
|
|
13
|
-
|
|
14
|
+
ssl_ca_file: ca_file,
|
|
14
15
|
pem: ssl_cert.to_pem + ssl_key.to_pem,
|
|
15
16
|
body: sign(request.to_s)
|
|
16
17
|
)
|
|
@@ -24,11 +25,11 @@ module SoapyYandex
|
|
|
24
25
|
def extract_response(body)
|
|
25
26
|
message = OpenSSL::PKCS7.new(body)
|
|
26
27
|
unless message.verify([remote_cert], empty_cert_store, nil, OpenSSL::PKCS7::NOVERIFY)
|
|
27
|
-
|
|
28
|
+
raise Error, 'Response signature verification failed'
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
response = Response.new(message.data)
|
|
31
|
-
|
|
32
|
+
raise ServerError, response.error_code if response.error?
|
|
32
33
|
response
|
|
33
34
|
end
|
|
34
35
|
|
|
@@ -52,6 +53,10 @@ module SoapyYandex
|
|
|
52
53
|
OpenSSL::PKCS7.sign(ssl_cert, ssl_key, payload, [], OpenSSL::PKCS7::BINARY).to_s
|
|
53
54
|
end
|
|
54
55
|
|
|
56
|
+
def ca_file
|
|
57
|
+
SoapyYandex.root.join('YMchain.pem').to_s
|
|
58
|
+
end
|
|
59
|
+
|
|
55
60
|
def headers
|
|
56
61
|
{ 'Content-Type' => 'application/pkcs7-mime' }
|
|
57
62
|
end
|
data/lib/soapy_yandex/error.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module SoapyYandex
|
|
2
3
|
class Error < ::RuntimeError
|
|
3
4
|
end
|
|
@@ -25,7 +26,7 @@ module SoapyYandex
|
|
|
25
26
|
44 => 'Too many transactions in timeframe',
|
|
26
27
|
45 => 'Not enough funds',
|
|
27
28
|
46 => 'Amount too small'
|
|
28
|
-
}
|
|
29
|
+
}.freeze
|
|
29
30
|
|
|
30
31
|
attr_reader :error_code
|
|
31
32
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module SoapyYandex
|
|
2
3
|
class MoneyClient < Client
|
|
3
4
|
def test_deposition(args)
|
|
@@ -31,7 +32,7 @@ module SoapyYandex
|
|
|
31
32
|
private
|
|
32
33
|
|
|
33
34
|
def format_amount(args)
|
|
34
|
-
|
|
35
|
+
raise Error, 'Amount must be a BigDecimal' unless args[:amount].is_a?(BigDecimal)
|
|
35
36
|
args[:amount] = format('%0.2f', args[:amount])
|
|
36
37
|
end
|
|
37
38
|
end
|
data/lib/soapy_yandex/request.rb
CHANGED
data/lib/soapy_yandex/version.rb
CHANGED
data/lib/soapy_yandex.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'httparty'
|
|
2
3
|
require 'openssl'
|
|
3
4
|
require 'ox'
|
|
@@ -13,4 +14,8 @@ require 'soapy_yandex/version'
|
|
|
13
14
|
module SoapyYandex
|
|
14
15
|
CURRENCY_DEMO_RUBLES = 10643
|
|
15
16
|
CURRENCY_RUBLES = 643
|
|
17
|
+
|
|
18
|
+
def self.root
|
|
19
|
+
Pathname.new(File.expand_path(File.join(__FILE__, '..', '..')))
|
|
20
|
+
end
|
|
16
21
|
end
|
data/soapy_yandex.gemspec
CHANGED
data/spec/money_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: soapy_yandex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ad2games GmbH
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2016-07-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ox
|
|
@@ -145,11 +145,13 @@ extra_rdoc_files: []
|
|
|
145
145
|
files:
|
|
146
146
|
- ".gitignore"
|
|
147
147
|
- ".rspec"
|
|
148
|
+
- ".rubocop_todo.yml"
|
|
148
149
|
- ".ruby-version"
|
|
149
150
|
- Gemfile
|
|
150
151
|
- LICENSE.txt
|
|
151
152
|
- README.md
|
|
152
153
|
- Rakefile
|
|
154
|
+
- YMchain.pem
|
|
153
155
|
- circle.yml
|
|
154
156
|
- lib/soapy_yandex.rb
|
|
155
157
|
- lib/soapy_yandex/client.rb
|
|
@@ -192,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
192
194
|
version: '0'
|
|
193
195
|
requirements: []
|
|
194
196
|
rubyforge_project:
|
|
195
|
-
rubygems_version: 2.
|
|
197
|
+
rubygems_version: 2.5.1
|
|
196
198
|
signing_key:
|
|
197
199
|
specification_version: 4
|
|
198
200
|
summary: Client library for Yandex Money.
|