bankscrap 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/generators/adapter_generator.rb +38 -0
- data/generators/templates/%gem_name%.gemspec.tt +23 -0
- data/generators/templates/Gemfile.tt +4 -0
- data/generators/templates/LICENSE.txt +20 -0
- data/generators/templates/README.md.tt +56 -0
- data/generators/templates/Rakefile.tt +1 -0
- data/generators/templates/lib/%gem_name%.rb.tt +2 -0
- data/generators/templates/lib/bankscrap/%bank_name_dasherized%/bank.rb.tt +91 -0
- data/generators/templates/lib/bankscrap/%bank_name_dasherized%/version.rb.tt +5 -0
- data/lib/bankscrap/cli.rb +8 -0
- data/lib/bankscrap/version.rb +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27417d295cb4b8c1f6c6d5e21a45ae62a5c49627
|
4
|
+
data.tar.gz: 630ec94eeb87fa8981f73b2cea65562e1356a39f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61536463748cd80fa26ed4abe26558b86cdcc7f2f475e314a179578d7c439efbf1dfea0539c48f64c614ac4bff1d5191f54db390fd8d809ab5daad92bd6e28ab
|
7
|
+
data.tar.gz: 31c6dbcd704f6a5cae04367551c48b4796772f35362040d2bf20b0d346bac043bef5071f37d6fbce54840e789fa25eabb5b849c74c732ce246c761eaf9ea7d12
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Bankscrap
|
1
|
+
# 💸 Bankscrap 💸
|
2
2
|
|
3
3
|
[![](http://188.166.39.57:3000/badge.svg)](http://188.166.39.57:3000)
|
4
4
|
|
@@ -8,7 +8,8 @@ Feel free to contribute and add your bank if it isn't supported.
|
|
8
8
|
|
9
9
|
## Supported banks
|
10
10
|
|
11
|
-
* **BBVA
|
11
|
+
* **BBVA** (personal accounts): [bankscrap-bbva](https://github.com/bankscrap/bankscrap-bbva)
|
12
|
+
* **BBVA Net Cash** (business accounts): [bankscrap-bbva-net-cash](https://github.com/bankscrap/bankscrap-bbva-net-cash)
|
12
13
|
* **ING Direct**: [bankscrap-ing](https://github.com/bankscrap/bankscrap-ing)
|
13
14
|
* **Banc Sabadell** (WIP): [bankscrap-banc-sabadell](https://github.com/bankscrap/bankscrap-banc-sabadell)
|
14
15
|
|
@@ -144,7 +145,7 @@ account.transactions
|
|
144
145
|
|
145
146
|
## Contributing
|
146
147
|
|
147
|
-
1. Fork it ( https://github.com/
|
148
|
+
1. Fork it ( https://github.com/bankscrap/bankscrap/fork )
|
148
149
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
149
150
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
150
151
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Bankscrap
|
2
|
+
class AdapterGenerator < Thor::Group
|
3
|
+
include Thor::Actions
|
4
|
+
|
5
|
+
argument :bank_name
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.join(File.dirname(__FILE__), 'templates')
|
9
|
+
end
|
10
|
+
|
11
|
+
def generate
|
12
|
+
self.destination_root = File.expand_path('.', gem_name)
|
13
|
+
directory '.'
|
14
|
+
|
15
|
+
say ""
|
16
|
+
say "Great! Now you can start implementing your bank's adapter for Bankscrap.", :yellow
|
17
|
+
say ""
|
18
|
+
say "To get started take a look to:", :yellow
|
19
|
+
say "#{destination_root}/#{gem_name}.rb", :yellow
|
20
|
+
say ""
|
21
|
+
say "If you need help you can join our Slack chat room. Click the Slack badge on Github:", :yellow
|
22
|
+
say "https://github.com/bankscrap/bankscrap", :yellow
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def bank_name_dasherized
|
28
|
+
@bank_name_dasherized ||= bank_name.underscore.dasherize
|
29
|
+
end
|
30
|
+
def gem_name
|
31
|
+
@gem_name ||= 'bankscrap-' + bank_name_dasherized
|
32
|
+
end
|
33
|
+
|
34
|
+
def module_name
|
35
|
+
@module_name ||= bank_name
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bankscrap/<%= bank_name_dasherized %>/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = '<%= gem_name %>'
|
8
|
+
spec.version = Bankscrap::<%= module_name %>::VERSION
|
9
|
+
spec.authors = ['Your Name']
|
10
|
+
spec.email = ['your@email.com']
|
11
|
+
spec.summary = '<%= bank_name %> adapter for Bankscrap'
|
12
|
+
spec.homepage = ''
|
13
|
+
spec.license = 'MIT'
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_runtime_dependency 'bankscrap'
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
23
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Bankscrap::<%= module_name %>
|
2
|
+
|
3
|
+
Bankscrap adapter for <%= bank_name %>
|
4
|
+
|
5
|
+
**TODO**: write a proper description for your adapter.
|
6
|
+
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem '<%= gem_name %>'
|
14
|
+
```
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
$ bundle
|
19
|
+
|
20
|
+
Or install it yourself as:
|
21
|
+
|
22
|
+
$ gem install <%= gem_name %>
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
### From terminal
|
27
|
+
#### Bank account balance
|
28
|
+
|
29
|
+
$ bankscrap balance <%= module_name %> --user YOUR_USER --password YOUR_PASSWORD --extra=company_code:YOUR_COMPANY_CODE
|
30
|
+
|
31
|
+
|
32
|
+
#### Transactions
|
33
|
+
|
34
|
+
$ bankscrap transactions <%= module_name %> --user YOUR_USER --password YOUR_PASSWORD --extra=company_code:YOUR_COMPANY_CODE
|
35
|
+
|
36
|
+
---
|
37
|
+
|
38
|
+
For more details on usage instructions please read [Bankscrap readme](https://github.com/bankscrap/bankscrap/#usage).
|
39
|
+
|
40
|
+
### From Ruby code
|
41
|
+
|
42
|
+
**TODO**: check if your bank adapter needs more extra_args for the initializer.
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
require '<%= gem_name %>'
|
46
|
+
<%= bank_name.underscore %> = Bankscrap::<%= module_name %>::Bank.new(YOUR_USER, YOUR_PASSWORD, extra_args: {arg: EXTRA_ARG_1})
|
47
|
+
```
|
48
|
+
|
49
|
+
|
50
|
+
## Contributing
|
51
|
+
|
52
|
+
1. Fork it ( https://github.com/bankscrap/<%= gem_name %>/fork )
|
53
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
54
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
55
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
56
|
+
5. Create a new Pull Request
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'bankscrap'
|
2
|
+
require 'securerandom'
|
3
|
+
|
4
|
+
module Bankscrap
|
5
|
+
module <%= module_name %>
|
6
|
+
class Bank < ::Bankscrap::Bank
|
7
|
+
|
8
|
+
# Define the endpoints for the Bank API here
|
9
|
+
# BASE_ENDPOINT = 'https://api.mybank.com'.freeze
|
10
|
+
# LOGIN_ENDPOINT = '/login'.freeze
|
11
|
+
# ACCOUNTS_ENDPOINT = '/accounts'.freeze
|
12
|
+
# TRANSACTIONS_ENDPOINT = '/transactions'.freeze
|
13
|
+
|
14
|
+
def initialize(user, password, log: false, debug: false, extra_args: nil)
|
15
|
+
@user = user
|
16
|
+
@password = password
|
17
|
+
@log = log
|
18
|
+
@debug = debug
|
19
|
+
# @extra_arg1 = extra_args.with_indifferent_access['extra_arg1']
|
20
|
+
|
21
|
+
initialize_connection
|
22
|
+
|
23
|
+
# Optional Custom headers
|
24
|
+
# user_agent = SecureRandom.hex(32).upcase + ';Android;LGE;Nexus 5;1080x1776;Android;5.1.1;BMES;4.4;xxhd'
|
25
|
+
# add_headers(
|
26
|
+
# 'User-Agent' => user_agent
|
27
|
+
# )
|
28
|
+
|
29
|
+
login
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
# Fetch all the accounts for the given user
|
34
|
+
#
|
35
|
+
# Should returns an array of Bankscrap::Account objects
|
36
|
+
def fetch_accounts
|
37
|
+
# Example if the API expects a JSON POST request
|
38
|
+
# response = post(BASE_ENDPOINT + ACCOUNTS_ENDPOINT, fields: {}.to_json)
|
39
|
+
# json = JSON.parse(response)
|
40
|
+
# json['accounts'].map { |data| build_account(data) }
|
41
|
+
end
|
42
|
+
|
43
|
+
# Fetch transactions for the given account.
|
44
|
+
#
|
45
|
+
# Account should be a Bankscrap::Account object
|
46
|
+
# Should returns an array of Bankscrap::Account objects
|
47
|
+
def fetch_transactions_for(account, start_date: Date.today - 1.month, end_date: Date.today)
|
48
|
+
# Example if the API expects a JSON POST request
|
49
|
+
# response = post(BASE_ENDPOINT + TRANSACTIONS_ENDPOINT, fields: {}.to_json)
|
50
|
+
# json = JSON.parse(response)
|
51
|
+
# json['transactions'].map { |data| build_transaction(data) }
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# First request to login
|
57
|
+
def login
|
58
|
+
# Example if the API expects a JSON POST request
|
59
|
+
# params = { user: @user, password: @password }
|
60
|
+
# post(BASE_ENDPOINT + LOGIN_ENDPOINT, fields: params.to_json)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Build an Account object from API data
|
64
|
+
def build_account(data)
|
65
|
+
Account.new(
|
66
|
+
bank: self,
|
67
|
+
id: REPLACE_ME,
|
68
|
+
name: REPLACE_ME,
|
69
|
+
available_balance: REPLACE_ME,
|
70
|
+
balance: REPLACE_ME,
|
71
|
+
currency: REPLACE_ME,
|
72
|
+
iban: REPLACE_ME,
|
73
|
+
description: REPLACE_ME
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
# Build a transaction object from API data
|
78
|
+
def build_transaction(data, account)
|
79
|
+
Transaction.new(
|
80
|
+
account: account,
|
81
|
+
id: REPLACE_ME,
|
82
|
+
amount: REPLACE_ME,
|
83
|
+
description: REPLACE_ME,
|
84
|
+
effective_date: REPLACE_ME,
|
85
|
+
currency: REPLACE_ME, # Should be a Money object
|
86
|
+
balance: REPLACE_ME # Should be a Money object
|
87
|
+
)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
data/lib/bankscrap/cli.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'active_support/core_ext/string'
|
3
|
+
Dir[File.expand_path("../../..", __FILE__) + "/generators/*.rb"].each do |generator|
|
4
|
+
require generator
|
5
|
+
end
|
6
|
+
|
3
7
|
|
4
8
|
module Bankscrap
|
5
9
|
class CLI < Thor
|
@@ -63,6 +67,10 @@ module Bankscrap
|
|
63
67
|
end
|
64
68
|
end
|
65
69
|
|
70
|
+
|
71
|
+
register(Bankscrap::AdapterGenerator, "generate_adapter", "generate_adapter MyBankName",
|
72
|
+
"generates a template for a new Bankscrap bank adapter")
|
73
|
+
|
66
74
|
private
|
67
75
|
|
68
76
|
def assign_shared_options
|
data/lib/bankscrap/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bankscrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Javier Cuevas
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-05-
|
12
|
+
date: 2016-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -140,6 +140,15 @@ extra_rdoc_files: []
|
|
140
140
|
files:
|
141
141
|
- README.md
|
142
142
|
- bin/bankscrap
|
143
|
+
- generators/adapter_generator.rb
|
144
|
+
- generators/templates/%gem_name%.gemspec.tt
|
145
|
+
- generators/templates/Gemfile.tt
|
146
|
+
- generators/templates/LICENSE.txt
|
147
|
+
- generators/templates/README.md.tt
|
148
|
+
- generators/templates/Rakefile.tt
|
149
|
+
- generators/templates/lib/%gem_name%.rb.tt
|
150
|
+
- generators/templates/lib/bankscrap/%bank_name_dasherized%/bank.rb.tt
|
151
|
+
- generators/templates/lib/bankscrap/%bank_name_dasherized%/version.rb.tt
|
143
152
|
- lib/.DS_Store
|
144
153
|
- lib/bankscrap.rb
|
145
154
|
- lib/bankscrap/account.rb
|