soapy_yandex 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b9c9339508c74040ae90711d0614578fe4fda13c
4
+ data.tar.gz: 2e3ef92fd70cf0582c2b393d28ecc79567d1ccb8
5
+ SHA512:
6
+ metadata.gz: 6d807691dda10b37884f627946b87b8c57ff1c7eda96d5098ca753bfb283d781d49062631f3fb7f9cb252fa5f5aea1ca711e8c99b8d451544fae2d9b35d76965
7
+ data.tar.gz: c911d668a92e2ae23ec65e778cdda86e848e92eefc4bce579404eb18ee1c8685008a31e6117713483f583cc3a62a72a5564cc497b16d0c32ba4bd75fef04cb54
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ /.bundle/
2
+ /pkg/
3
+ /Gemfile.lock
4
+ /*.pem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.0
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :test do
6
+ gem 'codeclimate-test-reporter', require: nil
7
+ gem 'rspec_junit_formatter', github: 'circleci/rspec_junit_formatter'
8
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Niko Dziemba
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # SoapyYandex
2
+
3
+ [![Circle CI](https://circleci.com/gh/ad2games/soapy_yandex/tree/master.svg?style=svg&circle-token=8be9c1e0316a8b902677fde68be9587af8926915)](https://circleci.com/gh/ad2games/soapy_yandex/tree/master)
4
+ [![Code Climate](https://codeclimate.com/repos/54b7e4e9695680436f000d5d/badges/70ac279dcc117a7ea246/gpa.svg)](https://codeclimate.com/repos/54b7e4e9695680436f000d5d/feed)
5
+ [![Test Coverage](https://codeclimate.com/repos/54b7e4e9695680436f000d5d/badges/70ac279dcc117a7ea246/coverage.svg)](https://codeclimate.com/repos/54b7e4e9695680436f000d5d/feed)
6
+
7
+ Client library for Yandex Money.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'soapy_yandex'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install soapy_yandex
24
+
25
+ ## Usage
26
+
27
+ ```ruby
28
+ # Create a new client instance
29
+ client = SoapyYandex::MoneyClient.new(
30
+ server: ENV['YANDEX_SERVER'],
31
+ ssl_cert: File.read('cert.pem'),
32
+ ssl_key: File.read('key.pem'),
33
+ remote_cert: File.read('remote_cert.pem'),
34
+ ssl_key_passphrase: ENV['SSL_KEY_PASSPHRASE'],
35
+ )
36
+
37
+ # Get account balance
38
+ result = client.balance(agentId: 123)
39
+ result.success? # => true
40
+ result.attributes[:balance] # => '4200.00'
41
+
42
+ # Test deposition
43
+ result = client.test_deposition(
44
+ agentId: 123,
45
+ dstAccount: 321,
46
+ amount: BigDecimal.new(10.0, 3),
47
+ currency: SoapyYandex::CURRENCY_DEMO_RUBLES,
48
+ contract: 'Test deposit'
49
+ )
50
+ result.success? # => true
51
+
52
+ # Make deposition
53
+ result = client.make_deposition(
54
+ agentId: 123,
55
+ dstAccount: 321,
56
+ amount: BigDecimal.new(10.0, 3),
57
+ currency: SoapyYandex::CURRENCY_DEMO_RUBLES,
58
+ contract: 'Test deposit'
59
+ )
60
+ result.success? # => true
61
+ ```
62
+
63
+ ## Contributing
64
+
65
+ 1. Fork it (https://github.com/ad2games/soapy_yandex/fork)
66
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
67
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
68
+ 4. Push to the branch (`git push origin my-new-feature`)
69
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,63 @@
1
+ module SoapyYandex
2
+ class Client
3
+ def initialize(opts)
4
+ @opts = opts
5
+ end
6
+
7
+ protected
8
+
9
+ def run(request)
10
+ http_request = HTTParty.post(
11
+ uri_base + request.api_path,
12
+ headers: headers,
13
+ verify_peer: false,
14
+ pem: ssl_cert.to_pem + ssl_key.to_pem,
15
+ body: sign(request.to_s)
16
+ )
17
+ extract_response(http_request.body)
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :opts
23
+
24
+ def extract_response(body)
25
+ message = OpenSSL::PKCS7.new(body)
26
+ unless message.verify([remote_cert], empty_cert_store, nil, OpenSSL::PKCS7::NOVERIFY)
27
+ fail Error, 'Response signature verification failed'
28
+ end
29
+
30
+ response = Response.new(message.data)
31
+ fail ServerError, response.error_code if response.error?
32
+ response
33
+ end
34
+
35
+ def empty_cert_store
36
+ @empty_cert_store ||= OpenSSL::X509::Store.new
37
+ end
38
+
39
+ def remote_cert
40
+ @remote_cert ||= OpenSSL::X509::Certificate.new(opts[:remote_cert])
41
+ end
42
+
43
+ def ssl_cert
44
+ @ssl_cert ||= OpenSSL::X509::Certificate.new(opts[:ssl_cert])
45
+ end
46
+
47
+ def ssl_key
48
+ @ssl_key ||= OpenSSL::PKey::RSA.new(opts[:ssl_key], opts[:ssl_key_passphrase])
49
+ end
50
+
51
+ def sign(payload)
52
+ OpenSSL::PKCS7.sign(ssl_cert, ssl_key, payload, [], OpenSSL::PKCS7::BINARY).to_s
53
+ end
54
+
55
+ def headers
56
+ { 'Content-Type' => 'application/pkcs7-mime' }
57
+ end
58
+
59
+ def uri_base
60
+ 'https://' + opts[:server]
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,44 @@
1
+ module SoapyYandex
2
+ class Error < ::RuntimeError
3
+ end
4
+
5
+ class ServerError < Error
6
+ ERROR_MESSAGES = {
7
+ 10 => 'XML parse error',
8
+ 11 => 'Invalid agendId',
9
+ 12 => 'Invalid subAgentId',
10
+ 14 => 'Invalid currency',
11
+ 15 => 'Invalid requestDT',
12
+ 16 => 'Invalid dstAccount',
13
+ 17 => 'Invalid amount',
14
+ 18 => 'Invalid clientOrderId',
15
+ 19 => 'Invalid contract',
16
+ 21 => 'Operation not available',
17
+ 26 => 'There was already a transaction with this clientOrderId',
18
+ 50 => 'Unable to read signed message',
19
+ 51 => 'Signature verification failed',
20
+ 53 => 'Signed by unknown certificate',
21
+ 40 => 'User account closed',
22
+ 41 => 'User account blocked',
23
+ 42 => 'Payee identifier does not exist',
24
+ 43 => 'Amount too big',
25
+ 44 => 'Too many transactions in timeframe',
26
+ 45 => 'Not enough funds',
27
+ 46 => 'Amount too small',
28
+ }
29
+
30
+ attr_reader :error_code
31
+
32
+ def initialize(error_code)
33
+ @error_code = error_code
34
+ end
35
+
36
+ def error_code_string
37
+ ERROR_MESSAGES.fetch(error_code, 'Unknown error')
38
+ end
39
+
40
+ def to_s
41
+ "SoapyYandex Server Error: #{error_code_string}"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,38 @@
1
+ module SoapyYandex
2
+ class MoneyClient < Client
3
+ def test_deposition(args)
4
+ format_amount(args)
5
+
6
+ run Request.new(
7
+ '/webservice/deposition/api/testDeposition',
8
+ 'testDepositionRequest',
9
+ args
10
+ )
11
+ end
12
+
13
+ def make_deposition(args)
14
+ format_amount(args)
15
+
16
+ run Request.new(
17
+ '/webservice/deposition/api/makeDeposition',
18
+ 'makeDepositionRequest',
19
+ args
20
+ )
21
+ end
22
+
23
+ def balance(args)
24
+ run Request.new(
25
+ '/webservice/deposition/api/balance',
26
+ 'balanceRequest',
27
+ args
28
+ )
29
+ end
30
+
31
+ private
32
+
33
+ def format_amount(args)
34
+ fail Error, 'Amount must be a BigDecimal' unless args[:amount].is_a?(BigDecimal)
35
+ args[:amount] = format('%0.2f', args[:amount])
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,40 @@
1
+ module SoapyYandex
2
+ class Request
3
+ attr_reader :api_path
4
+
5
+ def initialize(api_path, name, attributes)
6
+ @api_path = api_path
7
+ @name = name
8
+ @attributes = attributes
9
+ end
10
+
11
+ def to_s
12
+ Ox.dump(xml, with_xml: true)
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :name, :attributes
18
+
19
+ def xml
20
+ Ox::Document.new(version: '1.0', encoding: 'UTF-8').tap do |doc|
21
+ doc << node_with_attributes(name, attributes.merge(default_attributes))
22
+ end
23
+ end
24
+
25
+ def default_attributes
26
+ {
27
+ requestDT: DateTime.now.to_s,
28
+ clientOrderId: SecureRandom.hex(12)
29
+ }
30
+ end
31
+
32
+ def node_with_attributes(name, attributes)
33
+ Ox::Element.new(name).tap do |node|
34
+ attributes.each do |key, value|
35
+ node[key] = value
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ module SoapyYandex
2
+ class Response
3
+ attr_reader :xml
4
+
5
+ def initialize(xml)
6
+ @xml = xml
7
+ end
8
+
9
+ def success?
10
+ attributes[:status].to_i == 0
11
+ end
12
+
13
+ def error?
14
+ attributes[:status].to_i == 3
15
+ end
16
+
17
+ def error_code
18
+ attributes[:error].to_i
19
+ end
20
+
21
+ def attributes
22
+ doc.nodes.first.attributes
23
+ end
24
+
25
+ private
26
+
27
+ def doc
28
+ @doc ||= Ox.parse(xml)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module SoapyYandex
2
+ VERSION = '0.0.2'
3
+ end
@@ -0,0 +1,16 @@
1
+ require 'httparty'
2
+ require 'openssl'
3
+ require 'ox'
4
+ require 'securerandom'
5
+
6
+ require 'soapy_yandex/client'
7
+ require 'soapy_yandex/error'
8
+ require 'soapy_yandex/money_client'
9
+ require 'soapy_yandex/request'
10
+ require 'soapy_yandex/response'
11
+ require 'soapy_yandex/version'
12
+
13
+ module SoapyYandex
14
+ CURRENCY_DEMO_RUBLES = 10643
15
+ CURRENCY_RUBLES = 643
16
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'soapy_yandex/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'soapy_yandex'
8
+ spec.version = SoapyYandex::VERSION
9
+ spec.authors = ['ad2games GmbH']
10
+ spec.email = ['developers@ad2games.com']
11
+ spec.summary = 'Client library for Yandex Money.'
12
+ spec.description = 'Client library for Yandex Money.'
13
+ spec.homepage = ''
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(/^(test|spec|features)\//)
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_runtime_dependency 'ox', '~> 2.1'
22
+ spec.add_runtime_dependency 'httparty', '~> 0.13'
23
+
24
+ spec.add_development_dependency 'bundler'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rspec'
27
+ spec.add_development_dependency 'timecop'
28
+ spec.add_development_dependency 'webmock'
29
+ spec.add_development_dependency 'vcr'
30
+ spec.add_development_dependency 'pry'
31
+ end
@@ -0,0 +1,10 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIBfDCCASYCCQCaUG5dEFIjlTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
3
+ VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0
4
+ cyBQdHkgTHRkMB4XDTE1MDExOTEwMzk0MFoXDTI1MDExNjEwMzk0MFowRTELMAkG
5
+ A1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0
6
+ IFdpZGdpdHMgUHR5IEx0ZDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDBya+qpgVq
7
+ +kYHTUL0EfuDNDuLJUmu4eAuF3dmQbpCCil63IHqpgfxyq0SKQEdCl72qXPx+HfG
8
+ 8/6fECidwWFlAgMBAAEwDQYJKoZIhvcNAQEFBQADQQCpi6C/p0lvwXqFCTuaxo0J
9
+ CgQYi5D+u32r95b4vruNC8gNSiuizMs6cxpFwbQQT7xyKHb72XlVBuJ7y8K7giCZ
10
+ -----END CERTIFICATE-----
@@ -0,0 +1,9 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIBOwIBAAJBAMHJr6qmBWr6RgdNQvQR+4M0O4slSa7h4C4Xd2ZBukIKKXrcgeqm
3
+ B/HKrRIpAR0KXvapc/H4d8bz/p8QKJ3BYWUCAwEAAQJAN1/RcZrlO29uqVF7i1DE
4
+ JPa8+QLbrjxfGeycsryfY5URRInbkbcy4MmcY0iSSy8OpQgvsG9CXow/PBL04l1s
5
+ YQIhAP/7348QlgoibwMv3UcKIjQ1d5VlHttgrH9w+uxJai25AiEAwczPbPyAKQH4
6
+ xY2/LThwsVJqI6hh4I+w9vB7nJOFBw0CIQDL7epx3PLK7BeoYE9WMtqA4T99QuvM
7
+ NT324RjleK8f8QIgNhXkpbPqSIeGWAvxGLuxp6sqd/0cI8G2T5RZyx7Yd1kCIQCt
8
+ mZ3+pogC+1Fmy8JdmLc4dm3PixAtnGsACKciG43jhg==
9
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDdDCCAlygAwIBAgIETQ9fKDANBgkqhkiG9w0BAQUFADB8MQswCQYDVQQGEwJS
3
+ VTEPMA0GA1UECBMGUnVzc2lhMRkwFwYDVQQHExBTYWludC1QZXRlcnNidXJnMRgw
4
+ FgYDVQQKEw9QUyBZYW5kZXguTW9uZXkxEDAOBgNVBAsTB1Vua25vd24xFTATBgNV
5
+ BAMTDFlhbmRleC5Nb25leTAeFw0xMDEyMjAxMzUwMzJaFw0yMDEyMTcxMzUwMzJa
6
+ MHwxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZSdXNzaWExGTAXBgNVBAcTEFNhaW50
7
+ LVBldGVyc2J1cmcxGDAWBgNVBAoTD1BTIFlhbmRleC5Nb25leTEQMA4GA1UECxMH
8
+ VW5rbm93bjEVMBMGA1UEAxMMWWFuZGV4Lk1vbmV5MIIBIjANBgkqhkiG9w0BAQEF
9
+ AAOCAQ8AMIIBCgKCAQEAq35Vg2B/99aWhwopbOCmuX2MBq9nUXHl4YY6oaQKo54J
10
+ 3dsRnJzCJksssiPc7TvhUSVzPui0JF3BVaKivoIUaQl7RQHU9IFcSbdvqfk1i0KK
11
+ JFG5514tKiZouWq7Tq0XXKdnCI2Aaia8JvRvk1rV33T/Q+LuhQjdXMjUUfgxK5/o
12
+ kaNWP04UP/ZOeX60Qtm8Hdj5vmLVMLQvRCBDHf9q6M3lv1RQnbp6Tumnjpd5uAxE
13
+ TyKfXlX/vKRiKfKz52udOvyguYjarMykf9AUqJ6nDO0CoqBe1kKKow9ygIFKmDgW
14
+ GXXQN+T8kYD2epNTJtDGVFqBHrOvMQb29S/pbuwT7wIDAQABMA0GCSqGSIb3DQEB
15
+ BQUAA4IBAQAbfixrrJEp82jHyrL/PuVTI+5aJTWbpKynAJi0fu2dPDXuqNpfzw4P
16
+ 11YU6sKkeXm9AJ3RLlww+08L29R9TuXhlPC6dUfdP07jKg9JY5pacyfWRTgril3T
17
+ RMQbR92t4LbNFJOuzsX3/+ZpmoemTau1UCpfG1K2ijVHEPvD6FcQJ/jVf3cdiWBB
18
+ esaVSCUyOMjBi8Dp4vv57XVAuZdJda0Ebe8uBcNKVAdtMQsPyMUHQrru2dibIEjU
19
+ BP4ALEe4XIJevdt7V+mourTA/EcY9NVn8iylVC9BPDOrMItmig92vloKJIfReSgx
20
+ amVIPgev7jcS/Bkg7oV3L4jTtq2xGw5T
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,25 @@
1
+ -----BEGIN PKCS7-----
2
+ MIIEIwYJKoZIhvcNAQcCoIIEFDCCBBACAQExCzAJBgUrDgMCGgUAMIHjBgkqhkiG
3
+ 9w0BBwGggdUEgdI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
4
+ Pgo8dGVzdERlcG9zaXRpb25SZXF1ZXN0IGFnZW50SWQ9IjIwMDQ1MSIgZHN0QWNj
5
+ b3VudD0iMTIzIiBhbW91bnQ9IjEwLjAwIiBjdXJyZW5jeT0iMTA2NDMiIGNvbnRy
6
+ YWN0PSJUZXN0IGRlcG9zaXQiIHJlcXVlc3REVD0iMjAxNS0wMS0xOVQwMDowMDow
7
+ MCswMDowMCIgY2xpZW50T3JkZXJJZD0iMiIvPgqgggGAMIIBfDCCASYCCQCaUG5d
8
+ EFIjlTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29t
9
+ ZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTE1
10
+ MDExOTEwMzk0MFoXDTI1MDExNjEwMzk0MFowRTELMAkGA1UEBhMCQVUxEzARBgNV
11
+ BAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0
12
+ ZDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDBya+qpgVq+kYHTUL0EfuDNDuLJUmu
13
+ 4eAuF3dmQbpCCil63IHqpgfxyq0SKQEdCl72qXPx+HfG8/6fECidwWFlAgMBAAEw
14
+ DQYJKoZIhvcNAQEFBQADQQCpi6C/p0lvwXqFCTuaxo0JCgQYi5D+u32r95b4vruN
15
+ C8gNSiuizMs6cxpFwbQQT7xyKHb72XlVBuJ7y8K7giCZMYIBkjCCAY4CAQEwUjBF
16
+ MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
17
+ ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkAgkAmlBuXRBSI5UwCQYFKw4DAhoFAKCB2DAY
18
+ BgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNTAxMjAx
19
+ MzQ4NTNaMCMGCSqGSIb3DQEJBDEWBBT2SkBHk8d3fmGkdM8mecXZEvfITDB5Bgkq
20
+ hkiG9w0BCQ8xbDBqMAsGCWCGSAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZIAWUD
21
+ BAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAH
22
+ BgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0BAQEFAARAFk5nBSWmNURb
23
+ 4JFozYuNs3u2PMSiXHm7bBU5Iw/XKQFFGyDKZOsOK5nUwiih2cvoNd8XkRurW2T6
24
+ F4TUHrJ/tg==
25
+ -----END PKCS7-----
@@ -0,0 +1,25 @@
1
+ -----BEGIN PKCS7-----
2
+ MIIELQYJKoZIhvcNAQcCoIIEHjCCBBoCAQExCzAJBgUrDgMCGgUAMIHtBgkqhkiG
3
+ 9w0BBwGggd8Egdw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
4
+ Pgo8bWFrZURlcG9zaXRpb25SZXF1ZXN0IGFnZW50SWQ9IjIwMDQ1MSIgZHN0QWNj
5
+ b3VudD0iNDEwMDMyMjY1MDYwNCIgYW1vdW50PSIxMC4wMCIgY3VycmVuY3k9IjEw
6
+ NjQzIiBjb250cmFjdD0iVGVzdCBkZXBvc2l0IiByZXF1ZXN0RFQ9IjIwMTUtMDEt
7
+ MTlUMDA6MDA6MDArMDA6MDAiIGNsaWVudE9yZGVySWQ9IjMiLz4KoIIBgDCCAXww
8
+ ggEmAgkAmlBuXRBSI5UwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQVUxEzAR
9
+ BgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5
10
+ IEx0ZDAeFw0xNTAxMTkxMDM5NDBaFw0yNTAxMTYxMDM5NDBaMEUxCzAJBgNVBAYT
11
+ AkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRn
12
+ aXRzIFB0eSBMdGQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAwcmvqqYFavpGB01C
13
+ 9BH7gzQ7iyVJruHgLhd3ZkG6QgopetyB6qYH8cqtEikBHQpe9qlz8fh3xvP+nxAo
14
+ ncFhZQIDAQABMA0GCSqGSIb3DQEBBQUAA0EAqYugv6dJb8F6hQk7msaNCQoEGIuQ
15
+ /rt9q/eW+L67jQvIDUoroszLOnMaRcG0EE+8cih2+9l5VQbie8vCu4IgmTGCAZIw
16
+ ggGOAgEBMFIwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAf
17
+ BgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZAIJAJpQbl0QUiOVMAkGBSsO
18
+ AwIaBQCggdgwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx
19
+ DxcNMTUwMTIwMTM0ODUzWjAjBgkqhkiG9w0BCQQxFgQUXQY84sMBoZJyoh1sGKGb
20
+ +ggStd8weQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEW
21
+ MAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZI
22
+ hvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAE
23
+ QLcuxv3pPTzV2r5ezywgmHwoRk3GI97638Ey5VLmQkCkPDI8244xompjhZHx2aWl
24
+ uLJYm8y+ai0Q1Bcq4Zqnu04=
25
+ -----END PKCS7-----
@@ -0,0 +1,23 @@
1
+ -----BEGIN PKCS7-----
2
+ MIID0wYJKoZIhvcNAQcCoIIDxDCCA8ACAQExCzAJBgUrDgMCGgUAMIGTBgkqhkiG
3
+ 9w0BBwGggYUEgYI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
4
+ Pgo8YmFsYW5jZVJlcXVlc3QgYWdlbnRJZD0iMjAwNDUxIiByZXF1ZXN0RFQ9IjIw
5
+ MTUtMDEtMTlUMDA6MDA6MDArMDA6MDAiIGNsaWVudE9yZGVySWQ9IjQiLz4KoIIB
6
+ gDCCAXwwggEmAgkAmlBuXRBSI5UwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMC
7
+ QVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdp
8
+ dHMgUHR5IEx0ZDAeFw0xNTAxMTkxMDM5NDBaFw0yNTAxMTYxMDM5NDBaMEUxCzAJ
9
+ BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5l
10
+ dCBXaWRnaXRzIFB0eSBMdGQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAwcmvqqYF
11
+ avpGB01C9BH7gzQ7iyVJruHgLhd3ZkG6QgopetyB6qYH8cqtEikBHQpe9qlz8fh3
12
+ xvP+nxAoncFhZQIDAQABMA0GCSqGSIb3DQEBBQUAA0EAqYugv6dJb8F6hQk7msaN
13
+ CQoEGIuQ/rt9q/eW+L67jQvIDUoroszLOnMaRcG0EE+8cih2+9l5VQbie8vCu4Ig
14
+ mTGCAZIwggGOAgEBMFIwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3Rh
15
+ dGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZAIJAJpQbl0QUiOV
16
+ MAkGBSsOAwIaBQCggdgwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG
17
+ 9w0BCQUxDxcNMTUwMTIwMTM0ODUzWjAjBgkqhkiG9w0BCQQxFgQUduN9UMplgWqV
18
+ wRIZZgfvweVujtwweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZI
19
+ AWUDBAEWMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAw
20
+ DQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcN
21
+ AQEBBQAEQAeEmpblR8R+a6Njkk2yRpX9z58Ts0I8fWEabJYY5sM4+XVCdYJe1USP
22
+ ZhR5Q8Y3W07CiS6iUF3FB6DrSh2aSIA=
23
+ -----END PKCS7-----
@@ -0,0 +1,25 @@
1
+ -----BEGIN PKCS7-----
2
+ MIIELQYJKoZIhvcNAQcCoIIEHjCCBBoCAQExCzAJBgUrDgMCGgUAMIHtBgkqhkiG
3
+ 9w0BBwGggd8Egdw8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
4
+ Pgo8dGVzdERlcG9zaXRpb25SZXF1ZXN0IGFnZW50SWQ9IjIwMDQ1MSIgZHN0QWNj
5
+ b3VudD0iNDEwMDMyMjY1MDYwNCIgYW1vdW50PSIxMC4wMCIgY3VycmVuY3k9IjEw
6
+ NjQzIiBjb250cmFjdD0iVGVzdCBkZXBvc2l0IiByZXF1ZXN0RFQ9IjIwMTUtMDEt
7
+ MTlUMDA6MDA6MDArMDA6MDAiIGNsaWVudE9yZGVySWQ9IjEiLz4KoIIBgDCCAXww
8
+ ggEmAgkAmlBuXRBSI5UwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQVUxEzAR
9
+ BgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5
10
+ IEx0ZDAeFw0xNTAxMTkxMDM5NDBaFw0yNTAxMTYxMDM5NDBaMEUxCzAJBgNVBAYT
11
+ AkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRn
12
+ aXRzIFB0eSBMdGQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAwcmvqqYFavpGB01C
13
+ 9BH7gzQ7iyVJruHgLhd3ZkG6QgopetyB6qYH8cqtEikBHQpe9qlz8fh3xvP+nxAo
14
+ ncFhZQIDAQABMA0GCSqGSIb3DQEBBQUAA0EAqYugv6dJb8F6hQk7msaNCQoEGIuQ
15
+ /rt9q/eW+L67jQvIDUoroszLOnMaRcG0EE+8cih2+9l5VQbie8vCu4IgmTGCAZIw
16
+ ggGOAgEBMFIwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAf
17
+ BgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZAIJAJpQbl0QUiOVMAkGBSsO
18
+ AwIaBQCggdgwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx
19
+ DxcNMTUwMTIwMTM0ODUzWjAjBgkqhkiG9w0BCQQxFgQUOFkqWG+wGVAJFCpUokiP
20
+ nWtNoW4weQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEW
21
+ MAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZI
22
+ hvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAE
23
+ QHr38L1OVLAkXECB+g9ujDhUksDXEeKjV45KQdeGLFCV6tUYurLlIUwFdNrVK1V/
24
+ X6r5Z/qPbFCklbP/KoYci8o=
25
+ -----END PKCS7-----
@@ -0,0 +1,94 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://yandex-server/webservice/deposition/api/balance
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: |
9
+ -----BEGIN PKCS7-----
10
+ MIIHygYJKoZIhvcNAQcCoIIHuzCCB7cCAQExCzAJBgUrDgMCGgUAMIGqBgkqhkiG
11
+ 9w0BBwGggZwEgZk8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
12
+ Pgo8YmFsYW5jZVJlcXVlc3QgYWdlbnRJZD0iMjAwNDUxIiByZXF1ZXN0RFQ9IjIw
13
+ MTUtMDEtMTlUMDA6MDA6MDArMDA6MDAiIGNsaWVudE9yZGVySWQ9ImVhNTE1YzI1
14
+ MDQzMmEzMGFjOTFhMDA4NSIvPgqgggSZMIIElTCCA/6gAwIBAgIKE93ALgACAAA6
15
+ BDANBgkqhkiG9w0BAQUFADBJMQswCQYDVQQGEwJSVTEYMBYGA1UEChMPUFMgWWFu
16
+ ZGV4Lk1vbmV5MSAwHgYDVQQDExdZYW5kZXggTW9uZXkgSXNzdWluZyBDQTAeFw0x
17
+ NDExMTAxMzQyMjFaFw0xNTExMTAxMzQyMjFaMH0xCzAJBgNVBAYTAkRFMRAwDgYD
18
+ VQQIEwdHZXJtYW55MRYwFAYDVQQKEw1hZDJnYW1lcyBHbWJIMR8wHQYDVQQDExYv
19
+ YnVzaW5lc3MvYWQyZ2FtZXNnbWJoMSMwIQYJKoZIhvcNAQkBFhRmaW5hbmNlQGFk
20
+ MmdhbWVzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMvHkV/K
21
+ PUcxuHruB9b+3S3kCldVTa/kIZQs3xPGLy48Z9vP8sfz3IN3ruBFKnOT54KDdMY9
22
+ GIa7/IXUTPCvjxL295RdN/LdfjEG9rbKY5KPJxCTMkpO8e4o36CGsamuhVGp76K6
23
+ Exh060ADdIL8BsE5MgNz0V/HPiXg2VrtIPCZJb5wY9ea++iqSok7uhrLOUCNhan4
24
+ K8qowPUhQuA4obb8qAgB1ZgQim3WPBINK8oFJd6Rk7ru+w3Vp1rTlzzihnDqKB+K
25
+ vA/SA+ejcWCuPeL/lhiCzq8n4AtXg4SSyR9XQ/HSb3S288DvtMbotKH7jBCoWLBI
26
+ JsLiPaukHNWx3bMCAwEAAaOCAcowggHGMB0GA1UdDgQWBBQwfCVgs3Ya47KrcDaJ
27
+ JghxP63fEjAfBgNVHSMEGDAWgBTmLOeIVWnILDo9dmAW41baXjKS3DA1BgNVHR8E
28
+ LjAsMCqgKKAmhiRodHRwOi8vY3Jscy55YW1vbmV5LnJ1L2lzc3VpbmdjYS5jcmww
29
+ gc4GCCsGAQUFBwEBBIHBMIG+MIG7BggrBgEFBQcwAoaBrmxkYXA6Ly8vQ049WWFu
30
+ ZGV4JTIwTW9uZXklMjBJc3N1aW5nJTIwQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtl
31
+ eSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9eWFt
32
+ b25leSxEQz1ydT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlm
33
+ aWNhdGlvbkF1dGhvcml0eTALBgNVHQ8EBAMCBaAwPQYJKwYBBAGCNxUHBDAwLgYm
34
+ KwYBBAGCNxUIhNPQNYT06hSDyY0lh++3M4S2zAGBZ4KU1Uf4llECAWQCAQswEwYD
35
+ VR0lBAwwCgYIKwYBBQUHAwIwGwYJKwYBBAGCNxUKBA4wDDAKBggrBgEFBQcDAjAN
36
+ BgkqhkiG9w0BAQUFAAOBgQAgvoyUDEz5NBJdCVHxTtPssAVYxyzTIkF+Tc6M+F5Q
37
+ RiOzJhVj56VjSFIjx3mXha/adaQXUK/WzLrnnXK2c2pxbYIvJT/M+JhoSZ3WejQ/
38
+ KTpIYtAgR7TnJsGg1yki+R8KiCexFjwZTSPRA5UgWcF2AC7PmVv1dAiDtYzlK5Fh
39
+ 1jGCAlkwggJVAgEBMFcwSTELMAkGA1UEBhMCUlUxGDAWBgNVBAoTD1BTIFlhbmRl
40
+ eC5Nb25leTEgMB4GA1UEAxMXWWFuZGV4IE1vbmV5IElzc3VpbmcgQ0ECChPdwC4A
41
+ AgAAOgQwCQYFKw4DAhoFAKCB2DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
42
+ CSqGSIb3DQEJBTEPFw0xNTAxMTkxMjM1MzRaMCMGCSqGSIb3DQEJBDEWBBQZlW6h
43
+ QuV4zKv8q7T3IiqUC+EDqTB5BgkqhkiG9w0BCQ8xbDBqMAsGCWCGSAFlAwQBKjAL
44
+ BglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMC
45
+ AgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkq
46
+ hkiG9w0BAQEFAASCAQCRF+LO7/XDONWWvrBjCvvF6C5Cre+T14xaUAm1mg6MRacT
47
+ izCr8+jRrme0g/ruY7HK9vw099+EjUvLctLmYAzpmx/b0oi+TELIZO8ymZVUMjRo
48
+ CKj9gcWfgZfZWhZY6bt9Zia/F0fqOGFp9dQkwzHgQhjbuf//jy75NHj/zCSqDyBt
49
+ PeeYZ/3bGHUaaHlG934/eyfTYGhLjd378OEExITSKJ0pDTzWB/eFR6ta9K6ApPvh
50
+ 75pqPBbPxnfrK49GfIWjT93xFi2B6DD5ZTyw2OporZz/riS9za7RmaPk7AlPD0E+
51
+ kVSjpXqi54KY3649ce9q2X3Q2lxGJkHTqxX89mQi
52
+ -----END PKCS7-----
53
+ headers:
54
+ Content-Type:
55
+ - application/pkcs7-mime
56
+ response:
57
+ status:
58
+ code: 200
59
+ message: OK
60
+ headers:
61
+ Date:
62
+ - Mon, 19 Jan 2015 12:35:34 GMT
63
+ Expires:
64
+ - Thu, 01 Jan 1970 00:00:00 GMT
65
+ Cache-Control:
66
+ - no-cache
67
+ Content-Type:
68
+ - application/pkcs7-mime
69
+ Content-Length:
70
+ - '1082'
71
+ body:
72
+ encoding: UTF-8
73
+ string: |
74
+ -----BEGIN PKCS7-----
75
+ MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA
76
+ JIAEga48P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPGJh
77
+ bGFuY2VSZXNwb25zZSBjbGllbnRPcmRlcklkPSJlYTUxNWMyNTA0MzJhMzBhYzkx
78
+ YTAwODUiIHN0YXR1cz0iMCIgcHJvY2Vzc2VkRFQ9IjIwMTUtMDEtMTlUMTU6MzU6
79
+ MzQuODMyKzAzOjAwIiBiYWxhbmNlPSItMTAuMDAiIC8+DQoAAAAAAAAxggILMIIC
80
+ BwIBATCBhDB8MQswCQYDVQQGEwJSVTEPMA0GA1UECBMGUnVzc2lhMRkwFwYDVQQH
81
+ ExBTYWludC1QZXRlcnNidXJnMRgwFgYDVQQKEw9QUyBZYW5kZXguTW9uZXkxEDAO
82
+ BgNVBAsTB1Vua25vd24xFTATBgNVBAMTDFlhbmRleC5Nb25leQIETQ9fKDAJBgUr
83
+ DgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx
84
+ DxcNMTUwMTE5MTIzNTM0WjAjBgkqhkiG9w0BCQQxFgQUiYh63BgVksPDlj5r750Z
85
+ UN9gwc4wDQYJKoZIhvcNAQEBBQAEggEAInXmBHiKrBDQt2Xfh6/3BiRV5blv616t
86
+ rny5hA0HHDwBNjp+mN2XkRuILVX2hk4ItLbF5dE/jNBUDou1noHXQRn79mYDKu7k
87
+ GHsfQdraFVO3mJA2z5etIK6UatwKjOCx4Y7wRV9ohhSkZb9um3A6T1d4frwarZw0
88
+ ecMeITbKSp7imS68YTz8Dx21RyBJtRdR4Gy+cd8+RpVY0Ax4jqsRs+SSW9dPPzk6
89
+ 8+ihCXIj5Yt1pTL16MzmRab99PCNAmeabZio4Vhhx5N+K/FMs3KtSr0mfb8mqSn/
90
+ rg7HNgRJXKFf7p4UEb71ceXPsX9qkaItB8aftvbw520xJDcy9L0MjwAAAAAAAA==
91
+ -----END PKCS7-----
92
+ http_version:
93
+ recorded_at: Mon, 19 Jan 2015 00:00:00 GMT
94
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,96 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://yandex-server/webservice/deposition/api/makeDeposition
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: |
9
+ -----BEGIN PKCS7-----
10
+ MIIIEQYJKoZIhvcNAQcCoIIIAjCCB/4CAQExCzAJBgUrDgMCGgUAMIHxBgkqhkiG
11
+ 9w0BBwGggeMEgeA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
12
+ Pgo8bWFrZURlcG9zaXRpb25SZXF1ZXN0IGFnZW50SWQ9IjIwMDQ1MSIgY2xpZW50
13
+ T3JkZXJJZD0iMTIzNDUiIGRzdEFjY291bnQ9IjQxMDAzMjI2NTA2MDQiIGFtb3Vu
14
+ dD0iMTAuMDAiIGN1cnJlbmN5PSIxMDY0MyIgY29udHJhY3Q9IlRlc3QgZGVwb3Np
15
+ dCIgcmVxdWVzdERUPSIyMDE1LTAxLTE5VDAwOjAwOjAwKzAwOjAwIi8+CqCCBJkw
16
+ ggSVMIID/qADAgECAgoT3cAuAAIAADoEMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNV
17
+ BAYTAlJVMRgwFgYDVQQKEw9QUyBZYW5kZXguTW9uZXkxIDAeBgNVBAMTF1lhbmRl
18
+ eCBNb25leSBJc3N1aW5nIENBMB4XDTE0MTExMDEzNDIyMVoXDTE1MTExMDEzNDIy
19
+ MVowfTELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxFjAUBgNVBAoTDWFk
20
+ MmdhbWVzIEdtYkgxHzAdBgNVBAMTFi9idXNpbmVzcy9hZDJnYW1lc2dtYmgxIzAh
21
+ BgkqhkiG9w0BCQEWFGZpbmFuY2VAYWQyZ2FtZXMuY29tMIIBIjANBgkqhkiG9w0B
22
+ AQEFAAOCAQ8AMIIBCgKCAQEAy8eRX8o9RzG4eu4H1v7dLeQKV1VNr+QhlCzfE8Yv
23
+ Ljxn28/yx/Pcg3eu4EUqc5PngoN0xj0Yhrv8hdRM8K+PEvb3lF038t1+MQb2tspj
24
+ ko8nEJMySk7x7ijfoIaxqa6FUanvoroTGHTrQAN0gvwGwTkyA3PRX8c+JeDZWu0g
25
+ 8JklvnBj15r76KpKiTu6Gss5QI2FqfgryqjA9SFC4DihtvyoCAHVmBCKbdY8Eg0r
26
+ ygUl3pGTuu77DdWnWtOXPOKGcOooH4q8D9ID56NxYK494v+WGILOryfgC1eDhJLJ
27
+ H1dD8dJvdLbzwO+0xui0ofuMEKhYsEgmwuI9q6Qc1bHdswIDAQABo4IByjCCAcYw
28
+ HQYDVR0OBBYEFDB8JWCzdhrjsqtwNokmCHE/rd8SMB8GA1UdIwQYMBaAFOYs54hV
29
+ acgsOj12YBbjVtpeMpLcMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9jcmxzLnlh
30
+ bW9uZXkucnUvaXNzdWluZ2NhLmNybDCBzgYIKwYBBQUHAQEEgcEwgb4wgbsGCCsG
31
+ AQUFBzAChoGubGRhcDovLy9DTj1ZYW5kZXglMjBNb25leSUyMElzc3VpbmclMjBD
32
+ QSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMs
33
+ Q049Q29uZmlndXJhdGlvbixEQz15YW1vbmV5LERDPXJ1P2NBQ2VydGlmaWNhdGU/
34
+ YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MAsGA1UdDwQE
35
+ AwIFoDA9BgkrBgEEAYI3FQcEMDAuBiYrBgEEAYI3FQiE09A1hPTqFIPJjSWH77cz
36
+ hLbMAYFngpTVR/iWUQIBZAIBCzATBgNVHSUEDDAKBggrBgEFBQcDAjAbBgkrBgEE
37
+ AYI3FQoEDjAMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4GBACC+jJQMTPk0
38
+ El0JUfFO0+ywBVjHLNMiQX5Nzoz4XlBGI7MmFWPnpWNIUiPHeZeFr9p1pBdQr9bM
39
+ uuedcrZzanFtgi8lP8z4mGhJndZ6ND8pOkhi0CBHtOcmwaDXKSL5HwqIJ7EWPBlN
40
+ I9EDlSBZwXYALs+ZW/V0CIO1jOUrkWHWMYICWTCCAlUCAQEwVzBJMQswCQYDVQQG
41
+ EwJSVTEYMBYGA1UEChMPUFMgWWFuZGV4Lk1vbmV5MSAwHgYDVQQDExdZYW5kZXgg
42
+ TW9uZXkgSXNzdWluZyBDQQIKE93ALgACAAA6BDAJBgUrDgMCGgUAoIHYMBgGCSqG
43
+ SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDExOTEyMjUz
44
+ MVowIwYJKoZIhvcNAQkEMRYEFLGxVhH2TW/TfwULQKyrL0CIscs1MHkGCSqGSIb3
45
+ DQEJDzFsMGowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIw
46
+ CgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsO
47
+ AwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBADPDna1CJB9sdqEi
48
+ ceXclSYiGaXFkTq76+zk6dpOhXXycTnVO2DOMbfDiSPmz91pwtqmUEv02yRuzLYY
49
+ BoGFe+spbIj77boWCMNeCmQ13nE3X6ZhF24Ej5OKUnJQXYaN1g4eVp4yhDyyhPKH
50
+ yAl5veAn68uTg9LQAQmxfci8uN/ar4n84TUUaalm2ngBNe9KsQTMz2NXqCY4Wlsb
51
+ C78bmyx1o+ccJVZy2Z2VR7YruVWJOOfY305RuFkQDsExXfIm4qzkFQMWKROTM5O0
52
+ i6gv9BEyhS5bGUaoaglxqyC2e8+2pGE03TMRm2SjL6fHws/hVC4wk+WueLjrdw1g
53
+ UwIOviI=
54
+ -----END PKCS7-----
55
+ headers:
56
+ Content-Type:
57
+ - application/pkcs7-mime
58
+ response:
59
+ status:
60
+ code: 200
61
+ message: OK
62
+ headers:
63
+ Date:
64
+ - Mon, 19 Jan 2015 12:25:31 GMT
65
+ Expires:
66
+ - Thu, 01 Jan 1970 00:00:00 GMT
67
+ Cache-Control:
68
+ - no-cache
69
+ Content-Type:
70
+ - application/pkcs7-mime
71
+ Content-Length:
72
+ - '1066'
73
+ body:
74
+ encoding: UTF-8
75
+ string: |
76
+ -----BEGIN PKCS7-----
77
+ MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA
78
+ JIAEgaI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPG1h
79
+ a2VEZXBvc2l0aW9uUmVzcG9uc2UgY2xpZW50T3JkZXJJZD0iMTIzNDUiIHN0YXR1
80
+ cz0iMCIgcHJvY2Vzc2VkRFQ9IjIwMTUtMDEtMTlUMTU6MjU6MzEuODEyKzAzOjAw
81
+ IiBiYWxhbmNlPSItMTAuMDAiIC8+DQoAAAAAAAAxggILMIICBwIBATCBhDB8MQsw
82
+ CQYDVQQGEwJSVTEPMA0GA1UECBMGUnVzc2lhMRkwFwYDVQQHExBTYWludC1QZXRl
83
+ cnNidXJnMRgwFgYDVQQKEw9QUyBZYW5kZXguTW9uZXkxEDAOBgNVBAsTB1Vua25v
84
+ d24xFTATBgNVBAMTDFlhbmRleC5Nb25leQIETQ9fKDAJBgUrDgMCGgUAoF0wGAYJ
85
+ KoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwMTE5MTIy
86
+ NTMxWjAjBgkqhkiG9w0BCQQxFgQUJxszrR8W1Ih+tax3xFwZHvmzxrIwDQYJKoZI
87
+ hvcNAQEBBQAEggEAlJECvvTAJZCdu+kwpeJ7JoupCcw0342dgjiyNnUSW+SbXPwF
88
+ +IHbidYPDDv1IQj41P3kH5tQeqLNBsiLwL1Oz741DaDfal8wDbZ2Svv/0/O2k2p4
89
+ At/ka5v0/NYwYgS5hLgSj7m3bdX6PYk6BrMV9DXaPlRcWOe8djxziBfz9uU+h3kz
90
+ 3++ofeZ0ZrX8BWXL/0USF6ScQ07QK/wpQe4g6PsNBNzo1Hii0TFPMBuH+Uz4pxKX
91
+ U1Src5SIkSpKFiF9na1f8Czjsu4E2JTLivL1EfNZhUjXkLGW6cTJx1kjAcm1In0q
92
+ ULVifJz42XwV2UxLAcqUm+gE2i1nijL4bOKvbgAAAAAAAA==
93
+ -----END PKCS7-----
94
+ http_version:
95
+ recorded_at: Mon, 19 Jan 2015 00:00:00 GMT
96
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,95 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://yandex-server/webservice/deposition/api/testDeposition
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: |
9
+ -----BEGIN PKCS7-----
10
+ MIIIAwYJKoZIhvcNAQcCoIIH9DCCB/ACAQExCzAJBgUrDgMCGgUAMIHjBgkqhkiG
11
+ 9w0BBwGggdUEgdI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
12
+ Pgo8dGVzdERlcG9zaXRpb25SZXF1ZXN0IGFnZW50SWQ9IjIwMDQ1MSIgY2xpZW50
13
+ T3JkZXJJZD0iMiIgZHN0QWNjb3VudD0iMTIzIiBhbW91bnQ9IjEwLjAwIiBjdXJy
14
+ ZW5jeT0iMTA2NDMiIGNvbnRyYWN0PSJUZXN0IGRlcG9zaXQiIHJlcXVlc3REVD0i
15
+ MjAxNS0wMS0xOVQwMDowMDowMCswMDowMCIvPgqgggSZMIIElTCCA/6gAwIBAgIK
16
+ E93ALgACAAA6BDANBgkqhkiG9w0BAQUFADBJMQswCQYDVQQGEwJSVTEYMBYGA1UE
17
+ ChMPUFMgWWFuZGV4Lk1vbmV5MSAwHgYDVQQDExdZYW5kZXggTW9uZXkgSXNzdWlu
18
+ ZyBDQTAeFw0xNDExMTAxMzQyMjFaFw0xNTExMTAxMzQyMjFaMH0xCzAJBgNVBAYT
19
+ AkRFMRAwDgYDVQQIEwdHZXJtYW55MRYwFAYDVQQKEw1hZDJnYW1lcyBHbWJIMR8w
20
+ HQYDVQQDExYvYnVzaW5lc3MvYWQyZ2FtZXNnbWJoMSMwIQYJKoZIhvcNAQkBFhRm
21
+ aW5hbmNlQGFkMmdhbWVzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
22
+ ggEBAMvHkV/KPUcxuHruB9b+3S3kCldVTa/kIZQs3xPGLy48Z9vP8sfz3IN3ruBF
23
+ KnOT54KDdMY9GIa7/IXUTPCvjxL295RdN/LdfjEG9rbKY5KPJxCTMkpO8e4o36CG
24
+ samuhVGp76K6Exh060ADdIL8BsE5MgNz0V/HPiXg2VrtIPCZJb5wY9ea++iqSok7
25
+ uhrLOUCNhan4K8qowPUhQuA4obb8qAgB1ZgQim3WPBINK8oFJd6Rk7ru+w3Vp1rT
26
+ lzzihnDqKB+KvA/SA+ejcWCuPeL/lhiCzq8n4AtXg4SSyR9XQ/HSb3S288DvtMbo
27
+ tKH7jBCoWLBIJsLiPaukHNWx3bMCAwEAAaOCAcowggHGMB0GA1UdDgQWBBQwfCVg
28
+ s3Ya47KrcDaJJghxP63fEjAfBgNVHSMEGDAWgBTmLOeIVWnILDo9dmAW41baXjKS
29
+ 3DA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3Jscy55YW1vbmV5LnJ1L2lzc3Vp
30
+ bmdjYS5jcmwwgc4GCCsGAQUFBwEBBIHBMIG+MIG7BggrBgEFBQcwAoaBrmxkYXA6
31
+ Ly8vQ049WWFuZGV4JTIwTW9uZXklMjBJc3N1aW5nJTIwQ0EsQ049QUlBLENOPVB1
32
+ YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRp
33
+ b24sREM9eWFtb25leSxEQz1ydT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xh
34
+ c3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTALBgNVHQ8EBAMCBaAwPQYJKwYBBAGC
35
+ NxUHBDAwLgYmKwYBBAGCNxUIhNPQNYT06hSDyY0lh++3M4S2zAGBZ4KU1Uf4llEC
36
+ AWQCAQswEwYDVR0lBAwwCgYIKwYBBQUHAwIwGwYJKwYBBAGCNxUKBA4wDDAKBggr
37
+ BgEFBQcDAjANBgkqhkiG9w0BAQUFAAOBgQAgvoyUDEz5NBJdCVHxTtPssAVYxyzT
38
+ IkF+Tc6M+F5QRiOzJhVj56VjSFIjx3mXha/adaQXUK/WzLrnnXK2c2pxbYIvJT/M
39
+ +JhoSZ3WejQ/KTpIYtAgR7TnJsGg1yki+R8KiCexFjwZTSPRA5UgWcF2AC7PmVv1
40
+ dAiDtYzlK5Fh1jGCAlkwggJVAgEBMFcwSTELMAkGA1UEBhMCUlUxGDAWBgNVBAoT
41
+ D1BTIFlhbmRleC5Nb25leTEgMB4GA1UEAxMXWWFuZGV4IE1vbmV5IElzc3Vpbmcg
42
+ Q0ECChPdwC4AAgAAOgQwCQYFKw4DAhoFAKCB2DAYBgkqhkiG9w0BCQMxCwYJKoZI
43
+ hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNTAxMjAwOTM3MTZaMCMGCSqGSIb3DQEJ
44
+ BDEWBBSnSb1GpJ+gSBUXuYDJLUJfprFYaDB5BgkqhkiG9w0BCQ8xbDBqMAsGCWCG
45
+ SAFlAwQBKjALBglghkgBZQMEARYwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4G
46
+ CCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0D
47
+ AgIBKDANBgkqhkiG9w0BAQEFAASCAQC8F4uvvx1xGH/ZwnnLgei6OObQ9IQqNB0m
48
+ KD8p7PyUKaEBY7GPk3+/IudnJmyUAiaTVYtn0CdarfE8ZkZ2YjA91AxjAgPD6YS4
49
+ fSffkEnmxtAzj4e6MiON/xvzMmkLMukzWKjmmuCAAqc2Dejjr/b46vAsx6M60j2z
50
+ mVhmQWylJtIPvHvmj5IBWctuHCTlTE72j7n2WYW9VeiAdWKZ1RUr9aGofUHxFsf6
51
+ X+sfrvBFi7K/C/OToWDvIDxAav8KpbwR9lBdmBdDAqXc50lQ7jqnbRM124NlpljC
52
+ bVH5akYN3twpRebEXImdhyirpVnPlnYP9SFh4zvZfdj3hU0EeMkG
53
+ -----END PKCS7-----
54
+ headers:
55
+ Content-Type:
56
+ - application/pkcs7-mime
57
+ response:
58
+ status:
59
+ code: 200
60
+ message: OK
61
+ headers:
62
+ Date:
63
+ - Tue, 20 Jan 2015 09:37:16 GMT
64
+ Expires:
65
+ - Thu, 01 Jan 1970 00:00:00 GMT
66
+ Cache-Control:
67
+ - no-cache
68
+ Content-Type:
69
+ - application/pkcs7-mime
70
+ Content-Length:
71
+ - '1050'
72
+ body:
73
+ encoding: UTF-8
74
+ string: |
75
+ -----BEGIN PKCS7-----
76
+ MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA
77
+ JIAEgZg8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPHRl
78
+ c3REZXBvc2l0aW9uUmVzcG9uc2UgY2xpZW50T3JkZXJJZD0iMiIgc3RhdHVzPSIz
79
+ IiBlcnJvcj0iMTYiIHByb2Nlc3NlZERUPSIyMDE1LTAxLTIwVDEyOjM3OjE2Ljk1
80
+ NiswMzowMCIgLz4NCgAAAAAAADGCAgswggIHAgEBMIGEMHwxCzAJBgNVBAYTAlJV
81
+ MQ8wDQYDVQQIEwZSdXNzaWExGTAXBgNVBAcTEFNhaW50LVBldGVyc2J1cmcxGDAW
82
+ BgNVBAoTD1BTIFlhbmRleC5Nb25leTEQMA4GA1UECxMHVW5rbm93bjEVMBMGA1UE
83
+ AxMMWWFuZGV4Lk1vbmV5AgRND18oMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMx
84
+ CwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xNTAxMjAwOTM3MTZaMCMGCSqG
85
+ SIb3DQEJBDEWBBTmp+NzUcVQqg5jpR3cPhcd4IwihTANBgkqhkiG9w0BAQEFAASC
86
+ AQBF3mcO6WH7UQI5DRK71/AAAO9KRdrSg60ocxTfI+RwgHySUXYHyCOzcqiTq8VP
87
+ YkStsEos/Cfcxeullb+0Nj424x7uCZMBpA0v/72r0ekfNMD2EAnjnQD71zGjBpEV
88
+ BdmrJ+9TlxlhXPZ13iyNvQh7RZdSqFh+wDtokao2jeAqtCs6HxZL8CbDAj6Cbmw3
89
+ 5tYzGY/dBQvT58Qf99QuftlaoXzNptOaDTH7GD2g1sEbTdXli7OdUE24tfYtPYB8
90
+ gN53NkBdJL9g40hx+G670E/mdswRv0myKqd2d0bKXeyZsiJ+OXhATFjwY0PoMsHK
91
+ oCT4GFgevhiBIhyieQGPV/bHAAAAAAAA
92
+ -----END PKCS7-----
93
+ http_version:
94
+ recorded_at: Mon, 19 Jan 2015 00:00:00 GMT
95
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,96 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://yandex-server/webservice/deposition/api/testDeposition
6
+ body:
7
+ encoding: UTF-8
8
+ string: |
9
+ -----BEGIN PKCS7-----
10
+ MIIIEQYJKoZIhvcNAQcCoIIIAjCCB/4CAQExCzAJBgUrDgMCGgUAMIHxBgkqhkiG
11
+ 9w0BBwGggeMEgeA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
12
+ Pgo8dGVzdERlcG9zaXRpb25SZXF1ZXN0IGFnZW50SWQ9IjIwMDQ1MSIgY2xpZW50
13
+ T3JkZXJJZD0iMTIzNDUiIGRzdEFjY291bnQ9IjQxMDAzMjI2NTA2MDQiIGFtb3Vu
14
+ dD0iMTAuMDAiIGN1cnJlbmN5PSIxMDY0MyIgY29udHJhY3Q9IlRlc3QgZGVwb3Np
15
+ dCIgcmVxdWVzdERUPSIyMDE1LTAxLTE5VDAwOjAwOjAwKzAwOjAwIi8+CqCCBJkw
16
+ ggSVMIID/qADAgECAgoT3cAuAAIAADoEMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNV
17
+ BAYTAlJVMRgwFgYDVQQKEw9QUyBZYW5kZXguTW9uZXkxIDAeBgNVBAMTF1lhbmRl
18
+ eCBNb25leSBJc3N1aW5nIENBMB4XDTE0MTExMDEzNDIyMVoXDTE1MTExMDEzNDIy
19
+ MVowfTELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dlcm1hbnkxFjAUBgNVBAoTDWFk
20
+ MmdhbWVzIEdtYkgxHzAdBgNVBAMTFi9idXNpbmVzcy9hZDJnYW1lc2dtYmgxIzAh
21
+ BgkqhkiG9w0BCQEWFGZpbmFuY2VAYWQyZ2FtZXMuY29tMIIBIjANBgkqhkiG9w0B
22
+ AQEFAAOCAQ8AMIIBCgKCAQEAy8eRX8o9RzG4eu4H1v7dLeQKV1VNr+QhlCzfE8Yv
23
+ Ljxn28/yx/Pcg3eu4EUqc5PngoN0xj0Yhrv8hdRM8K+PEvb3lF038t1+MQb2tspj
24
+ ko8nEJMySk7x7ijfoIaxqa6FUanvoroTGHTrQAN0gvwGwTkyA3PRX8c+JeDZWu0g
25
+ 8JklvnBj15r76KpKiTu6Gss5QI2FqfgryqjA9SFC4DihtvyoCAHVmBCKbdY8Eg0r
26
+ ygUl3pGTuu77DdWnWtOXPOKGcOooH4q8D9ID56NxYK494v+WGILOryfgC1eDhJLJ
27
+ H1dD8dJvdLbzwO+0xui0ofuMEKhYsEgmwuI9q6Qc1bHdswIDAQABo4IByjCCAcYw
28
+ HQYDVR0OBBYEFDB8JWCzdhrjsqtwNokmCHE/rd8SMB8GA1UdIwQYMBaAFOYs54hV
29
+ acgsOj12YBbjVtpeMpLcMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9jcmxzLnlh
30
+ bW9uZXkucnUvaXNzdWluZ2NhLmNybDCBzgYIKwYBBQUHAQEEgcEwgb4wgbsGCCsG
31
+ AQUFBzAChoGubGRhcDovLy9DTj1ZYW5kZXglMjBNb25leSUyMElzc3VpbmclMjBD
32
+ QSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMs
33
+ Q049Q29uZmlndXJhdGlvbixEQz15YW1vbmV5LERDPXJ1P2NBQ2VydGlmaWNhdGU/
34
+ YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MAsGA1UdDwQE
35
+ AwIFoDA9BgkrBgEEAYI3FQcEMDAuBiYrBgEEAYI3FQiE09A1hPTqFIPJjSWH77cz
36
+ hLbMAYFngpTVR/iWUQIBZAIBCzATBgNVHSUEDDAKBggrBgEFBQcDAjAbBgkrBgEE
37
+ AYI3FQoEDjAMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4GBACC+jJQMTPk0
38
+ El0JUfFO0+ywBVjHLNMiQX5Nzoz4XlBGI7MmFWPnpWNIUiPHeZeFr9p1pBdQr9bM
39
+ uuedcrZzanFtgi8lP8z4mGhJndZ6ND8pOkhi0CBHtOcmwaDXKSL5HwqIJ7EWPBlN
40
+ I9EDlSBZwXYALs+ZW/V0CIO1jOUrkWHWMYICWTCCAlUCAQEwVzBJMQswCQYDVQQG
41
+ EwJSVTEYMBYGA1UEChMPUFMgWWFuZGV4Lk1vbmV5MSAwHgYDVQQDExdZYW5kZXgg
42
+ TW9uZXkgSXNzdWluZyBDQQIKE93ALgACAAA6BDAJBgUrDgMCGgUAoIHYMBgGCSqG
43
+ SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDExOTEwMzgw
44
+ MFowIwYJKoZIhvcNAQkEMRYEFFjkNfTHa1UBX/Yy4Ei3Vyna6bmIMHkGCSqGSIb3
45
+ DQEJDzFsMGowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIw
46
+ CgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsO
47
+ AwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBABa1J2TJolK9t6N/
48
+ GKp8AkZnNC0wSY0jixit+YUMe11CaJWdZwwnlBof4zTwtIGUmoa4y9KGGtsBRLR7
49
+ mBDHDcv+I4OI8oWjcGF0jbZMlwaykNW/vlvGRlSt0eUszSSOI1YLueLVEgv06xnV
50
+ LEO3uSSeQPqxM7uz/K4dv4EqiPDq6S7niBFfFe0FIIO9/YZdG+fsiv5tG3MXpA0T
51
+ 0oBQKua5ZY4VnIVlBn5kJvi7jnb4LBXRFYMNb+j1S/HhUhxwVFb6gRxqrAN2kMXG
52
+ 4Yot5oDbNi4Y3hFgl5JHqsxFjE8F2fAL7VaKxTTgWcxENahS8JgsfF0Xr+VESRAo
53
+ V5Tyknc=
54
+ -----END PKCS7-----
55
+ headers:
56
+ Content-Type:
57
+ - application/pkcs7-mime
58
+ response:
59
+ status:
60
+ code: 200
61
+ message: OK
62
+ headers:
63
+ Date:
64
+ - Mon, 19 Jan 2015 10:56:23 GMT
65
+ Expires:
66
+ - Thu, 01 Jan 1970 00:00:00 GMT
67
+ Cache-Control:
68
+ - no-cache
69
+ Content-Type:
70
+ - application/pkcs7-mime
71
+ Content-Length:
72
+ - '1042'
73
+ body:
74
+ encoding: UTF-8
75
+ string: |
76
+ -----BEGIN PKCS7-----
77
+ MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA
78
+ JIAEgZE8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KPHRl
79
+ c3REZXBvc2l0aW9uUmVzcG9uc2UgY2xpZW50T3JkZXJJZD0iMTIzNDUiIHN0YXR1
80
+ cz0iMCIgcHJvY2Vzc2VkRFQ9IjIwMTUtMDEtMTlUMTM6NTY6MjMuNDc4KzAzOjAw
81
+ IiAvPg0KAAAAAAAAMYICCzCCAgcCAQEwgYQwfDELMAkGA1UEBhMCUlUxDzANBgNV
82
+ BAgTBlJ1c3NpYTEZMBcGA1UEBxMQU2FpbnQtUGV0ZXJzYnVyZzEYMBYGA1UEChMP
83
+ UFMgWWFuZGV4Lk1vbmV5MRAwDgYDVQQLEwdVbmtub3duMRUwEwYDVQQDEwxZYW5k
84
+ ZXguTW9uZXkCBE0PXygwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG
85
+ 9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDExOTEwNTYyM1owIwYJKoZIhvcNAQkE
86
+ MRYEFMP/OUjWUBaHfD0XGUeakFmXOtJoMA0GCSqGSIb3DQEBAQUABIIBAFNtUt1W
87
+ 1oOhmYoKseGH3VgPTbrNjPOMUS84jzMBAsOolGsbvE+0n+jcKaJMTUzDisnH6CYB
88
+ IuNAkD4iRD7v1j5wCk0j5LEBCnIYv0JPvW+UeW08XbMouNCZS/ylxDMflIjSSx0U
89
+ BvdFFlzzACvsX3oznkVRzNo9mVvZpGW1X30a/n2wtxsmPEhOzQAc4WSq6SqKvXFu
90
+ R7z7od5euY83CsSjBu4vwk+lygkdq1ap8JLJeShk6m4P+FIpTwdYb6x4wRg82wlm
91
+ liI7bFcJWcsp9bA8O4kETJ3e+gPeldcKlr3w6JUZdyqEhyXxWiLLK5requ/tH2gv
92
+ E5kjfqjOSAwnR04AAAAAAAA=
93
+ -----END PKCS7-----
94
+ http_version:
95
+ recorded_at: Mon, 19 Jan 2015 00:00:00 GMT
96
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,90 @@
1
+ RSpec.describe 'Yandex Money Requests', :vcr do
2
+ random_mock = 0
3
+
4
+ around { |example| Timecop.freeze(Time.utc(2015, 01, 19), &example) }
5
+
6
+ let(:client) do
7
+ if ENV['USE_REAL_CERTS']
8
+ cert_file = '../../cert.pem'
9
+ key_file = '../../key.pem'
10
+ else
11
+ cert_file = '../fixtures/keys/fake_cert.pem'
12
+ key_file = '../fixtures/keys/fake_key.pem'
13
+ end
14
+
15
+ SoapyYandex::MoneyClient.new(
16
+ server: ENV['YANDEX_SERVER'],
17
+ ssl_cert: File.read(File.expand_path(cert_file, __FILE__)),
18
+ ssl_key: File.read(File.expand_path(key_file, __FILE__)),
19
+ remote_cert: File.read(File.expand_path('../fixtures/keys/remote_cert.pem', __FILE__)),
20
+ ssl_key_passphrase: ENV['PASSPHRASE'],
21
+ )
22
+ end
23
+
24
+ before :each do
25
+ expect(OpenSSL::PKCS7).to receive(:sign).and_wrap_original do |method, cert, key, body, *args|
26
+ hash = Digest::SHA256.hexdigest(body)
27
+ file = "spec/fixtures/ssl/#{hash}"
28
+ next File.read(file) if File.exist?(file)
29
+
30
+ result = method.call(cert, key, body, *args)
31
+ File.open(file, 'w+') { |f| f.write(result) }
32
+ result
33
+ end
34
+
35
+ allow(SecureRandom).to receive(:hex) do
36
+ random_mock += 1
37
+ end
38
+ end
39
+
40
+ describe '#test_deposition' do
41
+ it 'returns successfully' do
42
+ result = client.test_deposition(
43
+ agentId: 200451,
44
+ dstAccount: 4100322650604,
45
+ amount: BigDecimal.new(10.0, 3),
46
+ currency: SoapyYandex::CURRENCY_DEMO_RUBLES,
47
+ contract: 'Test deposit'
48
+ )
49
+
50
+ expect(result.success?).to be_truthy
51
+ expect(result.attributes[:clientOrderId]).to eq('12345')
52
+ end
53
+
54
+ it 'raises when given invalid data' do
55
+ expect do
56
+ client.test_deposition(
57
+ agentId: 200451,
58
+ dstAccount: 123,
59
+ amount: BigDecimal.new(10.0, 3),
60
+ currency: SoapyYandex::CURRENCY_DEMO_RUBLES,
61
+ contract: 'Test deposit'
62
+ )
63
+ end.to raise_error SoapyYandex::Error, 'SoapyYandex Server Error: Invalid dstAccount'
64
+ end
65
+ end
66
+
67
+ describe '#make_deposition' do
68
+ it 'returns successfully' do
69
+ result = client.make_deposition(
70
+ agentId: 200451,
71
+ dstAccount: 4100322650604,
72
+ amount: BigDecimal.new(10.0, 3),
73
+ currency: SoapyYandex::CURRENCY_DEMO_RUBLES,
74
+ contract: 'Test deposit'
75
+ )
76
+
77
+ expect(result.success?).to be_truthy
78
+ expect(result.attributes[:clientOrderId]).to eq('12345')
79
+ end
80
+ end
81
+
82
+ describe '#balance' do
83
+ it 'returns the balance amount' do
84
+ result = client.balance(agentId: 200451)
85
+
86
+ expect(result.success?).to be_truthy
87
+ expect(result.attributes[:balance]).to eq('-10.00')
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,18 @@
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
3
+
4
+ require 'soapy_yandex'
5
+ require 'vcr'
6
+ require 'timecop'
7
+
8
+ ENV['YANDEX_SERVER'] ||= 'yandex-server'
9
+
10
+ VCR.configure do |config|
11
+ config.cassette_library_dir = 'spec/fixtures/vcr'
12
+ config.hook_into :webmock
13
+ config.configure_rspec_metadata!
14
+
15
+ config.filter_sensitive_data('yandex-server') { ENV['YANDEX_SERVER'] }
16
+
17
+ config.ignore_hosts 'codeclimate.com'
18
+ end
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: soapy_yandex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - ad2games GmbH
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ox
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.13'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !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: timecop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: vcr
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: Client library for Yandex Money.
140
+ email:
141
+ - developers@ad2games.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".rspec"
148
+ - ".ruby-version"
149
+ - Gemfile
150
+ - LICENSE.txt
151
+ - README.md
152
+ - Rakefile
153
+ - lib/soapy_yandex.rb
154
+ - lib/soapy_yandex/client.rb
155
+ - lib/soapy_yandex/error.rb
156
+ - lib/soapy_yandex/money_client.rb
157
+ - lib/soapy_yandex/request.rb
158
+ - lib/soapy_yandex/response.rb
159
+ - lib/soapy_yandex/version.rb
160
+ - soapy_yandex.gemspec
161
+ - spec/fixtures/keys/fake_cert.pem
162
+ - spec/fixtures/keys/fake_key.pem
163
+ - spec/fixtures/keys/remote_cert.pem
164
+ - spec/fixtures/ssl/0609439b174dcff0f04bb60054cb1d9015442942b6fbf520703addba53429c2d
165
+ - spec/fixtures/ssl/16e9ab3909478236af7c44e811284b26f36f65dc2552db871b8ecc7dc4e6f6a3
166
+ - spec/fixtures/ssl/1ac1898309c7d2885fe44fb876e1046e42b4aa9830587d223a6cd82f25db16a8
167
+ - spec/fixtures/ssl/b95c3a1644768ec148c70e70302c87ce539f8f7be1e4ba76577b4d6e997e1eaa
168
+ - spec/fixtures/vcr/Yandex_Money_Requests/_balance/returns_the_balance_amount.yml
169
+ - spec/fixtures/vcr/Yandex_Money_Requests/_make_deposition/returns_successfully.yml
170
+ - spec/fixtures/vcr/Yandex_Money_Requests/_test_deposition/raises_when_given_invalid_data.yml
171
+ - spec/fixtures/vcr/Yandex_Money_Requests/_test_deposition/returns_successfully.yml
172
+ - spec/money_spec.rb
173
+ - spec/spec_helper.rb
174
+ homepage: ''
175
+ licenses:
176
+ - MIT
177
+ metadata: {}
178
+ post_install_message:
179
+ rdoc_options: []
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ required_rubygems_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ requirements: []
193
+ rubyforge_project:
194
+ rubygems_version: 2.4.5
195
+ signing_key:
196
+ specification_version: 4
197
+ summary: Client library for Yandex Money.
198
+ test_files:
199
+ - spec/fixtures/keys/fake_cert.pem
200
+ - spec/fixtures/keys/fake_key.pem
201
+ - spec/fixtures/keys/remote_cert.pem
202
+ - spec/fixtures/ssl/0609439b174dcff0f04bb60054cb1d9015442942b6fbf520703addba53429c2d
203
+ - spec/fixtures/ssl/16e9ab3909478236af7c44e811284b26f36f65dc2552db871b8ecc7dc4e6f6a3
204
+ - spec/fixtures/ssl/1ac1898309c7d2885fe44fb876e1046e42b4aa9830587d223a6cd82f25db16a8
205
+ - spec/fixtures/ssl/b95c3a1644768ec148c70e70302c87ce539f8f7be1e4ba76577b4d6e997e1eaa
206
+ - spec/fixtures/vcr/Yandex_Money_Requests/_balance/returns_the_balance_amount.yml
207
+ - spec/fixtures/vcr/Yandex_Money_Requests/_make_deposition/returns_successfully.yml
208
+ - spec/fixtures/vcr/Yandex_Money_Requests/_test_deposition/raises_when_given_invalid_data.yml
209
+ - spec/fixtures/vcr/Yandex_Money_Requests/_test_deposition/returns_successfully.yml
210
+ - spec/money_spec.rb
211
+ - spec/spec_helper.rb