From 5e722e8f3b28abf3a675b3ee532d3b185f144d99 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Thu, 15 Feb 2018 13:07:44 +0100 Subject: [PATCH 01/16] Use official ynab api --- .rspec | 2 + Gemfile | 14 +++-- Gemfile.lock | 44 +++++++++++--- README.md | 20 +------ config.sample.yml | 17 +----- docker-compose.dev.yml | 19 +----- docker-compose.yml | 20 +------ lib/account.rb | 17 +----- lib/dumper.rb | 29 ++++++++- lib/dumper/bbva.rb | 1 + lib/dumper/figo.rb | 85 --------------------------- lib/dumper/fints.rb | 84 ++++++++++++++++++++------- lib/dumper/n26.rb | 46 ++++++++++----- lib/helpers/selenium.rb | 37 ------------ lib/transaction_creator.rb | 71 +++++++++++++++++++++++ lib/ynab.rb | 9 --- lib/ynab/transaction.rb | 48 ++++----------- lib/ynab/user.rb | 79 +++++-------------------- run.rb | 5 +- spec/lib/transaction_creator.rb | 3 + spec/spec_helper.rb | 100 ++++++++++++++++++++++++++++++++ 21 files changed, 379 insertions(+), 371 deletions(-) create mode 100644 .rspec delete mode 100644 lib/dumper/figo.rb delete mode 100644 lib/helpers/selenium.rb create mode 100644 lib/transaction_creator.rb create mode 100644 spec/lib/transaction_creator.rb create mode 100644 spec/spec_helper.rb diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..3687797 --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--require spec_helper +--color diff --git a/Gemfile b/Gemfile index 8ca839b..fbc82fc 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,7 @@ source 'https://rubygems.org' +gem 'httparty' + # Dumper: BBVA gem 'bankscrap' gem 'bankscrap-bbva', '~> 2.0.2' @@ -8,11 +10,15 @@ gem 'bankscrap-bbva', '~> 2.0.2' gem 'twentysix' # # Dumper: FinTS -# gem 'ruby_fints', git: 'https://github.com/schurig/ruby_fints.git', branch: 'ing-diba' +gem 'ruby_fints', git: 'https://github.com/schurig/ruby_fints.git', branch: 'ing-diba' # # original https://github.com/playtestcloud/ruby_fints.git gem 'base32' -gem 'selenium-webdriver' -gem 'nokogiri', '~> 1.8.1' -# included in selenium but because of a security risk it's set to 1.8.1 +group :development do + gem 'pry' +end + +group :test do + gem 'rspec' +end diff --git a/Gemfile.lock b/Gemfile.lock index bf33d47..2543b4b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,12 @@ +GIT + remote: https://github.com/schurig/ruby_fints.git + revision: bd22a6a6ba5bcd63c0a627f655f2ed4d7669dfa1 + branch: ing-diba + specs: + ruby_fints (0.0.1) + cmxl (~> 0.2) + httparty (~> 0.10) + GEM remote: https://rubygems.org/ specs: @@ -15,13 +24,14 @@ GEM bankscrap-bbva (2.0.2) bankscrap (~> 2.0.3) base32 (0.3.2) - childprocess (0.8.0) - ffi (~> 1.0, >= 1.0.11) + cmxl (0.2.0) + rchardet19 + coderay (1.1.2) concurrent-ruby (1.0.5) deep_merge (1.2.1) + diff-lcs (1.3) domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) - ffi (1.9.18) http-cookie (1.0.3) domain_name (~> 0.5) httparty (0.15.6) @@ -37,6 +47,7 @@ GEM nokogiri (~> 1.6) ntlm-http (~> 0.1, >= 0.1.1) webrobots (>= 0.0.9, < 0.2) + method_source (0.9.0) mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) @@ -50,10 +61,23 @@ GEM nokogiri (1.8.1) mini_portile2 (~> 2.3.0) ntlm-http (0.1.1) - rubyzip (1.2.1) - selenium-webdriver (3.8.0) - childprocess (~> 0.5) - rubyzip (~> 1.0) + pry (0.11.3) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + rchardet19 (1.3.7) + rspec (3.7.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-core (3.7.1) + rspec-support (~> 3.7.0) + rspec-expectations (3.7.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.7.0) + rspec-mocks (3.7.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.7.0) + rspec-support (3.7.1) thor (0.20.0) thread_safe (0.3.6) twentysix (0.1.1) @@ -74,8 +98,10 @@ DEPENDENCIES bankscrap bankscrap-bbva (~> 2.0.2) base32 - nokogiri (~> 1.8.1) - selenium-webdriver + httparty + pry + rspec + ruby_fints! twentysix BUNDLED WITH diff --git a/README.md b/README.md index 730b7b5..59991d2 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is a ruby script that **pulls your transactions from your banks** and impor ## Supported banks -* Most German and Austrian banks _(all banks that [figo.io](https://figo.io) or that implement the FinTS standard)_ +* Most German and Austrian banks _(all banks that implement the FinTS standard)_ * BBVA Spain _(private accounts only)_ * N26 @@ -27,15 +27,13 @@ _If you're someone from the YNAB-Team: please add a public api-endpoint for an e ```yaml --- ynab: - username: # email - password: # password + access_token: # ynab access token budget_id: # budget_id - cash_account_name: # optional + cash_account_id: # optional accounts: - dumper: :n26 iban: # iban of your n26 ynab_id: # account id in YNAB - ynab_name: # account name in YNAB username: # email password: # password ``` @@ -84,18 +82,6 @@ The FinTS / HBCI standard is mainly implemented by German banks. The field `payee` will be `N/A` because we currently don't get the payee name. -### Figo `:figo` - -You need to get a [figo.io](https://figo.io) account first. - -#### Options - -* `force_download` _(default: false)_ - -> Since there is a high chance that you use the `:figo` dumper more than once, all transactions from figo will be downloaded once and be cached thoughout the run. -> -> _If you want to turn off this behavior add the option `force_download: true`._ - # Technical details on how it works On [app.youneedabudget.com](https://app.youneedabudget.com) you can upload a `.csv` file with your transactions. The structure looks like this: diff --git a/config.sample.yml b/config.sample.yml index 9f12a61..e66c5b2 100644 --- a/config.sample.yml +++ b/config.sample.yml @@ -1,34 +1,21 @@ --- ynab: - username: # YNAB username - password: # YNAB password + access_token: # Your YNAB access token budget_id: # the first hash in the url when you open your budget - cash_account_name: 'Cash' # if set that it creates transactions + cash_account_id: # if set that it creates transactions # to your cash account if withdrawal is detected accounts: - dumper: :fints iban: # iban of your account ynab_id: # last hash in the url when you click on the account in YNAB - ynab_name: # the exact name how you named that account in YNAB username: # online banking username / alias password: # online banking PIN (NOT! the pin of your bank card!) fints_blz: # Your bank's code / Bankleitzahl fints_endpoint: # can be found here: https://www.hbci-zka.de/institute/institut_auswahl.htm # Use the PIN/TAN URL from the link above - - dumper: :figo - iban: # iban of your account - ynab_id: # last hash in the url when you click on the account in YNAB - ynab_name: # the exact name how you named that account in YNAB - username: # figo username - password: # figo password - force_download: # default: false - # // if you have multiple figo entries it - # only fetches all transactions once. - # To turn this off set this to true. - dumper: :n26 iban: # n26 iban ynab_id: # last hash in the url when you click on the account in YNAB - ynab_name: # the exact name how you named that account in YNAB username: # n26 username password: # n26 password set_category: false # default: false, sets the N26 category name as category diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 28163c3..792b6d5 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,25 +1,8 @@ version: "2" services: - selenium-chrome: - image: selenium/standalone-chrome - shm_size: 2g - ports: - - "4444:4444" - volumes: - - /dev/shm:/dev/shm # something for shared memory so chrome has enough - - ./.cache:/home/seluser/Downloads # for figo - - ./export:/usr/app/export - ruby: - container_name: ruby + importer: build: context: . volumes: - ./config.yml:/usr/app/config.yml - - ./export:/usr/app/export - - ./.cache:/root/Downloads # for figo - - ./.cache:/usr/app/.cache # for figo - environment: - - WEBDRIVER_URL=http://selenium-chrome:4444/wd/hub - depends_on: - - selenium-chrome command: "ruby /usr/app/run.rb" diff --git a/docker-compose.yml b/docker-compose.yml index 59ba7a5..28b33ca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,25 +1,7 @@ version: "2" services: - selenium-chrome: - image: selenium/standalone-chrome - shm_size: 2g - ports: - - "4444:4444" - volumes: - - /dev/shm:/dev/shm # something for shared memory so chrome has enough - - ./.cache:/home/seluser/Downloads # for figo - - ./export:/usr/app/export - ruby: - container_name: ruby + importer: image: schurig/ynab-bank-importer:latest volumes: - ./config.yml:/usr/app/config.yml - - ./export:/usr/app/export - - ./last_imported:/usr/app/last_imported - - ./.cache:/root/Downloads # for figo - - ./.cache:/usr/app/.cache # for figo - environment: - - WEBDRIVER_URL=http://selenium-chrome:4444/wd/hub - depends_on: - - selenium-chrome command: "ruby /usr/app/run.rb" diff --git a/lib/account.rb b/lib/account.rb index e97b437..a87b190 100644 --- a/lib/account.rb +++ b/lib/account.rb @@ -1,5 +1,5 @@ class Account - attr_accessor :dumper, :iban, :ynab_id, :csv_file + attr_accessor :dumper, :iban, :ynab_id, :transactions def initialize(params = {}) @dumper = Dumper.get_dumper(params.fetch('dumper')) @@ -16,21 +16,6 @@ def fetch_transactions @transactions = dumper.fetch_transactions end - def export_transactions - raise 'You need to call `fetch_transactions` first' if @transactions.nil? - return if @transactions.empty? - - FileUtils.mkdir_p YNAB::EXPORT_DIR - CSV.open(export_file, 'wb') do |csv| - csv << %w(Date Payee Category Memo Outflow Inflow) - @transactions.each { |transaction| csv << transaction.to_a } - end - end - - def export_file - "#{YNAB::EXPORT_DIR}/#{@iban}.csv" - end - private def normalize_iban(iban) diff --git a/lib/dumper.rb b/lib/dumper.rb index d3722eb..f4ecc72 100644 --- a/lib/dumper.rb +++ b/lib/dumper.rb @@ -5,12 +5,37 @@ def self.get_dumper(name) Dumper::Bbva when :n26 Dumper::N26 - when :figo - Dumper::Figo when :fints Dumper::Fints else raise "Dumper \"#{name}\" not supported." end end + + def to_ynab_transaction(transaction) + TransactionCreator.call( + account_id: account_id, + date: date(transaction), + payee_name: payee_name(transaction), + payee_iban: payee_iban(transaction), + category_name: category_name(transaction), + category_id: category_id(transaction), + memo: memo(transaction), + amount: amount(transaction), + is_withdrawal: withdrawal?(transaction), + import_id: import_id(transaction) + ) + end + + def category_name(_transaction) + nil + end + + def category_id(_transaction) + nil + end + + def normalize_iban(iban) + iban.delete(' ') + end end diff --git a/lib/dumper/bbva.rb b/lib/dumper/bbva.rb index 9c66406..bcf9928 100644 --- a/lib/dumper/bbva.rb +++ b/lib/dumper/bbva.rb @@ -4,6 +4,7 @@ class Bbva < Dumper require 'bankscrap-bbva' def initialize(params = {}) + @ynab_id = params.fetch('ynab_id') @username = params.fetch('username') @password = params.fetch('password') @iban = params.fetch('iban') diff --git a/lib/dumper/figo.rb b/lib/dumper/figo.rb deleted file mode 100644 index e866912..0000000 --- a/lib/dumper/figo.rb +++ /dev/null @@ -1,85 +0,0 @@ -class Dumper - class Figo < Dumper - require 'selenium-webdriver' - require 'base32' - require 'fileutils' - - WEBSITE = 'https://home.figo.me'.freeze - - def initialize(params = {}) - @username = params.fetch('username') - @password = params.fetch('password') - @iban = params.fetch('iban') - @force_download = params.fetch('force_download', false) - end - - def fetch_transactions - download_csv_file if !File.exist?(cache_file) || @force_download - transactions = [] - - CSV.foreach(File.path(cache_file), headers: true) do |row| - account_number = row[3] - - # last 10 characters of german ibans are the account number - if account_number == @iban.last(10) - transaction = to_ynab_format(row) - transactions.push(transaction) - end - end - - transactions - end - - private - - def to_ynab_format(transaction) - YNAB::Transaction.new( - date: Date.parse(transaction[0]), - payee: transaction[6], - payee_iban: transaction[7], - category: nil, - memo: transaction[11], - amount: transaction[13], - is_withdrawal: withdrawal?(transaction), - receiver: transaction[7] - ) - end - - def withdrawal?(transaction) - transaction[10] == 'Direct debit' && ( - transaction[6].include?('Atm') || - transaction[11].include?('Bargeld') - ) - end - - def cache_file - encoded = Base32.encode(@username) - "#{YNAB::CACHE_DIR}/#{encoded}.csv" - end - - def download_csv_file - selenium = Helpers::SeleniumHelper.new - webdriver = selenium.webdriver - - webdriver.navigate.to WEBSITE - - form_username = webdriver.find_element(id: 'id_username') - form_username.send_keys @username - form_password = webdriver.find_element(id: 'id_password') - form_password.send_keys @password - form_password.submit - - wait = Selenium::WebDriver::Wait.new(timeout: 30) - wait.until { webdriver.execute_script('return window.location.pathname') == '/transactions' } - webdriver.get "#{WEBSITE}/export/transactions?format=csv&account_id=&filter=" - - sleep 10 - - webdriver.navigate.to WEBSITE - selenium.stop - - FileUtils.mkdir_p YNAB::CACHE_DIR - FileUtils.mv("#{Helpers::SeleniumHelper::DOWNLOAD_DIR}/transactions.csv", cache_file) - end - end -end diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index e963f7f..82d7811 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -1,8 +1,10 @@ class Dumper class Fints < Dumper require 'ruby_fints' + require 'digest/md5' def initialize(params = {}) + @ynab_id = params.fetch('ynab_id') @username = params.fetch('username') @password = params.fetch('password') @iban = params.fetch('iban') @@ -17,44 +19,84 @@ def fetch_transactions account = client.get_sepa_accounts.find { |a| a[:iban] == @iban } statement = client.get_statement(account, Date.today - 35, Date.today) - statement.map { |t| to_ynab_format(t) } + statement.map { |t| to_ynab_transaction(t) } end private - def to_ynab_format(transaction) - YNAB::Transaction.new( - date: transaction.entry_date, - payee: parse_transaction_at(32, transaction), - payee_iban: parse_transaction_at(31, transaction), - category: nil, - memo: parse_transaction_at(20, transaction), - amount: amount(transaction), - is_withdrawal: withdrawal?(transaction) - ) + def account_id + @ynab_id end - def parse_transaction_at(position, transaction) - # I don't know who invented this structure but I hope - # the responsible people know how inconvenient it is. + def date(transaction) + transaction.entry_date + end - seperator = transaction.details.seperator - array = transaction.details.source.split("#{seperator}#{position}") - return nil if array.size < 2 + def payee_name(transaction) + parse_transaction_at(32, transaction) + end - array.last.split(seperator).first + def payee_iban(transaction) + parse_transaction_at(31, transaction) + end + + def memo(transaction) + parse_transaction_at(20, transaction) end def amount(transaction) - return "-#{transaction.amount}" if transaction.funds_code == 'D' - transaction.amount.to_s + if transaction.funds_code == 'D' + amount = transaction.amount + else + amount = "-#{transaction.amount}" + end + + amount.to_i * 1000 end def withdrawal?(transaction) - memo = parse_transaction_at(20, transaction) + memo = memo(transaction) return nil unless memo memo.include?('Atm') || memo.include?('Bargeld') end + + def import_id(transaction) + data = [ + transaction_type(transaction), + transaction.entry_date, + transaction.amount, + transaction.funds_code, + transaction.reference, + payee_iban(transaction), + payee_name(transaction), + @iban + ].join + + Digest::MD5.hexdigest(data) + end + + def transaction_type(transaction) + # Changing the result of this method will + # change the hash returned by the `import_id` which + # could will result in duplicated entries. + + str = parse_transaction_at(0, transaction).encode("iso-8859-1") + .force_encoding("utf-8") + return nil unless str + str[1..-1] + end + + def parse_transaction_at(position, transaction) + # I don't know who invented this structure but I hope + # the responsible people know how inconvenient it is. + + seperator = transaction.details.seperator + array = transaction.details.source.split("#{seperator}#{position}") + return nil if array.size < 2 + + array.last.split(seperator).first + end + end end diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index 37f37c6..1d21a80 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -8,6 +8,7 @@ class N26 < Dumper ].freeze def initialize(params = {}) + @ynab_id = params.fetch('ynab_id') @username = params.fetch('username') @password = params.fetch('password') @iban = params.fetch('iban') @@ -21,34 +22,47 @@ def fetch_transactions @categories[category['id']] = category['name'] end - client.transactions(count: 100).map { |t| to_ynab_format(t) } + client.transactions(count: 100).map { |t| to_ynab_transaction(t) } end private - def to_ynab_format(transaction) - YNAB::Transaction.new( - date: to_date(transaction['visibleTS']), - payee: [transaction['merchantName'], transaction['partnerName']].join(' ').strip, - category: transaction_category(transaction), - memo: [transaction['referenceText'], transaction['merchantCity']].join(' ').strip, - amount: transaction['amount'], - is_withdrawal: WITHDRAWAL_CATEGORIES.include?(transaction['category']) - ) + def account_id + @ynab_id end - def normalize_iban(iban) - iban.delete(' ') + def date(transaction) + string_date = Time.at(transaction['visibleTS'] / 1000).strftime('%Y-%m-%d') + Date.parse(string_date) end - def to_date(string) - string_date = Time.at(string / 1000).strftime('%Y-%m-%d') - Date.parse(string_date) + def payee_name(transaction) + [transaction['merchantName'], transaction['partnerName']].join(' ').strip + end + + def payee_iban(transaction) + nil end - def transaction_category(transaction) + def category_name(transaction) return nil unless @set_category @categories[transaction['category']] end + + def memo(transaction) + [transaction['referenceText'], transaction['merchantCity']].join(' ').strip + end + + def amount(transaction) + transaction['amount'].to_i * 1000 + end + + def withdrawal?(transaction) + WITHDRAWAL_CATEGORIES.include?(transaction['category']) + end + + def import_id(transaction) + transaction['id'] + end end end diff --git a/lib/helpers/selenium.rb b/lib/helpers/selenium.rb deleted file mode 100644 index 80a8cbc..0000000 --- a/lib/helpers/selenium.rb +++ /dev/null @@ -1,37 +0,0 @@ -module Helpers - class SeleniumHelper - require 'selenium-webdriver' - DOWNLOAD_DIR = '/usr/app/.cache'.freeze - - attr_reader :webdriver - - def initialize - @webdriver ||= start_browser - end - - def stop - @webdriver.quit - end - - private - - def start_browser - # runs in docker container or on local machine? - if ENV['WEBDRIVER_URL'] - Selenium::WebDriver.for :remote, desired_capabilities: :chrome, url: ENV['WEBDRIVER_URL'] - else - prefs = { - prompt_for_download: false, - default_directory: @download_dir, - downloads_path: @download_dir, - directoy: @download_dir - } - options = Selenium::WebDriver::Chrome::Options.new - options.add_preference(:download, prefs) - options.add_argument('--disable-translate') - - Selenium::WebDriver.for :chrome, options: options - end - end - end -end diff --git a/lib/transaction_creator.rb b/lib/transaction_creator.rb new file mode 100644 index 0000000..f5cf593 --- /dev/null +++ b/lib/transaction_creator.rb @@ -0,0 +1,71 @@ +class TransactionCreator + attr_accessor :account_id, :date, :amount, :payee_name, :payee_id, + :category_name, :category_id, :memo, + :import_id, :is_withdrawal + + class < 'application/json' + } end end end diff --git a/run.rb b/run.rb index 3759fe5..ebeafc7 100644 --- a/run.rb +++ b/run.rb @@ -3,13 +3,10 @@ Dir[File.dirname(__FILE__) + '/lib/*.rb'].each { |f| require f } Dir[File.join('.', 'lib/**/*.rb')].each { |f| require f } -YNAB.cleanup - ynab_user = YNAB::User.new(Settings.all['ynab']) Settings.all['accounts'].each do |a| account = Account.new(a) account.fetch_transactions - account.export_transactions - ynab_user.import_transactions_to_account!(account) + ynab_user.import_transactions!(account.transactions) end diff --git a/spec/lib/transaction_creator.rb b/spec/lib/transaction_creator.rb new file mode 100644 index 0000000..8fb5961 --- /dev/null +++ b/spec/lib/transaction_creator.rb @@ -0,0 +1,3 @@ +RSpec.describe TransactionCreator do + +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..251aa51 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,100 @@ +# This file was generated by the `rspec --init` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause +# this file to always be loaded, without a need to explicitly require it in any +# files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need +# it. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups + +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # This allows you to limit a spec run to individual examples or groups + # you care about by tagging them with `:focus` metadata. When nothing + # is tagged with `:focus`, all examples get run. RSpec also provides + # aliases for `it`, `describe`, and `context` that include `:focus` + # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + config.filter_run_when_matching :focus + + # Allows RSpec to persist some state between runs in order to support + # the `--only-failures` and `--next-failure` CLI options. We recommend + # you configure your source control system to ignore this file. + config.example_status_persistence_file_path = "spec/examples.txt" + + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ + # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode + config.disable_monkey_patching! + + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + config.warnings = true + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = "doc" + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end +end From 058a30c2daffa73dfa0f918eba0d3ea7579c48a0 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Fri, 23 Feb 2018 22:46:22 +0100 Subject: [PATCH 02/16] Add BBVA support, use ynab gem --- Gemfile | 5 +---- Gemfile.lock | 16 ++++++++++------ lib/dumper/bbva.rb | 37 ++++++++++++++++++++++++++++--------- lib/dumper/fints.rb | 19 ++++++++++--------- lib/dumper/n26.rb | 4 ++-- lib/transaction_creator.rb | 12 ++++++++++-- lib/ynab/transaction.rb | 28 ---------------------------- lib/ynab/user.rb | 4 +--- run.rb | 16 ++++++++++------ 9 files changed, 72 insertions(+), 69 deletions(-) delete mode 100644 lib/ynab/transaction.rb diff --git a/Gemfile b/Gemfile index fbc82fc..582daaf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,7 @@ source 'https://rubygems.org' gem 'httparty' +gem 'ynab' # Dumper: BBVA gem 'bankscrap' @@ -15,10 +16,6 @@ gem 'ruby_fints', git: 'https://github.com/schurig/ruby_fints.git', branch: 'ing gem 'base32' -group :development do - gem 'pry' -end - group :test do gem 'rspec' end diff --git a/Gemfile.lock b/Gemfile.lock index 2543b4b..3688973 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,18 +26,21 @@ GEM base32 (0.3.2) cmxl (0.2.0) rchardet19 - coderay (1.1.2) concurrent-ruby (1.0.5) deep_merge (1.2.1) diff-lcs (1.3) domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) + ethon (0.11.0) + ffi (>= 1.3.0) + ffi (1.9.22) http-cookie (1.0.3) domain_name (~> 0.5) httparty (0.15.6) multi_xml (>= 0.5.2) i18n (0.9.1) concurrent-ruby (~> 1.0) + json (2.1.0) mechanize (2.7.5) domain_name (~> 0.5, >= 0.5.1) http-cookie (~> 1.0) @@ -47,7 +50,6 @@ GEM nokogiri (~> 1.6) ntlm-http (~> 0.1, >= 0.1.1) webrobots (>= 0.0.9, < 0.2) - method_source (0.9.0) mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) @@ -61,9 +63,6 @@ GEM nokogiri (1.8.1) mini_portile2 (~> 2.3.0) ntlm-http (0.1.1) - pry (0.11.3) - coderay (~> 1.1.0) - method_source (~> 0.9.0) rchardet19 (1.3.7) rspec (3.7.0) rspec-core (~> 3.7.0) @@ -83,6 +82,8 @@ GEM twentysix (0.1.1) deep_merge httparty + typhoeus (1.3.0) + ethon (>= 0.9.0) tzinfo (1.2.4) thread_safe (~> 0.1) unf (0.1.4) @@ -90,6 +91,9 @@ GEM unf_ext (0.0.7.4) unicode-display_width (1.3.0) webrobots (0.1.2) + ynab (0.2.0) + json (~> 2.1, >= 2.1.0) + typhoeus (~> 1.0, >= 1.0.1) PLATFORMS ruby @@ -99,10 +103,10 @@ DEPENDENCIES bankscrap-bbva (~> 2.0.2) base32 httparty - pry rspec ruby_fints! twentysix + ynab BUNDLED WITH 1.16.0 diff --git a/lib/dumper/bbva.rb b/lib/dumper/bbva.rb index bcf9928..c9e0dc0 100644 --- a/lib/dumper/bbva.rb +++ b/lib/dumper/bbva.rb @@ -2,6 +2,7 @@ class Dumper class Bbva < Dumper require 'bankscrap' require 'bankscrap-bbva' + require 'digest/md5' def initialize(params = {}) @ynab_id = params.fetch('ynab_id') @@ -16,19 +17,33 @@ def fetch_transactions normalize_iban(a.iban) == @iban end - account.transactions.map { |t| to_ynab_format(t) } + account.transactions.map { |t| to_ynab_transaction(t) } end private - def to_ynab_format(transaction) - YNAB::Transaction.new( - date: transaction.effective_date, - payee: 'N/A', - is_withdrawal: withdrawal?(transaction), - memo: transaction.description, - amount: transaction.amount - ) + def account_id + @ynab_id + end + + def date(transaction) + transaction.effective_date + end + + def payee_name(_transaction) + 'N/A' + end + + def payee_iban(_transaction) + nil + end + + def memo(transaction) + transaction.description + end + + def amount(transaction) + transaction.amount.fractional * 10 end def withdrawal?(transaction) @@ -38,5 +53,9 @@ def withdrawal?(transaction) def normalize_iban(iban) iban.delete(' ') end + + def import_id(transaction) + Digest::MD5.hexdigest(transaction.id) + end end end diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index 82d7811..5f0c73f 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -33,7 +33,7 @@ def date(transaction) end def payee_name(transaction) - parse_transaction_at(32, transaction) + parse_transaction_at(32, transaction).strip end def payee_iban(transaction) @@ -41,17 +41,18 @@ def payee_iban(transaction) end def memo(transaction) - parse_transaction_at(20, transaction) + parse_transaction_at(20, transaction).strip end def amount(transaction) - if transaction.funds_code == 'D' - amount = transaction.amount - else - amount = "-#{transaction.amount}" - end - - amount.to_i * 1000 + amount = + if transaction.funds_code == 'D' + transaction.amount + else + "-#{transaction.amount}" + end + + (amount.to_f * 1000).to_i end def withdrawal?(transaction) diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index 1d21a80..fada1f8 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -41,7 +41,7 @@ def payee_name(transaction) end def payee_iban(transaction) - nil + transaction['partnerIban'] end def category_name(transaction) @@ -54,7 +54,7 @@ def memo(transaction) end def amount(transaction) - transaction['amount'].to_i * 1000 + (transaction['amount'].to_f * 1000).to_i end def withdrawal?(transaction) diff --git a/lib/transaction_creator.rb b/lib/transaction_creator.rb index f5cf593..5214a94 100644 --- a/lib/transaction_creator.rb +++ b/lib/transaction_creator.rb @@ -4,8 +4,10 @@ class TransactionCreator :import_id, :is_withdrawal class < Date: Sat, 24 Feb 2018 00:30:02 +0100 Subject: [PATCH 03/16] Detect BBVA cash withdrawal (closes #1) --- lib/dumper/bbva.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dumper/bbva.rb b/lib/dumper/bbva.rb index c9e0dc0..6658e7f 100644 --- a/lib/dumper/bbva.rb +++ b/lib/dumper/bbva.rb @@ -47,7 +47,7 @@ def amount(transaction) end def withdrawal?(transaction) - transaction.description == 'Cajero BBVA' + transaction.description.downcase.include?('cajero') end def normalize_iban(iban) From 8e59e5e11f16ca9ac8a89e6a43bf0af81ff27954 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sat, 24 Feb 2018 02:42:19 +0100 Subject: [PATCH 04/16] Add specs --- .travis.yml | 7 + Gemfile | 2 + Gemfile.lock | 14 + lib/dumper.rb | 2 +- lib/settings.rb | 6 +- spec/config.test.yml | 26 ++ spec/dumper/n26_spec.rb | 148 ++++++++++ spec/fixtures/vcr_cassettes/dumper/n26.yml | 298 +++++++++++++++++++++ spec/lib/transaction_creator.rb | 3 - spec/spec_helper.rb | 11 + 10 files changed, 512 insertions(+), 5 deletions(-) create mode 100644 .travis.yml create mode 100644 spec/config.test.yml create mode 100644 spec/dumper/n26_spec.rb create mode 100644 spec/fixtures/vcr_cassettes/dumper/n26.yml delete mode 100644 spec/lib/transaction_creator.rb diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..33cc9d6 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: ruby +rvm: +- 2.4.2 +env: + - ENV=test +script: + - bundle exec rspec spec diff --git a/Gemfile b/Gemfile index 582daaf..03ad9f3 100644 --- a/Gemfile +++ b/Gemfile @@ -18,4 +18,6 @@ gem 'base32' group :test do gem 'rspec' + gem 'vcr' + gem 'webmock' end diff --git a/Gemfile.lock b/Gemfile.lock index 3688973..14b573e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,6 +15,8 @@ GEM i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) bankscrap (2.0.6) activesupport mechanize @@ -27,6 +29,8 @@ GEM cmxl (0.2.0) rchardet19 concurrent-ruby (1.0.5) + crack (0.4.3) + safe_yaml (~> 1.0.0) deep_merge (1.2.1) diff-lcs (1.3) domain_name (0.5.20170404) @@ -34,6 +38,7 @@ GEM ethon (0.11.0) ffi (>= 1.3.0) ffi (1.9.22) + hashdiff (0.3.7) http-cookie (1.0.3) domain_name (~> 0.5) httparty (0.15.6) @@ -63,6 +68,7 @@ GEM nokogiri (1.8.1) mini_portile2 (~> 2.3.0) ntlm-http (0.1.1) + public_suffix (3.0.2) rchardet19 (1.3.7) rspec (3.7.0) rspec-core (~> 3.7.0) @@ -77,6 +83,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.7.0) rspec-support (3.7.1) + safe_yaml (1.0.4) thor (0.20.0) thread_safe (0.3.6) twentysix (0.1.1) @@ -90,6 +97,11 @@ GEM unf_ext unf_ext (0.0.7.4) unicode-display_width (1.3.0) + vcr (4.0.0) + webmock (3.3.0) + addressable (>= 2.3.6) + crack (>= 0.3.2) + hashdiff webrobots (0.1.2) ynab (0.2.0) json (~> 2.1, >= 2.1.0) @@ -106,6 +118,8 @@ DEPENDENCIES rspec ruby_fints! twentysix + vcr + webmock ynab BUNDLED WITH diff --git a/lib/dumper.rb b/lib/dumper.rb index f4ecc72..047f056 100644 --- a/lib/dumper.rb +++ b/lib/dumper.rb @@ -13,7 +13,7 @@ def self.get_dumper(name) end def to_ynab_transaction(transaction) - TransactionCreator.call( + ::TransactionCreator.call( account_id: account_id, date: date(transaction), payee_name: payee_name(transaction), diff --git a/lib/settings.rb b/lib/settings.rb index 703e769..dd9a975 100644 --- a/lib/settings.rb +++ b/lib/settings.rb @@ -1,5 +1,9 @@ class Settings def self.all - YAML.load_file(File.join('.', 'config.yml')) + if ENV['ENV'] == 'test' + YAML.load_file(File.join('.', 'spec/config.test.yml')) + else + YAML.load_file(File.join('.', 'config.yml')) + end end end diff --git a/spec/config.test.yml b/spec/config.test.yml new file mode 100644 index 0000000..a4be45e --- /dev/null +++ b/spec/config.test.yml @@ -0,0 +1,26 @@ +--- +ynab: + access_token: 123456789 + budget_id: 'b01bcd86-1905-11e8-ad03-2b62fa19f158' + cash_account_id: 'b4fb2fd6-1905-11e8-98a1-b3e93d6cc9e2' +accounts: + - dumper: :fints + iban: 'DE89370400440532013000' + ynab_id: 'ebec22d4-1905-11e8-8a4c-7b32b5a7e49f' + ynab_name: 'Eingang' + username: 'username' + password: 'password' + fints_endpoint: 'https://fints.ing-diba.de/fints/' + fints_blz: '50010517' + - dumper: :bbva + iban: 'ES7789370400440532013000' + ynab_id: 'ebec22d4-1905-11e8-8a4c-7b32b5a7e49f' + ynab_name: 'Eingang' + username: 'username' + password: 'password' + - dumper: :n26 + iban: 'DE89370400440532013077' + ynab_id: 'fc77e57a-1905-11e8-8af6-23ae8eb613f6' + ynab_name: 'Ausgaben' + username: 'username' + password: 'password' diff --git a/spec/dumper/n26_spec.rb b/spec/dumper/n26_spec.rb new file mode 100644 index 0000000..8329ced --- /dev/null +++ b/spec/dumper/n26_spec.rb @@ -0,0 +1,148 @@ +vcr_options = { cassette_name: 'dumper/n26', + record: :none, + match_requests_on: [:method, :host, :path] } + +RSpec.describe Dumper::N26, vcr: vcr_options do + subject(:object) { Dumper::N26.new(params) } + + let(:params) do + { + 'ynab_id' => '123466', + 'username' => 'username', + 'password' => 'password', + 'iban' => 'DE89370400440532013000' + } + end + + let(:transactions) do + client = TwentySix::Core.authenticate('username', 'password') + client.transactions + end + + describe '#fetch_transactions' do + subject(:method) { object.fetch_transactions } + + it 'sets the transactions' do + expect(method).to be_truthy + end + + it 'has the correct transaction amount' do + expect(method.size).to eq(4) + end + end + + describe '#category_name' do + let(:method) { object.send(:category_name, transactions[2]) } + + before do + categories = ['micro-v2-food-groceries' => 'Food'] + allow(object).to receive(:@categories).and_return(categories) + end + + context 'when set_category is set to true' do + let(:params) do + { + 'ynab_id' => '123466', + 'username' => 'username', + 'password' => 'password', + 'iban' => 'DE89370400440532013000', + 'set_category' => true + } + end + + it 'returns the N26 category name' do + expect(method).to eq('Food & Groceries') + end + end + + context 'when set_category is set to false' do + it 'returns nil' do + expect(method).to eq(nil) + end + end + end + + describe '#memo' do + let(:method) { object.send(:memo, transaction) } + + context 'when reference text and city are present' do + let(:transaction) { transactions.last } + + it 'merges reference text and city name' do + expect(method).to eq('Bargeldabhebung BARCELONA') + end + end + + context 'when only city name is present' do + let(:transaction) { transactions[2] } + + it 'returns the city name' do + expect(method).to eq('BARCELONA') + end + end + + context 'when only reference text is present' do + let(:transaction) { transactions[1] } + + it 'returns the reference text' do + expect(method).to eq('Test fuer eine Api') + end + end + end + + describe '#amount' do + let(:method) { object.send(:amount, transaction) } + + context 'when amount is below 1 euro' do + let(:transaction) { transactions.first } + + it 'converts it correctly to an integer' do + expect(method).to eq(-10) + end + end + + context 'when amount is below 10 euros' do + let(:transaction) { transactions[2] } + + it 'converts it correctly to an integer' do + expect(method).to eq(5440) + end + end + + context 'when amount is greater than 100 euros' do + let(:transaction) { transactions[3] } + + it 'converts it correctly to an integer' do + expect(method).to eq(-500_000) + end + end + end + + describe '#withdrawal?' do + let(:method) { object.send(:withdrawal?, transaction) } + + context 'when transaction is withdrawal' do + let(:transaction) { transactions.last } + + it 'returns true' do + expect(method).to be_truthy + end + end + + context 'when transaction is not a withdrawal' do + let(:transaction) { transactions.first } + + it 'returns true' do + expect(method).to be_falsy + end + end + end + + describe '#import_id' do + let(:method) { object.send(:import_id, transactions.first) } + + it 'sets it correctly' do + expect(method).to eq('bf0396f2-13e7-46e3-ae6b-55555555') + end + end +end diff --git a/spec/fixtures/vcr_cassettes/dumper/n26.yml b/spec/fixtures/vcr_cassettes/dumper/n26.yml new file mode 100644 index 0000000..4824067 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/dumper/n26.yml @@ -0,0 +1,298 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.tech26.de/oauth/token + body: + encoding: UTF-8 + string: username=myusername&password=mypassword&grant_type=password + headers: + Authorization: + - Basic xyz + User-Agent: + - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 + Safari/537.36 + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + - no-store + Content-Type: + - application/json;charset=UTF-8 + Date: + - Sat, 24 Feb 2018 00:29:14 GMT + Content-Length: + - '177' + body: + encoding: UTF-8 + string: '{"access_token":"1234567890","token_type":"bearer","refresh_token":"123456789","expires_in":1274,"scope":"read + write trust"}' + http_version: + recorded_at: Sat, 24 Feb 2018 00:29:14 GMT +- request: + method: get + uri: https://api.tech26.de/api/smrt/categories + body: + encoding: US-ASCII + string: '' + headers: + Authorization: + - Bearer 123446578 + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/json;charset=UTF-8 + Date: + - Sat, 24 Feb 2018 00:29:14 GMT + Transfer-Encoding: + - chunked + body: + encoding: UTF-8 + string: |- + [ { + "id" : "micro-v2-household-utilities", + "base64Image" : "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", + "name" : "Household & Utilities", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-household-utilities.jpeg" + }, { + "id" : "micro-v2-travel-holidays", + "base64Image" : "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", + "name" : "Travel & Holidays", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-travel-holidays.jpeg" + }, { + "id" : "micro-v2-tax-fines", + "base64Image" : "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABRZJREFUeNrsnT1SGzEYQCVCkTJH2AwHiOnSxTTUUKaKuYF9ApMTxDkBTpkKaho7J8AXYMbpks5HiGSUhPGs/MOupE+r92Y0wNhYWHorffokvEoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQDM0TeDn/Pz8jfkyNmVoytKUq/v7+zktg1hNpOqZLzem9DYempjy2Qi2opUQ61Cp7Aj1ZctTFm70WtBaiLXv1GdHqYs9f8WOXNe0HGJtk6rvpKrqBDLlk+exuRu9lrTif45ogrVUdtSZ1YhjZTl1o9Kpi682sUI+uOkTGLHWQlVulOrXPDw1ZbQZpLuR7daUNzW/c+dGrxVilSvVhZNqU5CVE2r6wlhs5eS6Q6zypLIrvmHT1Z55nYFbPdaNXkWnJXRhQvlyU2sRjASjlqfTpSo0qaoLkso3urQyde3IfRWXltAFCLUtHmo1VbBjRCwqqao7LlXPreCqmKOIS1+MPYG9rXeCWPlK5ZuabOdeho57diRc5+5vWCFWXlPfrSeYjppncn+LlXtQWlpCd0yqvvInL0eppqAtObPossfiqENS2bhmVtN5NjA/TRnXuFHprZNoEyvdg7soGLEECVW5UapuJTZVNdsyAmK/sWf0elEuDbHiTTE7t2UEXAy+pGon0hI6U6G2BcXZdMyWtETQdAhi1XdG69sygt/PXGV61utVZp0wVPW5ITv1fTQd8DW3Dnh8fPx1cnLy3Xz72pT3Gw/b9zkwj/82z8tqatSZCBVtW0ZAusSXVM0qLaEzb+zObe525ayXFt7IvuA2yraM0BXvOpZUws96acFXrYhtGcHtsHQX1wKxml+poxJOBngWLb6kqshwQAtrQN+RYdFXp4C0xMK1zxKx9m+0qRK2LSM47hRz1ksLaKiB8h8ZFrstI+BC9B1gnCsBZ710wsbpxLZM4vYbe0KH5GkJLfCK68wOf6S27Cv/GbRkYcRRgoawV9iDqt+WuUSqw3C5PN9ZLzsbJDnrpSMKtWtb5pIAPVi8Gn0m0JHe8Lbhmo8CaretKyXgrJeO8EZ9y+O/I9UPdAiC72OXlIqQaNaBpfIlPCE9QafG0MF7j/4TS9C+CS3WN/pPLEFDkBgxVs8TtEM6ViSfAQAAgiLtPNZA+TPHwZfRpdef06rwUMYtBPpDl32mfsT6R5X4dUqvvzWOJS+J1dPe1j6ESGmkrt8yP0CkSlLnSRZrYWKFsz1jE/vxRf2O1a8OqP9a+fdjmQqhOyAWIBYgFiAWAGIBYgFiASAWIBYgFgBiAWIBYgEgFiAWIBYAYgFiAWIBIBYgFiAWAGIBYgFiATRC8r/YV+5fx/d6bgfrVwfU/wGxDuhYlfbzCFLXr5Swz2NgKgTE2mDawmssG9yEvPT6W0PiPaHtnSyafNbUtMktbFuof9LkZlOp6wcAKI9Ud1jt0/RJWMSaJnUCqey99Ab0cRqxTDmLIVeKVSFSpaOnIt2RjTwWBCF15t2mBbj1XFjsdk+/OLG4H3TwmPY6hVhMhYBYgFiAWACIBZkQJfPubvBYuR+fH15bKtINodlMN0xN+ame7m42DZWFP44k1Y3n4UplfEoyUwbPvn9nylWuU2FFX4olWN8QY0EQUmTe7Y2wFzR9MmZdFWsh4Ux2qZiYN0o9TIWAWIBYgFgAiAWZkGJVOIu1MgFGLEAsABliTUyZ09TiWKqnXRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoyh8BBgDPJwSCtIkIKwAAAABJRU5ErkJggg==", + "name" : "Tax & Fines", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-tax-fines.jpeg" + }, { + "id" : "micro-v2-media-electronics", + "base64Image" : "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", + "name" : "Media & Electronics", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-media-electronics.jpeg" + }, { + "id" : "micro-v2-subscriptions-donations", + "base64Image" : "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", + "name" : "Subscriptions & Donations", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-subscriptions-donations.jpeg" + }, { + "id" : "micro-v2-transport-car", + "base64Image" : "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", + "name" : "Transport & Car", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-transport-car.jpeg" + }, { + "id" : "micro-v2-leisure-entertainment", + "base64Image" : "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", + "name" : "Leisure & Entertainment", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-leisure-entertainment.jpeg" + }, { + "id" : "micro-v2-education", + "base64Image" : "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAADidJREFUeAHtnWtsFNcZhmd27bW5mQSckIJtcEDNRSRqCBgIqKlaxWtAgVyKmqiJRFo1qtofVaRKrVql4k9bqVLUn5VQf5AQKZFoJcgNm7RKldoxdhqihBCUdIkdYyBcQgPG+Lo7fb69OMuyvs+u1+Yd6Whmzpxz5pxn3vnOZfacdRxtIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACM42AO9MKNJHyPP3008WnT5+uGBwcrCL+Us/zqjzHW4pb7HpuzA24pzg+GXACnVzvjMViJ8vKyjr37t17cSL3ux7iXDfC2rFjR+mZM2duRTQreLArhvaOt8J13SrOg+N94MTrcjznM+K14do5b0u69qKiovZXXnmla7xpzpTwM0pYTz755Jxz584t5+EMCceO4+eOV8E+r+VFZOexdO2u47bZnrvHhecFvfb5pfM/x+L1kKcZueUVtB8EN23aVEZVFBcL6SX2blI8nvcNP+6RlsaXHA/iFqX5+XaI8E6TWDtWr80JsI8lhId/e2VlZceuXbsGfLtZnhMqSGGFt4cXOD2IJYbzki5leTzvJp8ZncGSREgzQhsqsQ8EIqFQKLJv376v7F7bt2+fdfny5Wqqy2W4arzMLSNe/Bi/Gy2cnxviipFuJ2nGLR15a+e4LRAItAWDwfbS0tKTWLyon/f0My3Xz8TGk9bDDz98c3d/9wqaxgmrYwL6Wjx+PigPAZwi7bhobB90gxEeXGTOnDkRHs7l8eQ7W9i4FQ3Gqr2oVx3wAtUxJ7aMcNW8FAkBOs7cbPEm6TdAGTpIox3X5rlUudbGi1Htel57fX39F5x7k7zHhKPnVFgALyFnq6NO9DazPLQ10sUzb8K5zogIwBheJ3AR2jKRlAUqDhRHZs+efXyq2zIPPvhg+cDAQFxkPPRqqr1qrHHc4nG+lHyXZhTJj9NeeLeTkLmhzgXW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", + "name" : "Education", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-education.jpeg" + }, { + "id" : "micro-v2-cash26", + "base64Image" : "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAADeNJREFUeAHtnX1wFOUdx5/dS0LIKzLyEkEQO760amtroTClIor3lkBJHewMo0NtK/0DwVZpO2qnpSNOx6JjFV8KWBuknSrIAAGSO9TWWodQcCiDtVJsharVBqo074Hkdvt9jtvN3uWS20v22DX33cnNPq+/3f083zxv++yuENxIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARGMgHlk3BxgUDgZpznYl3on8G+YLBzVhV1QyQS+dlAaQLBwPO6rk834gt8Bfc3NDT82vCn2wfCgZv0mL4mXdxAYYqivBONROcNFG+E+4P+l4Uuphl+RShHotFo2PCn24PHc0IRY3RF311ZVvnkli1bYunSuRk2aCG5eWLGsYPB4GOari03/Jn2mtDOy5CmCvFmQcZisYoM6YWiKeUQtZknU/pE/Bk76SCkyUm2FdGWMZ8iJuGfYzYEGWhta12watWqAH5axnznMIF6Do+V9aGqq6uvzEZUNg/wd5vpPhHJILB5TfublnjtZD0trJ5YzzVOA6uaWCVrv1edtuuqPV1kbHLP9fl5Wljop0x0GkhdXV13ZUVlNZqgvU7bds2eLi5y7dgDHNjTwkI1rwxw3sMKRme3XVXVEIR7YFiGvJM5J5yGc3meFtZwLixT3sbGxlaMCAM+n+9kprSMz55AXgkrFApdXxMMmkP53bt3nyotLd2WPTbmyEQgb4RVHaiep+hiV0wXWzHanGuAQbPYZbi5d45AXggrHA5P1BVtB/pso4GuWOuN1c8PhWY6h5GWUgl4eoJUFeo+TB4+mHrSg/kx874zNR4z6/8JB8J3CqGvR5zs6JbFNNEIwc1F3KHU9PQPn4CnhYVbM6/gEuVv2FtDtOHpcDDs03XtKRhDq6iPEZrYg2ZxDvpabw37ADSQRCAvmkLjihsiDetURdxh+IWuj0Oz+BLEdbEZRocjBPJKWJLY7kjkSaEq1nuPF2ix2MtfC4UmO0KURuIEXGsKQ8HQe66VgY62UFFi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", + "name" : "Cash26", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-cash26.jpeg" + }, { + "id" : "micro-v2-income", + "base64Image" : "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", + "name" : "Income", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-income.jpeg" + }, { + "id" : "micro-v2-family-friends", + "base64Image" : "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", + "name" : "Family & Friends", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-family-friends.jpeg" + }, { + "id" : "micro-v2-shopping", + "base64Image" : "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bdhXN11l+GpnyXbRVb+Lf/q2/UcjNHpen+KmPIp/1LSjWP3vTqqlBzgmNyxB/BDLAs2hx3Xe/l+lXD4sNYMPhJvxKPctol3YcB92nsSdgW0rEdXX+U21dhC/nF6rN1+gsHal3WiFRQnVyI05xE1J9/L6uDl/BYT5Dk1LCshXePvlG6m4igUpLddjw5YiFzBV8TX3Bru/h6g+U+R476KirAoNZdOOweni90cTdrZp3My3p0XFTXtgPEVl7EEkP+K6RihmwtndrhEVOzd3dHR8zj3IZ3+xBPhsb8m2mY83MQpvJnI/zz8X9K7yJztP1fNl2mXbSj55mf6BQdp5lK5mrGo5v/RsyAni7kH0j5bpcuNymuiFZSnSpprG3OEyRPRmbuJUSooX2HeEUuA3vjz3ZMa36AG+A7tuxL6XmV76s68r9lmuckVABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABERABESgbAT+B0AagWbo6gglAAAAAElFTkSuQmCC", + "name" : "Shopping", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-shopping.jpeg" + }, { + "id" : "micro-v2-food-groceries", + "base64Image" : "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", + "name" : "Food & Groceries", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-food-groceries.jpeg" + }, { + "id" : "micro-v2-atm", + "base64Image" : "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", + "name" : "ATM", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-atm.jpeg" + }, { + "id" : "micro-v2-healthcare-drugstores", + "base64Image" : "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", + "name" : "Healthcare & Drug Stores", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-healthcare-drugstores.jpeg" + }, { + "id" : "micro-v2-savings-investments", + "base64Image" : "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAFyVJREFUeAHtXQt8VMW5nzm7m4ckoK28S4PlVaTV3qpVqiJSy24SQKhyvRfUS9VLb1FbrJVb8WrB+qhK9Wofvirlgs8iAnnucn3UBxAQC74R0CtQJSiIQEKSTc6Z+/+WzMnJsiHZ5Gz2hHz7+yXznjPzP9988803M98Rgn+MACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMgHcQkN5pytFbMnH8xG82yOhUqWQ/yxDbpJRLy8vL/3H0UpyaLgS6BGGFQqFZUokHlFI+DRQIy1RClPiF/46SSMl6Hc+uNxDwPGEVBAtCSlglTqKKg04ZQi5UPnkjONjncWkcTBMCRpqe26bHgpjAqKyHNFGBS1lCim1xhRGprlSWtTk/P/+8uDQOpgkBTxNWYWHhMBBVXhM28vpwJDIsIDJGSkP+HoRWZ6cp8RVhqVUFweBldhx70oaApwlLmmZfJzKG33iewsWrijeXh8M/kz5jhBSyWOcBEWZYSizODwbn6LiOujNnzgzMmzfP0zh1tI+pKO9pGaugoGCM1WC+rDvuC/hPLi0tfV+HtQsudTUI6r8R9us4Q4rLyyKRJToc706dOjW7qqrqVBDjKKw0wRWtPAEXk+9AEGsO8h+Hvx56Goa/HhyyFm4tFg1fYI6uVFLsRt5dUliblWFs8vv9bxUXFx9Cnm7/OyYIi95i/vj8yUKqZ4hrNb7VWhDiGSDEdyg8adKkAQ11DUElzHOFkKch38mItgmxsUyHHJIBlVBbQKibhJSbDKk2ZWRnb1i+fPneDlXcBQsfM4RF2EN4v1iZ1lL9HtC5d5SQ5XCxslTf1vGd6YLYoBZRr4DQnjUM47mysrLKznx+up51TBEWgQj56j6lxOwkAMWMJj7Di98hhMKf2Ali2A+OhinNOISpsQYClh8L1GwpVTa5SOsF/0BMnQNp6hRK9Ee5VrkfcTSh1Guo99lAVmBZUVHRp0m0s0tlbRWMLtUbNHZQXt6cndt3jG+c6o5svpQfS+IgwtgoDLExJydn09KlS/cfmbHtMRDu/W+sXTvClPIUPPdUyGCngthGo4ZezlqQBhoVYyDPjYnW1t0fCoZewOr2NujfXnbmOxb8xxzHopdSGApNMi210n5BUmzGG73fLzKfL4oUxevB7GxuerA48FVXV58uLGucssQFmA5BUIm5Gl7CK8JnzAeBvehmG9JZ1zFJWARo/vjQa3iZZ8fAhVKV9F/pBHrixIknmtHoxZim/xUcDQsIqHrjflhhrhY+eSsIbFVcUpcLEms+Jn9SGn+yO6bE0MLxhd+3w2nwQA2xB+qPh8pXRc4LZGYMBl3dA8r60tkUGghYfEQwRb4yKThpqDOtq/mPORlLvwBfhm+FiloHIdfkUpwpzMvhrNHpTndSKDSiQRmnQRUxBKvIb0BHNQAS/YkQ5nsiXybkJR/4iwliIB1VtVRqN8K7IIzvtIR4N2AF3s7qlbUVshrytP4Dke1ArjmXXXbZ/L2ffTYDXGwOuNjX7ZJKnRsVdZvyg/nXlUfKH7XjO+ghZe8nn3wyFJj0RlWVUMVsRR/waPd/R7Bj9x/R/hrbqiBt6QlYIf4PXhoRFBZ9cnt5JDw4UV5wiN9htfaLRGlJxFXhIS9jOnte+iS0CmVb2loWapJMkO210MPNxUs/wVkO9RVn9ci+Crqwz5zxyfinTJny1dpDh+YBhenO+oEJVB/qsUBm5l1YoR5Mps7W8h6zUyF1XEn5ogYAgOaRklSHm7lSfNgs3L5ADoizUCnrPuwWfABiDeO4zw/aUhVkqrryVeULDL9viJTiDyhjcxFMjxNrqg+9DeKb2Ja64vNMCE74Xu2hmvcxwK5xEhXlQ7gf4m+K1kVfxyDOiy/bkbCnCUuZqrAjnYMKvsJZHpp3UgEc8TOU8VFjZBVG8Vt4uSX4W4jjOPcZhvwt5LXfYLTfGQsL+VgsXcgNKNOymkKpIDbFnyeuecQDW4jA1LSvPBK5Fnug54NT6TZR7j6QvYoKQqF5LRRNGE1yWoOqXwUCoqmv5Z9SI1SDuQIrWb1r0XLeNqZ4UsaiTd+KNRV/wuj/SRv7kTDbyvLyLfmh0Bd4Sb0wPD8S0orJW/GZ+/Tv87f9+/f3bc90M2HChIGmaZ4iLDEW3OUCyBbfwYuMDVg8t0YYkvYwk/qRXgvy1yl7d39+Px0J0oUtS/0aq93+Ob1yZ7VFnqsX0YdQ1taloT0bIFI9YEn5prTkSCh35wOXEVQ/WOR3qg8e/DG8D1O4oz/PyVgzZszI2v1p5ZN4SVMcnWsAJ9mHkXxOMrILlScW36NHj114EVFHfSnzTg6FBtcpORuD4kpshM862kZ4WxqRaIMdHPOZM0ePnoYBaLVUB6bOk8Hl3tXpIKpiqDKm0rSr45CnJ7jqNpujSbEGapnDKhqdqZ2upwiLNNjr1lSsBFEV6P6AoA74pLiwJBz+m47rCi44To8lS5ZUu9HWwmDh+ZYwl4EAmgR7Kf8cjoT/vaX6sSl/LQ5JPkDpwNDyZwROalyNNiuCleftGARzGyOrscDJRX5bxmuWOYmAZ2QsgCYr1lYsbEZUQuzGVDK2qxEV4e8WUVFdpZHSlwzl+yFxbQrHfkpdFRofukMHj3Cl6KfjgG1lIqKidNDQbp0Pbg+Hv0NezxBWfih/Aeb7y+zeSLET2xxng3VvtOO6sad0VekbMeJqplRVN+JOwEUtwOI8/9+bNP+J8mE8D3TE73eDW1F9niAsLMv/DURl65EwP38ZwK4MiMoNNYADt67tJeLCYJuAl2/Li5ju/kIK3vieQZf2miMu0BCN3uQIx7wxGUsoEthjP8hhr2h/R920E1YMFEv9UXcEoNUBvMnFkYgteOo0doXAYFsN4f1nGgtMc7n1SiyhlbSOIxeLHKwApc3toa+aDbnrl848OCn2R5Tvbcf55GLb30FPWoV3WgFW7tpVgbXuqbofUhiXQln4hA6zmxgB6MceAbHYwjt0bbT900y1gZngDIjha0E8Pl0LrQ4DhrihXqlpKH+LjscW1XqsCM+0wx30NKPyDtaVdPHKTytvaUZUUixmomobjCf26XMdONJ2nRsru9tIp6bD5IbD4dfB3a5CPlstgcXRRHC4d51EhfQDGVJe7izbUX/aCAvC5EnotC1XYXnysTCMazvaoe5Snlad2Cif5ehvD7O+/gg5qiwcXoSV9SUkt+q8zTgYjk4j/dKicPgDne6GmzbCqo/WL0AHM3UnfEJdDvnhgA6z2zoC4EhlGJzLmnLKKzFgv94UPuwDrs9Cbr3Iybka89RD9LgE6fYVuviy7Q27vqVDctOeXXtOsUT9d6Flo2MnR/ywxD0eq8Af6QTM+8+WRsKv6jC5hcFgIa49XweW/Wp4VXi+M439TQhIn28+9vkIS5zmURn1dfXXw/9znQNxEidqZylL3Q2/k5FUEScrC5eV6bxuuq4K71i+XowtAuzxOVYarbe2Abv6o5xbNXSst+rAwS9QT4wwfdI/jpSErVfVPXNg/7CIZKdY7yXuPBrGAHChOryPITga/SAG5w+dyOClb/VLMSWVK28nBTufnbQfWuBf0dWrJIkKixG50ElU9OC6urrjNFFR2FJW4uMulMg/AT50tw0DTA1gg3kaVo3zARwJ6c2ICrLs0pxePc9IJVFRW1yZCnHm51Qcz7jV7txhj745HBftCCplSr/R8raEIyt7W0YA3Gl1QTC0A6JHTL6ylLnwcO5mW377MfVdA7ns8ZZrci/FFcJqEA3XoEkBahYERBP/rxiUN+ipRx55pN69pnJNLSEAzFXB+NAyTIfXJcpDMmwgK+PnnXmP0RXCgtR4uj02lHgcuqjFiTrIcalDAPbBlgmzOWGRLKUMORsGVFIioB+tN+7IWFIO0Q+RhnB9K4ZGpK6f3cQI9O3b9w2kNNipUj41aHDeKFJJ2HGd6HGFsCBo2/Uoq+NEQAf7Mdp2NOJAd2Te60RMuuSjFi1aVIsBaOOE29616RRFbILwGpp+kRHE9fMFOIU5BavGTV5rnyfbo0TTprOQ30xnG12RsVLRATKuhnpvSEXdx2qdkBd26r5B7v2G9qfD9SzHSgcYXf2ZmArt/UAsz49PZ3+YsNKJvtvPVmKfrhJyb6ab17l0vW11mbDailQXyKcMZZ8sbWyua/cEk+0+E1ayiHk4v6EU2U7VPzVq1KhDOtDZrluEZd8IhvZ3UGd3gp/XiICUuQ4sDh3t3qEjX0q8rhAWtgzesVsn1aWJDvfb6exJGQJYFToHdbuNiLjRQFcIC+rRP9uNwe46jr7+HacdfgPh0cma7SzsSQ0COMkw0q5ZCldPhNr1ttHjCmFh22Aplrcr9TOxIjkO1gD+q2r/gW0wZPETOl+l09hNHQLYrfiWrh1+0gOm7ecKYVHroSW/BMdkn3T2BKy5LwxZPIRDe2/RiVBnGvvdRQCfh/kWBrR9+xk6rfXuPiG52lwjLDqxCBM802G4YyxGyzpnM9Dhk2HsvAQnHV/AqcZ/cqax3x0ElGnmO2rCgWQZ+zyMI65TvaCB1Pzo6jdu6d4Bohoe9wT0WSzBjZybQIz/iEvjYDsRyA+G/g6sY4MWL/UN2Do9vZ1VuVLMNY4V35qySNmyM0efNQqGy/4D8tcuRzq2scTlOMa8DiaGbNbtSGdvkgiQ4V5NVLGi0ng8ySpcz54ywqKWQo/SgHttDwcyAkNBYDdj3nde7xpgmeaydG47uI5mmiqEiaPrHI+uzRE5ix3htHhTNhUm6g1ZPMF9wudw9etcnY5pcSFksyt1mN3kEIDMeha4/1pdCnj+BXheocPpclPKseI7RbbOs4/LvhjUvEOnYVq8Asa/Zuswu21HANOfxH3Be3UJzAjRTClv1eF0up1KWNTRmJ1PWJMBCI59LLWAvv2cTiC64rOB2TXg/qOb2i4fXBEOf9wUTp+v0wmLuorV4EbYHZgBL1RdMbPQPlxZehps/WQK8691BCYGg6Ow6r5b58RArYRs5QluRW1Km0Z827Zt7w0fNoxWiGMbwcnC6CsYNnz4k0hzcLPGVHZsBGirrLa2LowI+yKvz5DTV0SKPHOEOy0cSyNUWl4+H6qIv+ow3JPwNfoVZP/BEcdeBwJkYO3ggYNPg9U3bd/A/FNpOFzkyJZ2b1oJC+xb5fbMnQH3dRsJJb5fuatyMQmmdhx7bATWrV13Lzh70/aYFG/CVtYsO4NHPJ54efgUSV98dgOW/dTgJlzkPbAyM6cpzD6yxwDR4RYHEnuzDHm6VwR2R7vSJ2M5G/HBBx9UjxwyMqKkNR3x2Y1pZw8fOvTLrR9+2Gzf0VmuO/lhP/QmHKKc7+hzLfZlJ8FU+ZuOOM940ya8xyOw5cMte4YNH1YBFjoNabF2QY4IQsDfsnXbtqaDhPEFu0EYR49uhGhwu6OrDSCqi7G6XuWI85Q3rTJWPBIA6mVojmcgPqaGgCtx7GYxRuvk+LzdKYxP/07S/YU8amF7jKwfum6FTz/DDddThEUdwt7iUwDOaTbaD1t1zxzFUL4bOHi7Dqle0A0E54r26ddvuQ571fUcYRFQIC5sU8jbNGgAMwPKwL9i6+c/dVx3cn3Nz1ZlVVZWnu31/nuSsAg0rAhvBnHdqQEEcRkgrhk63J3c7NzcNZgCm5TGlviB1/vvWcIi4EBccwGobegChPae1wFNRfvok3gQOl+165aKCcsGo50ecKqBdlHVfc0ZweqOLWfhut1p2NbpZePiQY+nORYuCJwAzPrYuKXAqJtdd4o9UALn0nZMex/jPMOOwearPnBgbHvr6oxy7e5oZzROmma8jacuNxXSFzigMV8Qra3bic8R/7a9uJGNMIgFe3R5EJqnp0NPE5alDJuwAKqJv3ZfwqQvNlw4/sJB+sWk0p05c2aAdG9kf70hWo9P4woy6o+pS92ADydd2p5no++oRrxol1XeFuA9sVdogxXngXrhLnx8aA5Fo6FbcfMk/sZPXInEQUxDA7AXuRp7kXmoZz0qew5fdCgHF3g7cYnkY3GW7GuYooJQ7QbxjAvgp2k80a/WLwPnlURK1idKPFociHUmVsYP6zzHSTHguUjEeVFFJ6Xd9axFvxgyyvq2jZBsn9HcyZMnH193qCaCegZTXRj1Z+LfmfhMyF2h8cG9EITfxDmKTRCOt4Pw9gnl22cZVg2AMcEiYzsABnTdsBvrg0Mmx3vAQH8u9u1I9usPdyjK0Ye9T6L66RcrdNib6H8WbOIvB7Gfkax5bCNgPG/WW3adNcoYh8ATdoSHPJ4mLLxwIoLGn5E0d8HKKRu3sItRhX12SdfW6H4VhDEOzxhn2c8x8SkMbX74cKRJEfQzD7t21sOxLf4H0X6CvIsNv7EI58yuwfn0axszD6ivi9K5szFklLbFCuISSktLP8Jg+D9Ex4gYBmzPh9+ThOVZGSsmD8HAiMbWEFZSpxywAvNX7T/4DKakc3QdEtMpXnYF5JWmYa8T3XLxeTy6KYNN4oKcXrl5pIujT7rk5Obi+4Lif/Vj0K4zdldWNhlT0QmtuIaQq3UWGKhO66VU3Y5Ermc51gkDTvh8965KCy8gRvwQ5Psm6kBLcRVrKx7FpDRRp4OYtvsC/vNLSko+mRqc+pVqeeACoeRZ4CijkAfnxxXV33Y86GNISuzA6gxTqNiOyXIjbne/BCLarp/pdKHkNDEt/3NdTe069CkmK4KDTceK8S1c17LPrjvLJPKjvU3qFyErE+XxQhwGsXd/uDaOFZUaEmshVoS4OjYmdsunlSY7hX7KCqLaE5DinNY+9khnyWtqanqZppkVUMqvrIC0Apb0mZgDVYaJHcuo3++vrq2trcLpgrpWmpEwmWyH1VuqAgRyfGPbLEOoSaWRSGnCAo5IusmESydliDr83qS8NxwJ04rTcz9PE1ZBMHg1ZJ8/aNRAIJWQK+Z/LS/vsZaM44OorsdKcoEuA5e+yzcOppaajj87EtPhxQpyPL7MVYZB46Pno18H8Gm9syBDvZ+oPT8KBvvXCHEzcs50lKnDdDuiJQ6ZqJ7OjPOsjEUgfG/06IcxNu0TkgC1HwjtwZ0f79hM+qB4TTY++BgEUd3jALAe4F/kJaKittEBPQwQm9OgXz3Nhoai+G0amrJhwO7uGiU/hBLrp5qoqA6E7/QqUVH7PM2xqIEENm6lPAEkmy4QUAL9pHwXaoLbIdussSxrNGSe3wP8Ew8nQvIx5DQQ1dONYc85oWDoUfTrKt0wvIxXpN83x29ZX0Yt8S8Q9n9BRKfTG90G9PmXZZHI/XHxngp6nrAILeJMFRUVP8ZL+DXIpU3acxwWnINzXU7u5SngqTGkoQf3fQkLhzadr8KU+QI48K/AqTZ4rjNxDeoShKXbDNkkEyqln2IimIuR3FvHx7uwLvgEPqXWrq2T+LpSHSZTTqrB2gDiajrFEfdQvKR1+Fj4XEyhL8YleTbYpQhLo0irt+qDB2dDzrgaBGbb2CLhHvPjLTk9cxbS8l7n97qLAdNbmmoelp4z0daYygN9gRFEsQYrxt9h2lvp9T7Et69LEpbuBClBN6zd8F3TMPuCwLbn5uZupkNxOr2rubT9FI1GB6MvfXKsnA1LI0u/6Gp94PYyAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMQEcQ+H9H6IFgfxQkmgAAAABJRU5ErkJggg==", + "name" : "Savings & Investments", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-savings-investments.jpeg" + }, { + "id" : "micro-v2-bars-restaurants", + "base64Image" : "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", + "name" : "Bars & Restaurants", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-bars-restaurants.jpeg" + }, { + "id" : "micro-v2-salary", + "base64Image" : "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", + "name" : "Salary", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-salary.jpeg" + }, { + "id" : "micro-v2-n26-referrals", + "base64Image" : "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", + "name" : "N26 Referrals", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-n26-referrals.jpeg" + }, { + "id" : "micro-v2-business", + "base64Image" : "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", + "name" : "Business expenses", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-business.jpeg" + }, { + "id" : "micro-v2-insurances-finances", + "base64Image" : "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", + "name" : "Insurances & Finances", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-insurances-finances.jpeg" + }, { + "id" : "micro-v2-miscellaneous", + "base64Image" : "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABB5JREFUeNrs3dFNG0kcwOENcgHu4EwHdBB42deQCs5UkFBBSAVwFUAqwHn1i+ngnA5cAiVkV0xOkW99Z8Bi5z/zfRJCSIm1dn7szK6dmaYBAAAAAAAAAAAAAAAAAGrxrrYn3LbtefftQ/c1C3C46+7r63K5fIz2Ok8qi2rafbsPdMin6RfgY7TX+qiyE9ZJwGOeRnyhawsLQ+Gb6OcvVxkO2as0DIbljIWwMBSOPZT0k/QvAxPf7Z//7P7s+5EP9zENyWth5e++2e8+1azJ435W/4twbCjM38zxCgtzrJAeuvnLWYbzwKs0D3RVCMJCWAgLyp68p5ug13v80ZP03tvYvnUXEXfCyt++N0H7u+2nGRxv/4tQTViRh8JZsOOdNhUp5T5W/37bOtP4Z02FSglr7SaooRBhgbAQFsIihytLYSEsYSEsYpl4CfLXtu3pM//KZrlcboTF/1m9IMbLLq4bQyGH9sEcC3MsRvF16+c/uq+5sHiV31fESZ+cHZpzLbqv81yO2VAY6+pwnqLa/tDgXRdfVqv+TYK+wNMKo/rcDH/G/yLHz9JPgka1qiyq24E51WOKamGOdRh9VCdNXYaiOst56aOjgL+5tUW1rY/pOPf1tI6CRTWvPKpFOlNlv+77RFRZXvkNnZX7K7+LKM/jKGhUd4VG1V/53Q7cTriIFFX2Ye2IahHtRX7Gc70emKR/jPhf8yfBouonrMVFFfXKL9wZK80zhqI6i7hhUalXfqHCSlHdVhzVooTnOhHVaM/zU/QrvxBhVRRVqPf8QodVUVTh3vMLG9aOqHrfmqfV+PZ5mFla2SU370u+8sv9jLXrs9nXz3iMWRNvuaCiL0hyuCqs7rNVyfeSr3J9gpTybzckZwW/3ithjaQbHh5KfbH3vBAxFIKwEBbCAmEhLIQFwuKNFL3aTNu2/eor/Zvcsxf89U3ztMfgg0yE9XtUfUz3r3yY8+5xjiv5SLShcE/TAz3GVCbC+kf68NxrF3e9GXv1YUNhnnFddt8u/TM7YyEsEBbCQlggLISFsEBYBUtboQiLg0Y17779LSwOHdXQoip/CYtDRzX6skjCihvV9X9EdTf28dmvMGZUuxZwy2atLWcsUTljVR7UNA1927uobpqnTQayWhVQWHGiGtpOL9tVAQ2FohJWhVHNdkT10GS+fqmhMN+ofu1WP7SxePabDDhjiUpYlUd1YyNMXhrVfEdUF+m/soVhjpVXVNm+ReOMVU5UYXdXdcbKI6qr5t/btYTfY0dY40YV4n0/YcXyaWCSvk5zqvC7gQlrPENRFbMbWHZhdcPDaYWRFbfFXI5nrFVlUfVXfZelrRpoKBw5qlI2F9+Ww32sjajKk8MZq3+r4kdT11qfj11UNw0AAAAAAAAAAAAAAAAAvK2fAgwAP7JjPziLjwQAAAAASUVORK5CYII=", + "name" : "Miscellaneous", + "backgroundUrl" : "https://cdn.number26.de/images/categories/micro-v2-miscellaneous.jpeg" + } ] + http_version: + recorded_at: Sat, 24 Feb 2018 00:29:14 GMT +- request: + method: get + uri: https://api.tech26.de/api/smrt/transactions?limit=4&pending=false + body: + encoding: US-ASCII + string: '' + headers: + Authorization: + - Bearer 123456789 + response: + status: + code: 200 + message: OK + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/json;charset=UTF-8 + Date: + - Sat, 24 Feb 2018 00:29:15 GMT + Content-Length: + - '2687' + body: + encoding: UTF-8 + string: |- + [ { + "id" : "bf0396f2-13e7-46e3-ae6b-55555555", + "userId" : "c9403988-18fa-11e8-b1dd-6bbb06b4475a", + "type" : "FT", + "amount" : -0.01, + "currencyCode" : "EUR", + "visibleTS" : 1519420361956, + "recurring" : false, + "partnerBic" : "NTSBDEB1XXX", + "partnerName" : "Max Musterman", + "partnerEmail" : "max@example.com", + "accountId" : "234567890-987654", + "partnerIban" : "DE89370400440532013000", + "category" : "micro-v2-subscriptions-donations", + "referenceText" : "Einkauf", + "userAccepted" : 1519420361956, + "userCertified" : 1519420367850, + "pending" : false, + "transactionNature" : "NORMAL", + "smartContactId" : "765453423567890", + "createdTS" : 1519420361956, + "smartLinkId" : "8768543256789", + "linkId" : "9876543212345678", + "confirmed" : 1519420361956 + }, { + "id" : "9b4a49a8-34d7-48d9-bcd0-55555556", + "userId" : "c9403988-18fa-11e8-b1dd-6bbb06b4475a", + "type" : "DT", + "amount" : 0.25, + "currencyCode" : "EUR", + "visibleTS" : 1519420123122, + "recurring" : false, + "partnerBic" : "NTSBDEB1XXX", + "partnerBcn" : "10011001", + "partnerAccountIsSepa" : true, + "partnerName" : "Max Mustermann", + "accountId" : "786545678990876", + "partnerIban" : "DE89370400440532013000", + "partnerAccountBan" : "7777777777", + "category" : "micro-v2-subscriptions-donations", + "referenceText" : "Test fuer eine Api", + "userAccepted" : 1519420123122, + "userCertified" : 1519420129419, + "pending" : false, + "transactionNature" : "NORMAL", + "smartContactId" : "8768574632456789", + "createdTS" : 1519420123123, + "smartLinkId" : "809762435678908768", + "linkId" : "243546576879809087", + "confirmed" : 1519420123123 + }, { + "id" : "2a0671e5-453d-4c2e-847c-55555557", + "userId" : "c9403988-18fa-11e8-b1dd-6bbb06b4475a", + "type" : "AA", + "amount" : 5.44, + "currencyCode" : "EUR", + "originalAmount" : 5.44, + "originalCurrency" : "EUR", + "exchangeRate" : 1.0, + "merchantCity" : "BARCELONA", + "visibleTS" : 1519330173000, + "mcc" : 5411, + "mccGroup" : 7, + "merchantName" : "SUP EX GRAN D", + "recurring" : false, + "accountId" : "12345678901234567890", + "category" : "micro-v2-food-groceries", + "cardId" : "0987654320987654321", + "userCertified" : 1519330174462, + "pending" : false, + "transactionNature" : "NORMAL", + "createdTS" : 1519330176156, + "merchantCountry" : 9, + "smartLinkId" : "2a0671e5-453d-4c2e-847c-7b9a20b74510", + "linkId" : "2a0671e5-453d-4c2e-847c-7b9a20b74510", + "confirmed" : 1519330176156 + }, { + "id" : "9b4a49a8-34d7-48d9-bcd0-55555558", + "userId" : "c9403988-18fa-11e8-b1dd-6bbb06b4475a", + "type" : "DT", + "amount" : -500.00, + "currencyCode" : "EUR", + "visibleTS" : 1519420123122, + "recurring" : false, + "merchantCity" : "BARCELONA", + "accountId" : "786545678990876", + "category" : "micro-v2-atm", + "referenceText" : "Bargeldabhebung", + "userAccepted" : 1519420123122, + "userCertified" : 1519420129419, + "pending" : false, + "transactionNature" : "NORMAL", + "smartContactId" : "8768574632456789", + "createdTS" : 1519420123123, + "smartLinkId" : "809762435678908768", + "linkId" : "243546576879809087", + "confirmed" : 1519420123123 + } ] + http_version: + recorded_at: Sat, 24 Feb 2018 00:29:15 GMT +recorded_with: VCR 4.0.0 diff --git a/spec/lib/transaction_creator.rb b/spec/lib/transaction_creator.rb deleted file mode 100644 index 8fb5961..0000000 --- a/spec/lib/transaction_creator.rb +++ /dev/null @@ -1,3 +0,0 @@ -RSpec.describe TransactionCreator do - -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 251aa51..773823b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,14 @@ +require 'vcr' + +Dir[File.dirname(__FILE__) + '/lib/*.rb'].each { |f| require f } +Dir[File.join('.', 'lib/**/*.rb')].each { |f| require f } + +VCR.configure do |config| + config.cassette_library_dir = 'spec/fixtures/vcr_cassettes' + config.hook_into :webmock + config.configure_rspec_metadata! +end + # This file was generated by the `rspec --init` command. Conventionally, all # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. # The generated `.rspec` file contains `--require spec_helper` which will cause From 847f0e079393d0cb4d1fde1424b1d002e534fa3c Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sun, 25 Feb 2018 00:17:15 +0100 Subject: [PATCH 05/16] Only strip existing strings --- lib/dumper/fints.rb | 4 ++-- lib/dumper/n26.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index 5f0c73f..523b255 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -33,7 +33,7 @@ def date(transaction) end def payee_name(transaction) - parse_transaction_at(32, transaction).strip + parse_transaction_at(32, transaction).try(:strip) end def payee_iban(transaction) @@ -41,7 +41,7 @@ def payee_iban(transaction) end def memo(transaction) - parse_transaction_at(20, transaction).strip + parse_transaction_at(20, transaction).try(:strip) end def amount(transaction) diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index fada1f8..ec07bf0 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -37,7 +37,7 @@ def date(transaction) end def payee_name(transaction) - [transaction['merchantName'], transaction['partnerName']].join(' ').strip + [transaction['merchantName'], transaction['partnerName']].join(' ').try(:strip) end def payee_iban(transaction) @@ -50,7 +50,7 @@ def category_name(transaction) end def memo(transaction) - [transaction['referenceText'], transaction['merchantCity']].join(' ').strip + [transaction['referenceText'], transaction['merchantCity']].join(' ').try(:strip) end def amount(transaction) From e4b075181ab3883e8efc5bad2c7bf12ccd398beb Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sun, 25 Feb 2018 00:26:31 +0100 Subject: [PATCH 06/16] Add rubocop + codeclimate --- .codeclimate.yml | 3 +++ .dockerignore | 4 ++++ Gemfile | 4 ++++ Gemfile.lock | 15 +++++++++++++++ README.md | 2 +- 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 .codeclimate.yml diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..d96d7de --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,3 @@ +plugins: + rubocop: + enabled: true diff --git a/.dockerignore b/.dockerignore index 492e8b4..443e9ac 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,3 +8,7 @@ config.sample.yml .cache .export last_imported + +.codeclimate.yml +.rspec +spec diff --git a/Gemfile b/Gemfile index 03ad9f3..5b70c25 100644 --- a/Gemfile +++ b/Gemfile @@ -16,6 +16,10 @@ gem 'ruby_fints', git: 'https://github.com/schurig/ruby_fints.git', branch: 'ing gem 'base32' +group :development do + gem 'rubocop', '~> 0.52.1', require: false +end + group :test do gem 'rspec' gem 'vcr' diff --git a/Gemfile.lock b/Gemfile.lock index 14b573e..2748686 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -17,6 +17,7 @@ GEM tzinfo (~> 1.1) addressable (2.5.2) public_suffix (>= 2.0.2, < 4.0) + ast (2.4.0) bankscrap (2.0.6) activesupport mechanize @@ -68,7 +69,12 @@ GEM nokogiri (1.8.1) mini_portile2 (~> 2.3.0) ntlm-http (0.1.1) + parallel (1.12.1) + parser (2.5.0.2) + ast (~> 2.4.0) + powerpack (0.1.1) public_suffix (3.0.2) + rainbow (3.0.0) rchardet19 (1.3.7) rspec (3.7.0) rspec-core (~> 3.7.0) @@ -83,6 +89,14 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.7.0) rspec-support (3.7.1) + rubocop (0.52.1) + parallel (~> 1.10) + parser (>= 2.4.0.2, < 3.0) + powerpack (~> 0.1) + rainbow (>= 2.2.2, < 4.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + ruby-progressbar (1.9.0) safe_yaml (1.0.4) thor (0.20.0) thread_safe (0.3.6) @@ -116,6 +130,7 @@ DEPENDENCIES base32 httparty rspec + rubocop (~> 0.52.1) ruby_fints! twentysix vcr diff --git a/README.md b/README.md index 59991d2..282b6ea 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Bank YNAB importer [![Docker Build Statu](https://img.shields.io/docker/pulls/schurig/ynab-bank-importer.svg)](https://hub.docker.com/r/schurig/ynab-bank-importer/) [![Docker Build Statu](https://img.shields.io/docker/build/schurig/ynab-bank-importer.svg)](https://hub.docker.com/r/schurig/ynab-bank-importer/builds/) +# Bank YNAB importer [![Docker Build Statu](https://img.shields.io/docker/pulls/schurig/ynab-bank-importer.svg)](https://hub.docker.com/r/schurig/ynab-bank-importer/) [![Docker Build Statu](https://img.shields.io/docker/build/schurig/ynab-bank-importer.svg)](https://hub.docker.com/r/schurig/ynab-bank-importer/builds/) [![Maintainability](https://api.codeclimate.com/v1/badges/4367cde9c1b522b4bcbe/maintainability)](https://codeclimate.com/github/schurig/ynab-bank-importer/maintainability) This is a ruby script that **pulls your transactions from your banks** and imports them into **You Need A Budget** (YNAB). From 9517d039e908ff517ec8479501dc56391b9059f6 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sun, 25 Feb 2018 01:18:00 +0100 Subject: [PATCH 07/16] Make rubocop happy --- .codeclimate.yml | 1 + .dockerignore | 2 ++ .rubocop.yml | 3 ++ .rubocop_todo.yml | 18 +++++++++++ .travis.yml | 10 +++++- Dockerfile | 7 +---- Dockerfile-rpi | 5 --- Gemfile | 6 ++-- Gemfile.lock | 35 ++++++++++----------- lib/account.rb | 2 ++ lib/dumper.rb | 4 +++ lib/dumper/bbva.rb | 2 ++ lib/dumper/fints.rb | 25 ++++++++------- lib/dumper/n26.rb | 20 +++++++++--- lib/settings.rb | 11 ++++--- lib/transaction_creator.rb | 8 +++-- lib/ynab/user.rb | 3 ++ rubocop.yml | 14 +++++++++ spec/dumper/n26_spec.rb | 62 +++++++++++++++++++------------------- 19 files changed, 150 insertions(+), 88 deletions(-) create mode 100644 .rubocop.yml create mode 100644 .rubocop_todo.yml create mode 100644 rubocop.yml diff --git a/.codeclimate.yml b/.codeclimate.yml index d96d7de..8485fd0 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -1,3 +1,4 @@ plugins: rubocop: enabled: true + channel: rubocop-0-52 diff --git a/.dockerignore b/.dockerignore index 443e9ac..2c23a39 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,5 +10,7 @@ config.sample.yml last_imported .codeclimate.yml +.rubocop.yml +.rubocop_todo.yml .rspec spec diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..4842622 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,3 @@ +inherit_from: .rubocop_todo.yml + +require: rubocop-rspec diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml new file mode 100644 index 0000000..326c654 --- /dev/null +++ b/.rubocop_todo.yml @@ -0,0 +1,18 @@ +# This configuration was generated by +# `rubocop --auto-gen-config` +# on 2018-02-25 01:20:19 +0100 using RuboCop version 0.52.1. +# The point is for the user to remove these configuration records +# one by one as the offenses are removed from the code base. +# Note that changes in the inspected code, or installation of new +# versions of RuboCop, may require this file to be generated again. + +# Offense count: 1 +# Configuration parameters: CountComments, ExcludedMethods. +Metrics/BlockLength: + Max: 111 + +# Offense count: 1 +# Cop supports --auto-correct. +Style/BlockComments: + Exclude: + - 'spec/spec_helper.rb' diff --git a/.travis.yml b/.travis.yml index 33cc9d6..055a278 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,15 @@ language: ruby +cache: bundler rvm: - 2.4.2 +- 2.5.0 env: - ENV=test +before_script: + - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + - chmod +x ./cc-test-reporter + - ./cc-test-reporter before-build script: - - bundle exec rspec spec + - bundle exec rspec +after_script: + - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT diff --git a/Dockerfile b/Dockerfile index 938d12d..29ab84e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,4 @@ -FROM ruby:2.4.1 - -MAINTAINER Martin Schurig +FROM ruby:2.5.0 # Set the locale RUN apt-get clean && apt-get update && apt-get install -y locales @@ -11,9 +9,6 @@ ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 -RUN git clone https://github.com/schurig/ruby_fints.git && cd ruby_fints && git checkout ing-diba && gem build ruby_fints.gemspec && gem install ruby_fints-0.0.1.gem -# original: https://github.com/playtestcloud/ruby_fints.git - RUN mkdir /usr/app WORKDIR /usr/app diff --git a/Dockerfile-rpi b/Dockerfile-rpi index 8968f7d..b8e3d9a 100644 --- a/Dockerfile-rpi +++ b/Dockerfile-rpi @@ -1,7 +1,5 @@ FROM knjcode/rpi-ruby -MAINTAINER Martin Schurig - RUN apt-get update && \ apt-get -y install \ gcc mono-mcs build-essential \ @@ -16,9 +14,6 @@ ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 -RUN git clone https://github.com/schurig/ruby_fints.git && cd ruby_fints && git checkout ing-diba && gem build ruby_fints.gemspec && gem install ruby_fints-0.0.1.gem -# original: https://github.com/playtestcloud/ruby_fints.git - RUN mkdir /usr/app WORKDIR /usr/app diff --git a/Gemfile b/Gemfile index 5b70c25..7f1368f 100644 --- a/Gemfile +++ b/Gemfile @@ -10,14 +10,14 @@ gem 'bankscrap-bbva', '~> 2.0.2' # Dumper: N26 gem 'twentysix' -# # Dumper: FinTS -gem 'ruby_fints', git: 'https://github.com/schurig/ruby_fints.git', branch: 'ing-diba' -# # original https://github.com/playtestcloud/ruby_fints.git +# Dumper: FinTS +gem 'ruby_fints', '0.0.3' gem 'base32' group :development do gem 'rubocop', '~> 0.52.1', require: false + gem 'rubocop-rspec' end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 2748686..4b23ae3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,16 +1,7 @@ -GIT - remote: https://github.com/schurig/ruby_fints.git - revision: bd22a6a6ba5bcd63c0a627f655f2ed4d7669dfa1 - branch: ing-diba - specs: - ruby_fints (0.0.1) - cmxl (~> 0.2) - httparty (~> 0.10) - GEM remote: https://rubygems.org/ specs: - activesupport (5.1.4) + activesupport (5.1.5) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (~> 0.7) minitest (~> 5.1) @@ -27,7 +18,7 @@ GEM bankscrap-bbva (2.0.2) bankscrap (~> 2.0.3) base32 (0.3.2) - cmxl (0.2.0) + cmxl (0.2.1) rchardet19 concurrent-ruby (1.0.5) crack (0.4.3) @@ -42,9 +33,9 @@ GEM hashdiff (0.3.7) http-cookie (1.0.3) domain_name (~> 0.5) - httparty (0.15.6) + httparty (0.16.0) multi_xml (>= 0.5.2) - i18n (0.9.1) + i18n (0.9.5) concurrent-ruby (~> 1.0) json (2.1.0) mechanize (2.7.5) @@ -60,13 +51,13 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) mini_portile2 (2.3.0) - minitest (5.10.3) + minitest (5.11.3) money (6.10.1) i18n (>= 0.6.4, < 1.0) multi_xml (0.6.0) net-http-digest_auth (1.4.1) net-http-persistent (2.9.4) - nokogiri (1.8.1) + nokogiri (1.8.2) mini_portile2 (~> 2.3.0) ntlm-http (0.1.1) parallel (1.12.1) @@ -96,7 +87,12 @@ GEM rainbow (>= 2.2.2, < 4.0) ruby-progressbar (~> 1.7) unicode-display_width (~> 1.0, >= 1.0.1) + rubocop-rspec (1.23.0) + rubocop (>= 0.52.1) ruby-progressbar (1.9.0) + ruby_fints (0.0.3) + cmxl (~> 0.2) + httparty (~> 0.10) safe_yaml (1.0.4) thor (0.20.0) thread_safe (0.3.6) @@ -105,11 +101,11 @@ GEM httparty typhoeus (1.3.0) ethon (>= 0.9.0) - tzinfo (1.2.4) + tzinfo (1.2.5) thread_safe (~> 0.1) unf (0.1.4) unf_ext - unf_ext (0.0.7.4) + unf_ext (0.0.7.5) unicode-display_width (1.3.0) vcr (4.0.0) webmock (3.3.0) @@ -131,11 +127,12 @@ DEPENDENCIES httparty rspec rubocop (~> 0.52.1) - ruby_fints! + rubocop-rspec + ruby_fints (= 0.0.3) twentysix vcr webmock ynab BUNDLED WITH - 1.16.0 + 1.16.1 diff --git a/lib/account.rb b/lib/account.rb index a87b190..6e9b850 100644 --- a/lib/account.rb +++ b/lib/account.rb @@ -1,3 +1,5 @@ +# Represents a real bank account but maps it with a YNAB account +# Uses the correct dumper to fetch the transactions. class Account attr_accessor :dumper, :iban, :ynab_id, :transactions diff --git a/lib/dumper.rb b/lib/dumper.rb index 047f056..6a7c203 100644 --- a/lib/dumper.rb +++ b/lib/dumper.rb @@ -1,3 +1,5 @@ +# Uses methods that need to be implemented by each dumper - +# this is to enforce consitency. class Dumper def self.get_dumper(name) case name @@ -12,6 +14,7 @@ def self.get_dumper(name) end end + # rubocop:disable Metrics/MethodLength def to_ynab_transaction(transaction) ::TransactionCreator.call( account_id: account_id, @@ -26,6 +29,7 @@ def to_ynab_transaction(transaction) import_id: import_id(transaction) ) end + # rubocop:enable Metrics/MethodLength def category_name(_transaction) nil diff --git a/lib/dumper/bbva.rb b/lib/dumper/bbva.rb index 6658e7f..9b28d92 100644 --- a/lib/dumper/bbva.rb +++ b/lib/dumper/bbva.rb @@ -1,4 +1,6 @@ class Dumper + # Implements logic to fetch transactions via the BBVA Spain api + # and implements methods that convert the response to meaningful data. class Bbva < Dumper require 'bankscrap' require 'bankscrap-bbva' diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index 523b255..42a571c 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -1,4 +1,6 @@ class Dumper + # Implements logic to fetch transactions via the Fints protocol + # and implements methods that convert the response to meaningful data. class Fints < Dumper require 'ruby_fints' require 'digest/md5' @@ -63,16 +65,14 @@ def withdrawal?(transaction) end def import_id(transaction) - data = [ - transaction_type(transaction), - transaction.entry_date, - transaction.amount, - transaction.funds_code, - transaction.reference, - payee_iban(transaction), - payee_name(transaction), - @iban - ].join + data = [transaction_type(transaction), + transaction.entry_date, + transaction.amount, + transaction.funds_code, + transaction.reference, + payee_iban(transaction), + payee_name(transaction), + @iban].join Digest::MD5.hexdigest(data) end @@ -82,8 +82,8 @@ def transaction_type(transaction) # change the hash returned by the `import_id` which # could will result in duplicated entries. - str = parse_transaction_at(0, transaction).encode("iso-8859-1") - .force_encoding("utf-8") + str = parse_transaction_at(0, transaction).encode('iso-8859-1') + .force_encoding('utf-8') return nil unless str str[1..-1] end @@ -98,6 +98,5 @@ def parse_transaction_at(position, transaction) array.last.split(seperator).first end - end end diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index ec07bf0..d7ed7d4 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -1,6 +1,9 @@ class Dumper + # Implements logic to fetch transactions via the N26 api + # and implements methods that convert the response to meaningful data. class N26 < Dumper require 'twentysix' + require 'time' WITHDRAWAL_CATEGORIES = [ 'micro-v2-atm', @@ -22,6 +25,9 @@ def fetch_transactions @categories[category['id']] = category['name'] end + # to = Time.now.to_i + # from = to - 86_400 * 8 + client.transactions(count: 100).map { |t| to_ynab_transaction(t) } end @@ -32,12 +38,15 @@ def account_id end def date(transaction) - string_date = Time.at(transaction['visibleTS'] / 1000).strftime('%Y-%m-%d') - Date.parse(string_date) + timestamp = Time.at(transaction['visibleTS'] / 1000) + Date.parse(timestamp.strftime('%Y-%m-%d')) end def payee_name(transaction) - [transaction['merchantName'], transaction['partnerName']].join(' ').try(:strip) + [ + transaction['merchantName'], + transaction['partnerName'] + ].join(' ').try(:strip) end def payee_iban(transaction) @@ -50,7 +59,10 @@ def category_name(transaction) end def memo(transaction) - [transaction['referenceText'], transaction['merchantCity']].join(' ').try(:strip) + [ + transaction['referenceText'], + transaction['merchantCity'] + ].join(' ').try(:strip) end def amount(transaction) diff --git a/lib/settings.rb b/lib/settings.rb index dd9a975..050dcf6 100644 --- a/lib/settings.rb +++ b/lib/settings.rb @@ -1,9 +1,12 @@ +# Reads the settings from the yaml file class Settings def self.all - if ENV['ENV'] == 'test' - YAML.load_file(File.join('.', 'spec/config.test.yml')) - else - YAML.load_file(File.join('.', 'config.yml')) + @settings ||= begin + if ENV['ENV'] == 'test' + YAML.load_file(File.join('.', 'spec/config.test.yml')) + else + YAML.load_file(File.join('.', 'config.yml')) + end end end end diff --git a/lib/transaction_creator.rb b/lib/transaction_creator.rb index 5214a94..c3f7c41 100644 --- a/lib/transaction_creator.rb +++ b/lib/transaction_creator.rb @@ -1,3 +1,5 @@ +# Calculates the correct parameters for the YNAB transaction +# and build it. class TransactionCreator attr_accessor :account_id, :date, :amount, :payee_name, :payee_id, :category_name, :category_id, :memo, @@ -6,6 +8,7 @@ class TransactionCreator class < 'Food'] - allow(object).to receive(:@categories).and_return(categories) - end - - context 'when set_category is set to true' do - let(:params) do - { - 'ynab_id' => '123466', - 'username' => 'username', - 'password' => 'password', - 'iban' => 'DE89370400440532013000', - 'set_category' => true - } - end - - it 'returns the N26 category name' do - expect(method).to eq('Food & Groceries') - end - end - - context 'when set_category is set to false' do - it 'returns nil' do - expect(method).to eq(nil) - end - end - end + # describe '#category_name' do + # let(:method) { object.send(:category_name, transactions[2]) } + + # before do + # categories = ['micro-v2-food-groceries' => 'Food'] + # allow(object).to receive(:@categories).and_return(categories) + # end + + # context 'when set_category is set to true' do + # let(:params) do + # { + # 'ynab_id' => '123466', + # 'username' => 'username', + # 'password' => 'password', + # 'iban' => 'DE89370400440532013000', + # 'set_category' => true + # } + # end + + # it 'returns the N26 category name' do + # expect(method).to eq('Food & Groceries') + # end + # end + + # context 'when set_category is set to false' do + # it 'returns nil' do + # expect(method).to eq(nil) + # end + # end + # end describe '#memo' do let(:method) { object.send(:memo, transaction) } From e64c3405f419391fb6025715c8e9fe721f69c31c Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Fri, 9 Mar 2018 18:16:19 +0100 Subject: [PATCH 08/16] Don't import future transactions (api error) --- lib/account.rb | 2 +- lib/dumper.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/account.rb b/lib/account.rb index 6e9b850..f7c3604 100644 --- a/lib/account.rb +++ b/lib/account.rb @@ -15,7 +15,7 @@ def initialize(params = {}) def fetch_transactions dumper = @dumper.new(@params) - @transactions = dumper.fetch_transactions + @transactions = dumper.fetch_transactions.compact end private diff --git a/lib/dumper.rb b/lib/dumper.rb index 6a7c203..210f363 100644 --- a/lib/dumper.rb +++ b/lib/dumper.rb @@ -16,6 +16,7 @@ def self.get_dumper(name) # rubocop:disable Metrics/MethodLength def to_ynab_transaction(transaction) + return nil if date(transaction) > Date.today ::TransactionCreator.call( account_id: account_id, date: date(transaction), From 5ec321d4ae98e951179f323269176490c3916784 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Fri, 9 Mar 2018 18:16:52 +0100 Subject: [PATCH 09/16] Fix bug where number was positive when it should be negative --- lib/dumper/fints.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index 42a571c..28946aa 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -31,7 +31,7 @@ def account_id end def date(transaction) - transaction.entry_date + transaction.date end def payee_name(transaction) @@ -49,9 +49,9 @@ def memo(transaction) def amount(transaction) amount = if transaction.funds_code == 'D' - transaction.amount - else "-#{transaction.amount}" + else + transaction.amount end (amount.to_f * 1000).to_i @@ -66,7 +66,7 @@ def withdrawal?(transaction) def import_id(transaction) data = [transaction_type(transaction), - transaction.entry_date, + transaction.date, transaction.amount, transaction.funds_code, transaction.reference, From e10f0a0dc6d2893e088368147852aa6cf447a2c6 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Fri, 9 Mar 2018 18:46:46 +0100 Subject: [PATCH 10/16] Update to ynab 0.3.0 --- Gemfile.lock | 4 ++-- lib/dumper/fints.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4b23ae3..46ce42b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -29,7 +29,7 @@ GEM unf (>= 0.0.5, < 1.0.0) ethon (0.11.0) ffi (>= 1.3.0) - ffi (1.9.22) + ffi (1.9.23) hashdiff (0.3.7) http-cookie (1.0.3) domain_name (~> 0.5) @@ -113,7 +113,7 @@ GEM crack (>= 0.3.2) hashdiff webrobots (0.1.2) - ynab (0.2.0) + ynab (0.3.0) json (~> 2.1, >= 2.1.0) typhoeus (~> 1.0, >= 1.0.1) diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index 28946aa..7def58d 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -31,7 +31,7 @@ def account_id end def date(transaction) - transaction.date + transaction.entry_date end def payee_name(transaction) From c58553eec8440af0d7f409be75a893231aa09dd3 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Mon, 2 Apr 2018 13:56:52 +0200 Subject: [PATCH 11/16] Improve import_id calculation for N26 and FinTS --- lib/dumper/fints.rb | 4 ++-- lib/dumper/n26.rb | 8 +++++++- spec/dumper/n26_spec.rb | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/dumper/fints.rb b/lib/dumper/fints.rb index 7def58d..860ae22 100644 --- a/lib/dumper/fints.rb +++ b/lib/dumper/fints.rb @@ -69,9 +69,9 @@ def import_id(transaction) transaction.date, transaction.amount, transaction.funds_code, - transaction.reference, + transaction.reference.try(:downcase), payee_iban(transaction), - payee_name(transaction), + payee_name(transaction).try(:downcase), @iban].join Digest::MD5.hexdigest(data) diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index d7ed7d4..e045120 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -4,6 +4,7 @@ class Dumper class N26 < Dumper require 'twentysix' require 'time' + require 'digest/md5' WITHDRAWAL_CATEGORIES = [ 'micro-v2-atm', @@ -74,7 +75,12 @@ def withdrawal?(transaction) end def import_id(transaction) - transaction['id'] + data = [transaction['visibleTS'], + transaction['transactionNature'], + transaction['amount'], + transaction['accountId']].join + + Digest::MD5.hexdigest(data) end end end diff --git a/spec/dumper/n26_spec.rb b/spec/dumper/n26_spec.rb index 099ae58..a77fb25 100644 --- a/spec/dumper/n26_spec.rb +++ b/spec/dumper/n26_spec.rb @@ -142,7 +142,7 @@ let(:method) { object.send(:import_id, transactions.first) } it 'sets it correctly' do - expect(method).to eq('bf0396f2-13e7-46e3-ae6b-55555555') + expect(method).to eq('46c9ccde424652bc013dca9b408dcdec') end end end From 5576c86846e5a894a10a6ab814b3779cc51894a4 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Mon, 2 Apr 2018 14:06:22 +0200 Subject: [PATCH 12/16] Cleanup rpi dockerfile --- Dockerfile-rpi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-rpi b/Dockerfile-rpi index b8e3d9a..2bb0b7e 100644 --- a/Dockerfile-rpi +++ b/Dockerfile-rpi @@ -2,7 +2,7 @@ FROM knjcode/rpi-ruby RUN apt-get update && \ apt-get -y install \ - gcc mono-mcs build-essential \ + build-essential \ locales && \ rm -rf /var/lib/apt/lists/* From 79d3c1fa81bd6de1ae0b06e03de97eb9921b638d Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sat, 21 Jul 2018 13:53:53 +0200 Subject: [PATCH 13/16] Improve README * add known problems section * Explain how the API works * Explain how to optain an personal access token --- README.md | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 282b6ea..63d6dfb 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,10 @@ This is a ruby script that **pulls your transactions from your banks** and impor YNAB only supports U.S. and Canadian Banks for now. -_If you're someone from the YNAB-Team: please add a public api-endpoint for an easier import of transactions. ❤️_ - ## Usage +You will need to obtain a personal access token. [Here is a tutorial on how to do it](https://api.youneedabudget.com/#personal-access-tokens). + **If you clone this repository you don't need to follow step 2!** 1. Install docker and docker-compose @@ -70,7 +70,7 @@ The FinTS / HBCI standard is mainly implemented by German banks. #### Note -* It currently only fetches the last 100 transactions. Please open an issue or PR if you want to change this. +* It currently only fetches the last 100 transactions. Please open an issue or PR if you want to change this. For now I didn't see the use case for it. #### Options @@ -84,23 +84,15 @@ The field `payee` will be `N/A` because we currently don't get the payee name. # Technical details on how it works -On [app.youneedabudget.com](https://app.youneedabudget.com) you can upload a `.csv` file with your transactions. The structure looks like this: +The script fetches the transaction information from your bank(s). Then it uses the official YNAB API to create the transactions for you. -```csv -Date,Payee,Category,Memo,Outflow,Inflow -2017-08-13,METRO BARCELONA,Transport & Car,Ticket for the Beach,"",-9.95 -``` +The script also includes some additional logic like detecting internal transactions by checking if the account transactions go to or come from is one of the other accounts that you set up in the config _(of course this only works if you have multiple accounts configured)_. -*So we need this information for each transaction:* +# Known Problems -* Date _(YYYY-MM-DD)_ -* Payee -* Category _(optional)_ -* Outflow _(optional *if `Inflow` also uses negative numbers*)_ -* Inflow +* Internal transactions _(transfer from one account to an other one)_ don't work yet. This is because the official YNAB API doesn't support the creation of internal transactions yet. **Workaround:** the script flags those transactions in orange, so you can quickly see them and manually edit them to be an internal transaction. -The script fetches the transaction information from your bank and puts it into the format mentioned above. -It exports the result of each individual account in a file. Then it uses selenium-webdriver Chrome to login to your YNAB account, navigates to the right account and imports it for you. +* With N26 it could import a transactions twice from time to time. This is a problem on N26's side, because they change the id of the transaction sometimes. **Workaround:** when you see a transaction showing up twice, you can discard it. It's easy to spot because the payee, date and the price are usually the same. ____________________ From 8a6545c85571cd847792cdd3e8a314246c44360e Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sat, 21 Jul 2018 14:04:55 +0200 Subject: [PATCH 14/16] Only take N26 transactions that aren't pending anymore --- lib/dumper/n26.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index e045120..7b6a183 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -29,7 +29,9 @@ def fetch_transactions # to = Time.now.to_i # from = to - 86_400 * 8 - client.transactions(count: 100).map { |t| to_ynab_transaction(t) } + client.transactions(count: 100) + .reject { |t| t['pending'] } # Only transactions that aren't pending + .map { |t| to_ynab_transaction(t) } end private From fe6969a8adfa2e85c98b6c2f878d8751362060db Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sat, 21 Jul 2018 14:34:19 +0200 Subject: [PATCH 15/16] Use official YNAB gem --- Gemfile | 2 +- Gemfile.lock | 6 +++--- lib/transaction_creator.rb | 4 +++- lib/ynab.rb | 2 -- lib/ynab/user.rb | 35 ----------------------------------- run.rb | 9 +++++++-- 6 files changed, 14 insertions(+), 44 deletions(-) delete mode 100644 lib/ynab.rb delete mode 100644 lib/ynab/user.rb diff --git a/Gemfile b/Gemfile index 7f1368f..b88fbf9 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' gem 'httparty' -gem 'ynab' +gem 'ynab', '~> 1.2.0' # Dumper: BBVA gem 'bankscrap' diff --git a/Gemfile.lock b/Gemfile.lock index 46ce42b..5967b61 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -29,7 +29,7 @@ GEM unf (>= 0.0.5, < 1.0.0) ethon (0.11.0) ffi (>= 1.3.0) - ffi (1.9.23) + ffi (1.9.25) hashdiff (0.3.7) http-cookie (1.0.3) domain_name (~> 0.5) @@ -113,7 +113,7 @@ GEM crack (>= 0.3.2) hashdiff webrobots (0.1.2) - ynab (0.3.0) + ynab (1.2.0) json (~> 2.1, >= 2.1.0) typhoeus (~> 1.0, >= 1.0.1) @@ -132,7 +132,7 @@ DEPENDENCIES twentysix vcr webmock - ynab + ynab (~> 1.2.0) BUNDLED WITH 1.16.1 diff --git a/lib/transaction_creator.rb b/lib/transaction_creator.rb index c3f7c41..def4b52 100644 --- a/lib/transaction_creator.rb +++ b/lib/transaction_creator.rb @@ -1,5 +1,7 @@ # Calculates the correct parameters for the YNAB transaction # and build it. +require 'ynab' + class TransactionCreator attr_accessor :account_id, :date, :amount, :payee_name, :payee_id, :category_name, :category_id, :memo, @@ -10,7 +12,7 @@ class < 'application/json' - } - end - end -end diff --git a/run.rb b/run.rb index f17ac2e..1c6b764 100644 --- a/run.rb +++ b/run.rb @@ -1,4 +1,5 @@ require 'yaml' +require 'ynab' Dir[File.dirname(__FILE__) + '/lib/*.rb'].each { |f| require f } Dir[File.join('.', 'lib/**/*.rb')].each { |f| require f } @@ -12,5 +13,9 @@ end.flatten! # Importing transactions -ynab_user = YNAB::User.new(Settings.all['ynab']) -p ynab_user.import_transactions!(transactions) +budget_id = Settings.all['ynab'].fetch('budget_id') +access_token = Settings.all['ynab'].fetch('access_token') + +ynab_api = YNAB::API.new(access_token) +bulk_transactions = YNAB::BulkTransactions.new(transactions: transactions) +ynab_api.transactions.bulk_create_transactions(budget_id, bulk_transactions) From b45418ebeb80fb67ffed8f0d5012b8092ac3e454 Mon Sep 17 00:00:00 2001 From: Martin Schurig Date: Sat, 21 Jul 2018 14:35:18 +0200 Subject: [PATCH 16/16] Make rubocop happy --- lib/transaction_creator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/transaction_creator.rb b/lib/transaction_creator.rb index def4b52..87f939a 100644 --- a/lib/transaction_creator.rb +++ b/lib/transaction_creator.rb @@ -1,7 +1,7 @@ -# Calculates the correct parameters for the YNAB transaction -# and build it. require 'ynab' +# Calculates the correct parameters for the YNAB transaction +# and build it. class TransactionCreator attr_accessor :account_id, :date, :amount, :payee_name, :payee_id, :category_name, :category_id, :memo,