soapy_yandex 0.0.2

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 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