czech_banks_parser 0.0.1
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 +7 -0
- data/.gitignore +2 -0
- data/czech_banks_parser.gemspec +31 -0
- data/lib/banks/csas.rb +38 -0
- data/lib/banks/fio.rb +30 -0
- data/lib/czech_banks_parser.rb +32 -0
- metadata +68 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 90760afe5261a775da7b946a741ee042e2b5cd77
|
4
|
+
data.tar.gz: 5cc2a10717afe03b300b1d9a3ff5aed07b36ceb1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ecdf88d215ded20ef1d3fd9053dd076099351cc11a21df63c68f5b8df18dd7dc21db61fb22ee58068397148ea12a8e90b940936655cefe168a0d945146e75b38
|
7
|
+
data.tar.gz: 37bc9c921fce49d6a3863a814a833590d5d1466254d121385bba532aaab7cfd7b179f132c87161cb0b7f5df8cb82ea5d7ec1c52dd5f541b47e10d31f06b318f5
|
data/.gitignore
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "czech_banks_parser"
|
3
|
+
s.version = "0.0.1"
|
4
|
+
s.default_executable = "czech_banks_parser"
|
5
|
+
s.platform = Gem::Platform::RUBY
|
6
|
+
s.required_ruby_version = '>= 2.0.0'
|
7
|
+
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
+
s.authors = ["Richard Lapiš"]
|
10
|
+
s.date = %q{2016-09-30}
|
11
|
+
s.description = %q{A parser from Czech Banks API's - CSAS, FIO}
|
12
|
+
s.email = %q{richard.lapis@gmail.com}
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.test_files = []
|
15
|
+
s.homepage = %q{https://github.com/richardrails/czech_banks_parser}
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.rubygems_version = %q{1.6.2}
|
18
|
+
s.summary = %q{A parser from Czech Banks API's}
|
19
|
+
s.license = 'MIT'
|
20
|
+
|
21
|
+
s.add_runtime_dependency("rest-client", "~> 1.6.7", ">= 1.6.7")
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
s.specification_version = 3
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
+
else
|
28
|
+
end
|
29
|
+
else
|
30
|
+
end
|
31
|
+
end
|
data/lib/banks/csas.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Banks
|
2
|
+
class Csas
|
3
|
+
# 7777777777
|
4
|
+
# https://help.salesforce.com/apex/HTViewHelpDoc?id=remoteaccess_oauth_refresh_token_flow.htm&language=en_US
|
5
|
+
|
6
|
+
def initialize(token, config)
|
7
|
+
@config = config
|
8
|
+
@token = get_token(token)
|
9
|
+
end
|
10
|
+
|
11
|
+
def accounts
|
12
|
+
JSON.parse(RestClient.get(@config[:base_uri] + '/netbanking/my/accounts', headers), symbolize_names: true)[:accounts]
|
13
|
+
end
|
14
|
+
|
15
|
+
def ibans
|
16
|
+
accounts.collect{|ac| ac[:accountno][:iban]}
|
17
|
+
end
|
18
|
+
|
19
|
+
def transactions(time_start = nil, time_end = nil, iban = nil)
|
20
|
+
url = @config[:base_uri] + '/netbanking/my/accounts/' + iban.to_s + '/transactions'
|
21
|
+
url += "?dateStart=#{time_start.iso8601}" if time_start.present?
|
22
|
+
url += "#{url =~ /\?/ ? '&' : '?'}dateEnd=#{time_end.iso8601}" if time_end.present?
|
23
|
+
|
24
|
+
JSON.parse RestClient.get(url, headers), symbolize_names: true
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def headers
|
30
|
+
{'WEB-API-key' => @config[:web_api_key], 'Authorization' => "Bearer #{@token}", accept: :json}
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_token(token)
|
34
|
+
response = RestClient.post @config[:token_uri], {grant_type: 'refresh_token', client_id: @config[:client_id], client_secret: @config[:secret], refresh_token: token}
|
35
|
+
JSON.parse(response, symbolize_names: true)[:access_token]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/banks/fio.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
module Banks
|
2
|
+
class Fio
|
3
|
+
|
4
|
+
def initialize(token, config)
|
5
|
+
@config = config
|
6
|
+
@token = token
|
7
|
+
end
|
8
|
+
|
9
|
+
def transactions(time_start, time_end, iban)
|
10
|
+
url = "#{@config[:base_uri]}/periods/#{@token}/#{time_start.strftime('%Y-%m-%d')}/#{time_end.strftime('%Y-%m-%d')}/transactions.json"
|
11
|
+
|
12
|
+
trans = []
|
13
|
+
JSON.parse(RestClient.get(url), symbolize_names: true)[:accountStatement][:transactionList][:transaction].each do |tr|
|
14
|
+
trans << {
|
15
|
+
id: tr[:column22].try(:[], :value),
|
16
|
+
date: tr[:column0].try(:[], :value),
|
17
|
+
amount: tr[:column1].try(:[], :value),
|
18
|
+
currency: tr[:column14].try(:[], :value),
|
19
|
+
account: "#{tr[:column2].try(:[], :value)}/#{tr[:column3].try(:[], :value)}",
|
20
|
+
bank: tr[:column12].try(:[], :value),
|
21
|
+
name: tr[:column7].try(:[], :value) || tr[:column9].try(:[], :value),
|
22
|
+
variable_symbol: tr[:column5].try(:[], :value),
|
23
|
+
message: tr[:column16].try(:[], :value)
|
24
|
+
}
|
25
|
+
end
|
26
|
+
trans
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'banks/fio.rb'
|
3
|
+
require 'banks/csas.rb'
|
4
|
+
|
5
|
+
class CzechBanksParser
|
6
|
+
def initialize(token, bank, opts = {})
|
7
|
+
@opts = opts
|
8
|
+
case bank
|
9
|
+
when 'csas' then Banks::Csas.new(token, config('csas'))
|
10
|
+
when 'fio' then Banks::Fio.new(token, config('fio'))
|
11
|
+
else raise(NotImplementedError)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def config(state)
|
16
|
+
case state
|
17
|
+
when 'csas'
|
18
|
+
{
|
19
|
+
base_uri: 'https://api.csas.cz/sandbox/webapi/api/v1',
|
20
|
+
auth_uri: 'https://api.csas.cz/sandbox/widp/oauth2/auth',
|
21
|
+
token_uri: 'https://api.csas.cz/sandbox/widp/oauth2/token',
|
22
|
+
client_id: @opts[:client_id],
|
23
|
+
secret: @opts[:secret],
|
24
|
+
web_api_key: @opts[:web_api_key]
|
25
|
+
}
|
26
|
+
when 'fio'
|
27
|
+
{
|
28
|
+
base_uri: 'https://www.fio.cz/ib_api/rest'
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: czech_banks_parser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Richard Lapiš
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.6.7
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.6.7
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.6.7
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.6.7
|
33
|
+
description: A parser from Czech Banks API's - CSAS, FIO
|
34
|
+
email: richard.lapis@gmail.com
|
35
|
+
executables: []
|
36
|
+
extensions: []
|
37
|
+
extra_rdoc_files: []
|
38
|
+
files:
|
39
|
+
- ".gitignore"
|
40
|
+
- czech_banks_parser.gemspec
|
41
|
+
- lib/banks/csas.rb
|
42
|
+
- lib/banks/fio.rb
|
43
|
+
- lib/czech_banks_parser.rb
|
44
|
+
homepage: https://github.com/richardrails/czech_banks_parser
|
45
|
+
licenses:
|
46
|
+
- MIT
|
47
|
+
metadata: {}
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.0.0
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubyforge_project:
|
64
|
+
rubygems_version: 2.4.8
|
65
|
+
signing_key:
|
66
|
+
specification_version: 3
|
67
|
+
summary: A parser from Czech Banks API's
|
68
|
+
test_files: []
|