fio_api 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +26 -0
- data/.travis.yml +7 -2
- data/Gemfile +9 -12
- data/README.rdoc +8 -3
- data/Rakefile +11 -13
- data/VERSION +1 -1
- data/fio_api.gemspec +57 -33
- data/lib/base/account.rb +2 -2
- data/lib/base/deserializers/import_response_deserializer.rb +51 -0
- data/lib/base/deserializers/list_response_deserializer.rb +47 -36
- data/lib/base/list.rb +9 -14
- data/lib/base/payment.rb +40 -0
- data/lib/base/payments/domestic.rb +13 -0
- data/lib/base/payments/status.rb +8 -0
- data/lib/base/payments/xml/item.rb +41 -0
- data/lib/base/payments/xml/root.rb +30 -0
- data/lib/base/request.rb +4 -54
- data/lib/base/transaction.rb +2 -2
- data/lib/base.rb +2 -6
- data/lib/fio_api.rb +16 -10
- data/lib/utils/hash.rb +2 -2
- data/spec/base/account_spec.rb +4 -8
- data/spec/base/deserializers/import_response_deserializer_spec.rb +41 -0
- data/spec/base/deserializers/list_response_deserializer_spec.rb +48 -59
- data/spec/base/list_spec.rb +36 -23
- data/spec/base/payment_spec.rb +38 -0
- data/spec/base/payments/domestic_spec.rb +14 -0
- data/spec/base/payments/status_spec.rb +13 -0
- data/spec/base/payments/xml/root_spec.rb +63 -0
- data/spec/base/request_spec.rb +2 -49
- data/spec/base/transaction_spec.rb +5 -9
- data/spec/fio_api_spec.rb +4 -7
- data/spec/fixtures/vcr_cassettes/by_date_range.yml +47 -0
- data/spec/fixtures/vcr_cassettes/by_listing_id_and_year.yml +49 -0
- data/spec/fixtures/vcr_cassettes/from_last_fetch.yml +44 -0
- data/spec/fixtures/vcr_cassettes/import.yml +53 -0
- data/spec/fixtures/vcr_cassettes/invalid_import.yml +51 -0
- data/spec/fixtures/vcr_cassettes/set_last_fetch_date.yml +44 -0
- data/spec/fixtures/vcr_cassettes/set_last_fetch_id.yml +47 -0
- data/spec/spec_helper.rb +7 -2
- data/spec/utils/hash_spec.rb +10 -15
- metadata +70 -24
- data/lib/base/deserializer.rb +0 -19
- data/spec/base/deserializer_spec.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13a5ab858a6e9b441eb53773dbe28611e6754bf2
|
4
|
+
data.tar.gz: 9c9d9e3089fdd10c092d3ecfee8c35d17a2fdeb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e19bf77982f36c837797367f617c7a66d2a4ae0ea29fb9888071f4965ff47469c6bdff10983d17fe034d13589ffeb6463ab85464eaaf09b77355f7a51935a9ae
|
7
|
+
data.tar.gz: 56c4ea9d17bb41eb1120998d1bfc7d60853f64c9fecfba7e4ac63b5a291b13bfc4690d424284bcda59cae0eec883fef5920de0fc867d262bfa255a6dacd01ed1
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
AllCops:
|
2
|
+
Include:
|
3
|
+
- '**/Gemfile'
|
4
|
+
- '**/Rakefile'
|
5
|
+
Exclude:
|
6
|
+
- 'fio_api.gemspec'
|
7
|
+
Metrics/LineLength:
|
8
|
+
Max: 180
|
9
|
+
Documentation:
|
10
|
+
Enabled: false
|
11
|
+
Metrics/AbcSize:
|
12
|
+
Max: 38
|
13
|
+
Metrics/MethodLength:
|
14
|
+
Max: 50
|
15
|
+
Metrics/BlockLength:
|
16
|
+
Enabled: false
|
17
|
+
Metrics/CyclomaticComplexity:
|
18
|
+
Max: 7
|
19
|
+
Metrics/ClassLength:
|
20
|
+
Max: 230
|
21
|
+
Metrics/ModuleLength:
|
22
|
+
Max: 230
|
23
|
+
Style/FileName:
|
24
|
+
Enabled: true
|
25
|
+
Exclude:
|
26
|
+
- Guardfile
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,16 +1,13 @@
|
|
1
|
-
source
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
1
|
+
source 'http://rubygems.org'
|
5
2
|
|
6
|
-
gem
|
3
|
+
gem 'httparty', '>= 0.16.2'
|
7
4
|
|
8
|
-
# Add dependencies to develop your gem here.
|
9
|
-
# Include everything needed to run rake, tests, features, etc.
|
10
5
|
group :development do
|
11
|
-
gem
|
12
|
-
gem
|
13
|
-
gem
|
14
|
-
gem
|
15
|
-
gem
|
6
|
+
gem 'bundler', '>= 1.10.6'
|
7
|
+
gem 'jeweler', '>= 2.1.1'
|
8
|
+
gem 'rdoc', '>= 4.2.0'
|
9
|
+
gem 'rspec'
|
10
|
+
gem 'rspec-mocks', '>= 3.4.0'
|
11
|
+
gem 'vcr'
|
12
|
+
gem 'webmock'
|
16
13
|
end
|
data/README.rdoc
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
{<img src="https://
|
2
|
-
{<img src="https://codeclimate.com/badge.png" />}[https://codeclimate.com/github/
|
1
|
+
{<img src="https://travis-ci.org/14113/fio_api.svg?branch=master" alt="Build Status" />}[http://travis-ci.org/14113/fio_api]
|
2
|
+
{<img src="https://codeclimate.com/badge.png" />}[https://codeclimate.com/github/14113/fio_api]
|
3
3
|
= Fio API
|
4
4
|
|
5
5
|
This project rocks and uses MIT-LICENSE.
|
6
6
|
|
7
|
-
This gem is a wrapper for Fio bank API.
|
7
|
+
This gem is a wrapper for Fio bank API.
|
8
8
|
|
9
9
|
== Usage
|
10
10
|
|
@@ -34,6 +34,11 @@ This gem is a wrapper for Fio bank API. Currently Fio API support only data list
|
|
34
34
|
list.set_last_fetch_date(Date.new(2012,11,05))
|
35
35
|
list.response
|
36
36
|
|
37
|
+
=== Import domestic payments for authorization
|
38
|
+
domestic = FioAPI::Payments::Domestic.new(***) # Create new payment
|
39
|
+
service = FioAPI::Payment.new domestic # Pass one payment or array of payments
|
40
|
+
service.import # Call API
|
41
|
+
service.response # Return deserialized response with status code etc.
|
37
42
|
|
38
43
|
== Contributing to fio_api
|
39
44
|
|
data/Rakefile
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'rubygems'
|
4
2
|
require 'bundler'
|
5
3
|
begin
|
6
4
|
Bundler.setup(:default, :development)
|
7
5
|
rescue Bundler::BundlerError => e
|
8
|
-
|
9
|
-
|
6
|
+
warn e.message
|
7
|
+
warn 'Run `bundle install` to install missing gems'
|
10
8
|
exit e.status_code
|
11
9
|
end
|
12
10
|
require 'rake'
|
@@ -14,13 +12,13 @@ require 'rake'
|
|
14
12
|
require 'jeweler'
|
15
13
|
Jeweler::Tasks.new do |gem|
|
16
14
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name =
|
18
|
-
gem.homepage =
|
19
|
-
gem.license =
|
20
|
-
gem.summary = %
|
21
|
-
gem.description = %
|
22
|
-
gem.email =
|
23
|
-
gem.authors = [
|
15
|
+
gem.name = 'fio_api'
|
16
|
+
gem.homepage = 'http://github.com/14113/fio_api'
|
17
|
+
gem.license = 'MIT'
|
18
|
+
gem.summary = %(API wrapper for FIO bank)
|
19
|
+
gem.description = %(API wrapper for FIO bank)
|
20
|
+
gem.email = 'a.martinik@gmail.com'
|
21
|
+
gem.authors = ['Robin Bortlik', 'Adam Martinik']
|
24
22
|
# dependencies defined in Gemfile
|
25
23
|
end
|
26
24
|
Jeweler::RubygemsDotOrgTasks.new
|
@@ -36,11 +34,11 @@ RSpec::Core::RakeTask.new(:rcov) do |spec|
|
|
36
34
|
spec.rcov = true
|
37
35
|
end
|
38
36
|
|
39
|
-
task :
|
37
|
+
task default: :spec
|
40
38
|
|
41
39
|
require 'rdoc/task'
|
42
40
|
Rake::RDocTask.new do |rdoc|
|
43
|
-
version = File.exist?('VERSION') ? File.read('VERSION') :
|
41
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ''
|
44
42
|
|
45
43
|
rdoc.rdoc_dir = 'rdoc'
|
46
44
|
rdoc.title = "fio_api #{version}"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/fio_api.gemspec
CHANGED
@@ -2,22 +2,25 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: fio_api 0.0.6 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name = "fio_api"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.name = "fio_api".freeze
|
9
|
+
s.version = "0.0.6"
|
9
10
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["Robin Bortlik".freeze, "Adam Martinik".freeze]
|
14
|
+
s.date = "2018-06-04"
|
15
|
+
s.description = "API wrapper for FIO bank".freeze
|
16
|
+
s.email = "a.martinik@gmail.com".freeze
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"LICENSE.txt",
|
17
19
|
"README.rdoc"
|
18
20
|
]
|
19
21
|
s.files = [
|
20
22
|
".rspec",
|
23
|
+
".rubocop.yml",
|
21
24
|
".travis.yml",
|
22
25
|
"Gemfile",
|
23
26
|
"LICENSE.txt",
|
@@ -27,54 +30,75 @@ Gem::Specification.new do |s|
|
|
27
30
|
"fio_api.gemspec",
|
28
31
|
"lib/base.rb",
|
29
32
|
"lib/base/account.rb",
|
30
|
-
"lib/base/
|
33
|
+
"lib/base/deserializers/import_response_deserializer.rb",
|
31
34
|
"lib/base/deserializers/list_response_deserializer.rb",
|
32
35
|
"lib/base/list.rb",
|
36
|
+
"lib/base/payment.rb",
|
37
|
+
"lib/base/payments/domestic.rb",
|
38
|
+
"lib/base/payments/status.rb",
|
39
|
+
"lib/base/payments/xml/item.rb",
|
40
|
+
"lib/base/payments/xml/root.rb",
|
33
41
|
"lib/base/request.rb",
|
34
42
|
"lib/base/transaction.rb",
|
35
43
|
"lib/fio_api.rb",
|
36
44
|
"lib/utils/hash.rb",
|
37
45
|
"spec/base/account_spec.rb",
|
38
|
-
"spec/base/
|
46
|
+
"spec/base/deserializers/import_response_deserializer_spec.rb",
|
39
47
|
"spec/base/deserializers/list_response_deserializer_spec.rb",
|
40
48
|
"spec/base/list_spec.rb",
|
49
|
+
"spec/base/payment_spec.rb",
|
50
|
+
"spec/base/payments/domestic_spec.rb",
|
51
|
+
"spec/base/payments/status_spec.rb",
|
52
|
+
"spec/base/payments/xml/root_spec.rb",
|
41
53
|
"spec/base/request_spec.rb",
|
42
54
|
"spec/base/transaction_spec.rb",
|
43
55
|
"spec/fio_api_spec.rb",
|
56
|
+
"spec/fixtures/vcr_cassettes/by_date_range.yml",
|
57
|
+
"spec/fixtures/vcr_cassettes/by_listing_id_and_year.yml",
|
58
|
+
"spec/fixtures/vcr_cassettes/from_last_fetch.yml",
|
59
|
+
"spec/fixtures/vcr_cassettes/import.yml",
|
60
|
+
"spec/fixtures/vcr_cassettes/invalid_import.yml",
|
61
|
+
"spec/fixtures/vcr_cassettes/set_last_fetch_date.yml",
|
62
|
+
"spec/fixtures/vcr_cassettes/set_last_fetch_id.yml",
|
44
63
|
"spec/spec_helper.rb",
|
45
64
|
"spec/utils/hash_spec.rb"
|
46
65
|
]
|
47
|
-
s.homepage = "http://github.com/
|
48
|
-
s.licenses = ["MIT"]
|
49
|
-
s.
|
50
|
-
s.
|
51
|
-
s.summary = "API wrapper for FIO bank"
|
66
|
+
s.homepage = "http://github.com/14113/fio_api".freeze
|
67
|
+
s.licenses = ["MIT".freeze]
|
68
|
+
s.rubygems_version = "2.6.11".freeze
|
69
|
+
s.summary = "API wrapper for FIO bank".freeze
|
52
70
|
|
53
71
|
if s.respond_to? :specification_version then
|
54
|
-
s.specification_version =
|
72
|
+
s.specification_version = 4
|
55
73
|
|
56
74
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
|
-
s.add_runtime_dependency(%q<httparty
|
58
|
-
s.add_development_dependency(%q<
|
59
|
-
s.add_development_dependency(%q<
|
60
|
-
s.add_development_dependency(%q<rdoc
|
61
|
-
s.add_development_dependency(%q<
|
62
|
-
s.add_development_dependency(%q<
|
75
|
+
s.add_runtime_dependency(%q<httparty>.freeze, [">= 0.16.2"])
|
76
|
+
s.add_development_dependency(%q<bundler>.freeze, [">= 1.10.6"])
|
77
|
+
s.add_development_dependency(%q<jeweler>.freeze, [">= 2.1.1"])
|
78
|
+
s.add_development_dependency(%q<rdoc>.freeze, [">= 4.2.0"])
|
79
|
+
s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
|
80
|
+
s.add_development_dependency(%q<rspec-mocks>.freeze, [">= 3.4.0"])
|
81
|
+
s.add_development_dependency(%q<vcr>.freeze, [">= 0"])
|
82
|
+
s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
|
63
83
|
else
|
64
|
-
s.add_dependency(%q<httparty
|
65
|
-
s.add_dependency(%q<
|
66
|
-
s.add_dependency(%q<
|
67
|
-
s.add_dependency(%q<rdoc
|
68
|
-
s.add_dependency(%q<
|
69
|
-
s.add_dependency(%q<
|
84
|
+
s.add_dependency(%q<httparty>.freeze, [">= 0.16.2"])
|
85
|
+
s.add_dependency(%q<bundler>.freeze, [">= 1.10.6"])
|
86
|
+
s.add_dependency(%q<jeweler>.freeze, [">= 2.1.1"])
|
87
|
+
s.add_dependency(%q<rdoc>.freeze, [">= 4.2.0"])
|
88
|
+
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
89
|
+
s.add_dependency(%q<rspec-mocks>.freeze, [">= 3.4.0"])
|
90
|
+
s.add_dependency(%q<vcr>.freeze, [">= 0"])
|
91
|
+
s.add_dependency(%q<webmock>.freeze, [">= 0"])
|
70
92
|
end
|
71
93
|
else
|
72
|
-
s.add_dependency(%q<httparty
|
73
|
-
s.add_dependency(%q<
|
74
|
-
s.add_dependency(%q<
|
75
|
-
s.add_dependency(%q<rdoc
|
76
|
-
s.add_dependency(%q<
|
77
|
-
s.add_dependency(%q<
|
94
|
+
s.add_dependency(%q<httparty>.freeze, [">= 0.16.2"])
|
95
|
+
s.add_dependency(%q<bundler>.freeze, [">= 1.10.6"])
|
96
|
+
s.add_dependency(%q<jeweler>.freeze, [">= 2.1.1"])
|
97
|
+
s.add_dependency(%q<rdoc>.freeze, [">= 4.2.0"])
|
98
|
+
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
99
|
+
s.add_dependency(%q<rspec-mocks>.freeze, [">= 3.4.0"])
|
100
|
+
s.add_dependency(%q<vcr>.freeze, [">= 0"])
|
101
|
+
s.add_dependency(%q<webmock>.freeze, [">= 0"])
|
78
102
|
end
|
79
103
|
end
|
80
104
|
|
data/lib/base/account.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module FioAPI
|
2
2
|
# == Account class representing the Account entity
|
3
3
|
class Account < FioAPI::Base
|
4
|
-
attr_accessor :account_id, :bank_id, :currency, :iban
|
5
|
-
|
4
|
+
attr_accessor :account_id, :bank_id, :currency, :iban, :bic, :opening_balance, :closing_balance,
|
5
|
+
:date_start, :date_end, :year_list, :id_list, :id_from, :id_to, :id_last_download
|
6
6
|
end
|
7
7
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
module FioAPI
|
4
|
+
# == ImportResponseDeserializer
|
5
|
+
# Deserializer responsible for response json deserializing. Should construct object with status attributes.
|
6
|
+
#
|
7
|
+
class ImportResponseDeserializer < HTTParty::Parser
|
8
|
+
attr_accessor :status
|
9
|
+
|
10
|
+
# Parse json
|
11
|
+
#
|
12
|
+
# == Returns:
|
13
|
+
# Should return new deserialized object
|
14
|
+
#
|
15
|
+
def parse
|
16
|
+
deserialize super
|
17
|
+
end
|
18
|
+
|
19
|
+
# Deserialize json
|
20
|
+
#
|
21
|
+
# == Parameters:
|
22
|
+
# hash::
|
23
|
+
# Hash returned from payments request.
|
24
|
+
#
|
25
|
+
# == Returns:
|
26
|
+
# New object with status attributes
|
27
|
+
#
|
28
|
+
def deserialize(json)
|
29
|
+
self.status = deserialize_import(json.try_path('responseImport', 'result'))
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# Deserialize import of payments
|
36
|
+
# == Parameters:
|
37
|
+
# response_json::
|
38
|
+
# Hash with informations about payments
|
39
|
+
# == Returns:
|
40
|
+
# Status
|
41
|
+
def deserialize_import(response_json)
|
42
|
+
FioAPI::Payments::Status.new(
|
43
|
+
error_code: response_json.try_path('errorCode').to_i,
|
44
|
+
error_message: response_json.try_path('message').to_s,
|
45
|
+
id_instruction: response_json.try_path('idInstruction').to_i,
|
46
|
+
sum_credit: response_json.try_path('sums', 'sum', 'sumCredit').to_f,
|
47
|
+
sum_debet: response_json.try_path('sums', 'sum', 'sumDebet').to_f
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,10 +1,21 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
1
3
|
module FioAPI
|
2
4
|
# == ListResponseDeserializer
|
3
5
|
# Deserializer responsible for response json deserializing. Should construct object with account and transactions attributes.
|
4
6
|
#
|
5
|
-
class ListResponseDeserializer <
|
7
|
+
class ListResponseDeserializer < HTTParty::Parser
|
6
8
|
attr_accessor :account, :transactions
|
7
9
|
|
10
|
+
# Parse json
|
11
|
+
#
|
12
|
+
# == Returns:
|
13
|
+
# Should return new deserialized object
|
14
|
+
#
|
15
|
+
def parse
|
16
|
+
deserialize super
|
17
|
+
end
|
18
|
+
|
8
19
|
# Deserialize json
|
9
20
|
#
|
10
21
|
# == Parameters:
|
@@ -15,8 +26,8 @@ module FioAPI
|
|
15
26
|
# New object with account and transactions attributes
|
16
27
|
#
|
17
28
|
def deserialize(json)
|
18
|
-
self.account = deserialize_account(json.try_path(
|
19
|
-
self.transactions = deserialize_transactions(json.try_path(
|
29
|
+
self.account = deserialize_account(json.try_path('accountStatement', 'info'))
|
30
|
+
self.transactions = deserialize_transactions(json.try_path('accountStatement', 'transactionList', 'transaction'))
|
20
31
|
self
|
21
32
|
end
|
22
33
|
|
@@ -30,20 +41,20 @@ module FioAPI
|
|
30
41
|
# Account object
|
31
42
|
def deserialize_account(account_json)
|
32
43
|
FioAPI::Account.new(
|
33
|
-
account_id: account_json.try_path(
|
34
|
-
bank_id: account_json.try_path(
|
35
|
-
currency: account_json.try_path(
|
36
|
-
iban: account_json.try_path(
|
37
|
-
bic: account_json.try_path(
|
38
|
-
opening_balance: account_json.try_path(
|
39
|
-
closing_balance: account_json.try_path(
|
40
|
-
date_start: account_json.try_path(
|
41
|
-
date_end: account_json.try_path(
|
42
|
-
year_list: account_json.try_path(
|
43
|
-
id_list: account_json.try_path(
|
44
|
-
id_from: account_json.try_path(
|
45
|
-
id_to: account_json.try_path(
|
46
|
-
id_last_download: account_json.try_path(
|
44
|
+
account_id: account_json.try_path('accountId'),
|
45
|
+
bank_id: account_json.try_path('bankId'),
|
46
|
+
currency: account_json.try_path('currency'),
|
47
|
+
iban: account_json.try_path('iban'),
|
48
|
+
bic: account_json.try_path('bic'),
|
49
|
+
opening_balance: account_json.try_path('openingBalance'),
|
50
|
+
closing_balance: account_json.try_path('closingBalance'),
|
51
|
+
date_start: account_json.try_path('dateStart'),
|
52
|
+
date_end: account_json.try_path('dateEnd'),
|
53
|
+
year_list: account_json.try_path('yearList'),
|
54
|
+
id_list: account_json.try_path('idList'),
|
55
|
+
id_from: account_json.try_path('idFrom'),
|
56
|
+
id_to: account_json.try_path('idTo'),
|
57
|
+
id_last_download: account_json.try_path('idLastDownload')
|
47
58
|
)
|
48
59
|
end
|
49
60
|
|
@@ -56,25 +67,25 @@ module FioAPI
|
|
56
67
|
def deserialize_transactions(transactions_json)
|
57
68
|
Array(transactions_json).map do |trans_json|
|
58
69
|
FioAPI::Transaction.new(
|
59
|
-
transaction_id: trans_json.try_path(
|
60
|
-
date: trans_json.try_path(
|
61
|
-
amount: trans_json.try_path(
|
62
|
-
currency: trans_json.try_path(
|
63
|
-
account: trans_json.try_path(
|
64
|
-
account_name: trans_json.try_path(
|
65
|
-
bank_code: trans_json.try_path(
|
66
|
-
bank_name: trans_json.try_path(
|
67
|
-
ks: trans_json.try_path(
|
68
|
-
vs: trans_json.try_path(
|
69
|
-
ss: trans_json.try_path(
|
70
|
-
user_identification: trans_json.try_path(
|
71
|
-
message_for_recipient: trans_json.try_path(
|
72
|
-
transaction_type: trans_json.try_path(
|
73
|
-
sender: trans_json.try_path(
|
74
|
-
detail_info: trans_json.try_path(
|
75
|
-
comment: trans_json.try_path(
|
76
|
-
bic: trans_json.try_path(
|
77
|
-
action_id: trans_json.try_path(
|
70
|
+
transaction_id: trans_json.try_path('column22', 'value'),
|
71
|
+
date: trans_json.try_path('column0', 'value'),
|
72
|
+
amount: trans_json.try_path('column1', 'value'),
|
73
|
+
currency: trans_json.try_path('column14', 'value'),
|
74
|
+
account: trans_json.try_path('column2', 'value'),
|
75
|
+
account_name: trans_json.try_path('column10', 'value'),
|
76
|
+
bank_code: trans_json.try_path('column3', 'value'),
|
77
|
+
bank_name: trans_json.try_path('column12', 'value'),
|
78
|
+
ks: trans_json.try_path('column4', 'value'),
|
79
|
+
vs: trans_json.try_path('column5', 'value'),
|
80
|
+
ss: trans_json.try_path('column6', 'value'),
|
81
|
+
user_identification: trans_json.try_path('column7', 'value'),
|
82
|
+
message_for_recipient: trans_json.try_path('column16', 'value'),
|
83
|
+
transaction_type: trans_json.try_path('column8', 'value'),
|
84
|
+
sender: trans_json.try_path('column9', 'value'),
|
85
|
+
detail_info: trans_json.try_path('column18', 'value'),
|
86
|
+
comment: trans_json.try_path('column25', 'value'),
|
87
|
+
bic: trans_json.try_path('column26', 'value'),
|
88
|
+
action_id: trans_json.try_path('column17', 'value')
|
78
89
|
)
|
79
90
|
end
|
80
91
|
end
|
data/lib/base/list.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require "base/deserializers/list_response_deserializer"
|
2
|
-
|
3
1
|
module FioAPI
|
4
2
|
# Base class for request to transactions listing and account information
|
5
3
|
class List < FioAPI::Base
|
@@ -18,7 +16,7 @@ module FioAPI
|
|
18
16
|
#
|
19
17
|
# https://www.fio.cz/ib_api/rest/periods/(token)/(date_from)/(date_to)/transactions.(format)
|
20
18
|
def by_date_range(from_date, to_date)
|
21
|
-
fetch_and_deserialize_response(
|
19
|
+
fetch_and_deserialize_response("/periods/#{FioAPI.token}/#{from_date}/#{to_date}/transactions.json")
|
22
20
|
end
|
23
21
|
|
24
22
|
# Allow request transactions by listing_id and year
|
@@ -34,7 +32,7 @@ module FioAPI
|
|
34
32
|
#
|
35
33
|
# https://www.fio.cz/ib_api/rest/by-id/(token)/(year)/(id)/transactions.(format)
|
36
34
|
def by_listing_id_and_year(listing_id, year)
|
37
|
-
fetch_and_deserialize_response(
|
35
|
+
fetch_and_deserialize_response("/by-id/#{FioAPI.token}/#{year}/#{listing_id}/transactions.json")
|
38
36
|
end
|
39
37
|
|
40
38
|
# Allow request transactions from last request
|
@@ -44,7 +42,7 @@ module FioAPI
|
|
44
42
|
#
|
45
43
|
# https://www.fio.cz/ib_api/rest/last/(token)/transactions.(format)
|
46
44
|
def from_last_fetch
|
47
|
-
fetch_and_deserialize_response(
|
45
|
+
fetch_and_deserialize_response("/last/#{FioAPI.token}/transactions.json")
|
48
46
|
end
|
49
47
|
|
50
48
|
# Allow request to set last transaction_id
|
@@ -58,7 +56,7 @@ module FioAPI
|
|
58
56
|
#
|
59
57
|
# https://www.fio.cz/ib_api/rest/set-last-id/(token)/(id)/
|
60
58
|
def set_last_fetch_id(transaction_id)
|
61
|
-
fetch_and_deserialize_response(
|
59
|
+
fetch_and_deserialize_response("/set-last-id/#{FioAPI.token}/#{transaction_id}/")
|
62
60
|
end
|
63
61
|
|
64
62
|
# Allow request to set last request date
|
@@ -72,7 +70,7 @@ module FioAPI
|
|
72
70
|
#
|
73
71
|
# https://www.fio.cz/ib_api/rest/set-last-date/(token)/(rrrr-mm-dd)/
|
74
72
|
def set_last_fetch_date(date)
|
75
|
-
fetch_and_deserialize_response(
|
73
|
+
fetch_and_deserialize_response("/set-last-date/#{FioAPI.token}/#{date}/")
|
76
74
|
end
|
77
75
|
|
78
76
|
private
|
@@ -87,13 +85,10 @@ module FioAPI
|
|
87
85
|
# == Returns:
|
88
86
|
# List insatnce with account info and transactions list
|
89
87
|
#
|
90
|
-
def fetch_and_deserialize_response(
|
91
|
-
self.request = FioAPI::Request.
|
92
|
-
self.request.
|
93
|
-
|
94
|
-
self.response = self.request.response
|
95
|
-
self
|
88
|
+
def fetch_and_deserialize_response(path)
|
89
|
+
self.request = FioAPI::Request.get(path, parser: ListResponseDeserializer)
|
90
|
+
self.response = request.parsed_response
|
91
|
+
request
|
96
92
|
end
|
97
|
-
|
98
93
|
end
|
99
94
|
end
|
data/lib/base/payment.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
module FioAPI
|
2
|
+
# Base class for submit payments and waiting for authorization
|
3
|
+
class Payment
|
4
|
+
attr_accessor :request, :response, :payments
|
5
|
+
|
6
|
+
def initialize(payments)
|
7
|
+
@payments = [payments].flatten
|
8
|
+
end
|
9
|
+
|
10
|
+
def path
|
11
|
+
"/import/?token=#{FioAPI.token}&type=xml"
|
12
|
+
end
|
13
|
+
|
14
|
+
def import
|
15
|
+
self.request ||= FioAPI::Request.post(path, headers: headers, body: { 'file' => file }, parser: FioAPI::ImportResponseDeserializer)
|
16
|
+
self.response ||= self.request.parsed_response
|
17
|
+
self.request
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def headers
|
23
|
+
{
|
24
|
+
'Content-Type' => 'multipart/form-data',
|
25
|
+
'boundary' => '-----------RubyMultipartPost'
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def xml
|
30
|
+
FioAPI::Payments::Xml::Root.new(payments).build
|
31
|
+
end
|
32
|
+
|
33
|
+
def file
|
34
|
+
file = Tempfile.new('fio')
|
35
|
+
file.write xml
|
36
|
+
file.rewind
|
37
|
+
file
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module FioAPI
|
2
|
+
module Payments
|
3
|
+
# == Domestic class representing the Domestic entity
|
4
|
+
class Domestic < FioAPI::Base
|
5
|
+
attr_accessor :account_from, :currency, :amount, :account_to, :bank_code, :ks, :vs, :ss,
|
6
|
+
:date, :message_for_recipient, :comment
|
7
|
+
|
8
|
+
def payment_type
|
9
|
+
'431001'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module FioAPI
|
2
|
+
module Payments
|
3
|
+
module Xml
|
4
|
+
class Item
|
5
|
+
attr_reader :builder, :payment
|
6
|
+
|
7
|
+
def initialize(builder, payment)
|
8
|
+
@builder = builder
|
9
|
+
@payment = payment
|
10
|
+
end
|
11
|
+
|
12
|
+
def build
|
13
|
+
@build ||= builder.DomesticTransaction do
|
14
|
+
builder.accountFrom payment.account_from
|
15
|
+
builder.currency payment.currency
|
16
|
+
builder.amount payment.amount
|
17
|
+
builder.accountTo payment.account_to
|
18
|
+
builder.bankCode payment.bank_code
|
19
|
+
builder.ks payment.ks
|
20
|
+
builder.vs payment.vs
|
21
|
+
builder.ss payment.ss
|
22
|
+
builder.date payment.date
|
23
|
+
builder.messageForRecipient payment.message_for_recipient
|
24
|
+
comment
|
25
|
+
builder.paymentType payment.payment_type
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def create_element(name, value = '')
|
32
|
+
builder.parent.add_child builder.doc.create_element(name, value)
|
33
|
+
end
|
34
|
+
|
35
|
+
def comment
|
36
|
+
create_element('comment', payment.comment)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|