burglar 0.1.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7ae039506dedd45df72bad8cb11ace829c20845bc464cf5fbc2fc7a5a8078b7
4
- data.tar.gz: 767f78709f5d46b6ea462f6bbaf4396a87f27f6cdf14c86385390df944b4cc21
3
+ metadata.gz: c280fb2c64ad674715877d9429f1c84ddb7dfb9e9578cc0d7d58b5251eb575b2
4
+ data.tar.gz: 68fa5caf9698c083008b530a53e81908c1cf099c08abb887889549cfd5cf363d
5
5
  SHA512:
6
- metadata.gz: 9ddb0db7ce02ff35666b8ed827b31436d04ac7a63e0f988f924cb5ab274269367717b09039b5aad5a7f65b1f1d4b3fc303292b6351e9bf5cbba04b5c75b0cba7
7
- data.tar.gz: 9ebdb1f40ff322ff97007c1eba14310ed98b13262e3030beefd2bdd3546f1d6815105ac4474087d48e9625332dd67ddb50e0ad4e23eaa985d5bbd6e4d5d8c982
6
+ metadata.gz: 3f36f39c7b1b2bac802b112e02dc7c7b3300fa36e81481c7527397d69e9106d79d926514f985dc718b5d0e599dcbfb010794bbf158acdac846beac0339c44f79
7
+ data.tar.gz: a4fa85124c0430f97238c4bfa3c5e3455187816a8acbb6d9ac36fd6794538c3a8aa5d6dee85ed5860d8dc75ccab113aa160ee5aa40c6eebc4bbeb0e21700e998
data/bin/burglar CHANGED
@@ -9,6 +9,7 @@ def add_common_opts(c)
9
9
  c.option :begin, '-b DATE', '--begin DATE', 'Beginning of date range'
10
10
  c.option :end, '-e DATE', '--end DATE', 'End of date range'
11
11
  c.option :pending, '-p', '--pending', 'Include pending transactions'
12
+ c.option :shell, '-s', '--shell', 'Launch a REPL with the burglar object'
12
13
  end
13
14
 
14
15
  def date_parse_or_default(string, default)
@@ -16,6 +17,16 @@ def date_parse_or_default(string, default)
16
17
  Date.parse(string)
17
18
  end
18
19
 
20
+ def launch_shell(res)
21
+ res.transactions
22
+ require 'pry'
23
+ binding.pry # rubocop:disable Lint/Debugger
24
+ rescue LoadError
25
+ warn 'Falling back to IRB because Pry failed to load'
26
+ require 'irb'
27
+ binding.irb # rubocop:disable Lint/Debugger
28
+ end
29
+
19
30
  Mercenary.program(:burglar) do |p|
20
31
  p.version Burglar::VERSION
21
32
  p.description 'Load data from banks'
@@ -26,6 +37,11 @@ Mercenary.program(:burglar) do |p|
26
37
  p.action do |_, options|
27
38
  options[:end] = date_parse_or_default(options[:end], Date.today)
28
39
  options[:begin] = date_parse_or_default(options[:begin], options[:end] - 30)
29
- puts Burglar.new(options).transactions
40
+ res = Burglar.new(options)
41
+ if options[:shell]
42
+ launch_shell res
43
+ else
44
+ puts res.transactions
45
+ end
30
46
  end
31
47
  end
data/burglar.gemspec CHANGED
@@ -6,6 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = 'burglar'
7
7
  s.version = Burglar::VERSION
8
8
  s.date = Time.now.strftime('%Y-%m-%d')
9
+ s.required_ruby_version = '>= 2.5.0'
9
10
 
10
11
  s.summary = 'Tool for parsing data from bank websites'
11
12
  s.description = 'Tool for parsing data from bank websites'
@@ -19,14 +20,12 @@ Gem::Specification.new do |s|
19
20
  s.executables = ['burglar']
20
21
 
21
22
  s.add_dependency 'cymbal', '~> 2.0.0'
22
- s.add_dependency 'libledger', '~> 0.0.3'
23
+ s.add_dependency 'libledger', '~> 0.0.8'
23
24
  s.add_dependency 'logcabin', '~> 0.1.3'
24
- s.add_dependency 'mercenary', '~> 0.3.4'
25
+ s.add_dependency 'mercenary', '~> 0.4.0'
25
26
 
26
- s.add_development_dependency 'codecov', '~> 0.1.1'
27
- s.add_development_dependency 'fuubar', '~> 2.3.0'
28
- s.add_development_dependency 'goodcop', '~> 0.7.0'
29
- s.add_development_dependency 'rake', '~> 12.3.0'
30
- s.add_development_dependency 'rspec', '~> 3.8.0'
31
- s.add_development_dependency 'rubocop', '~> 0.67.2'
27
+ s.add_development_dependency 'codecov', '~> 0.5.1'
28
+ s.add_development_dependency 'goodcop', '~> 0.9.3'
29
+ s.add_development_dependency 'rake', '~> 13.0.3'
30
+ s.add_development_dependency 'rspec', '~> 3.10.0'
32
31
  end
data/lib/burglar/heist.rb CHANGED
@@ -13,9 +13,9 @@ module Burglar
13
13
  end
14
14
 
15
15
  def banks
16
- @banks ||= @options[:banks].map do |k, v|
17
- [k, Burglar::Bank.new(@options.merge(v))]
18
- end.to_h
16
+ @banks ||= @options[:banks].transform_values do |v|
17
+ Burglar::Bank.new(@options.merge(v))
18
+ end
19
19
  end
20
20
 
21
21
  def transactions
@@ -32,23 +32,33 @@ module LogCabin
32
32
 
33
33
  private
34
34
 
35
+ def api_configuration
36
+ @api_configuration ||= ::Plaid::Configuration.new do |c|
37
+ c.server_index = ::Plaid::Configuration::Environment['development']
38
+ c.api_key['PLAID-CLIENT-ID'] = client_id
39
+ c.api_key['PLAID-SECRET'] = secret_key
40
+ c.api_key['Plaid-Version'] = '2020-09-14'
41
+ end
42
+ end
43
+
35
44
  def api_client
36
- @api_client ||= ::Plaid::Client.new(
37
- env: 'development',
38
- client_id: client_id,
39
- secret: secret_key,
40
- public_key: public_key
41
- )
45
+ @api_client ||= ::Plaid::ApiClient.new api_configuration
46
+ end
47
+
48
+ def client
49
+ @client ||= ::Plaid::PlaidApi.new(api_client)
42
50
  end
43
51
 
44
52
  def get_transactions_page(offset)
45
- resp = api_client.transactions.get(
46
- access_token,
47
- begin_date_str,
48
- end_date_str,
49
- account_ids: [account_id],
50
- offset: offset
51
- )
53
+ resp = client.transactions_get(::Plaid::TransactionsGetRequest.new(
54
+ access_token: access_token,
55
+ start_date: begin_date_str,
56
+ end_date: end_date_str,
57
+ options: ::Plaid::TransactionsGetRequestOptions.new(
58
+ account_ids: [account_id],
59
+ offset: offset
60
+ )
61
+ ))
52
62
  [resp.transactions, resp.total_transactions]
53
63
  end
54
64
 
@@ -76,16 +86,16 @@ module LogCabin
76
86
  end
77
87
 
78
88
  def accounts
79
- @accounts ||= api_client.accounts.get(access_token)['accounts']
89
+ @accounts || client.accounts_get(::Plaid::AccountsGetRequest.new(access_token: access_token)).accounts
80
90
  end
81
91
 
82
92
  def account
83
93
  @account ||= accounts.first if accounts.size == 1
84
- @account ||= accounts.find { |x| x['name'] == account_clean_name }
94
+ @account ||= accounts.find { |x| x.name == account_clean_name }
85
95
  end
86
96
 
87
97
  def account_id
88
- @account_id ||= account['account_id']
98
+ @account_id ||= account.account_id
89
99
  end
90
100
 
91
101
  def account_clean_name
@@ -102,10 +112,6 @@ module LogCabin
102
112
  @secret_key ||= creds(PLAID_DOMAIN, 'secret_key')
103
113
  end
104
114
 
105
- def public_key
106
- @public_key ||= creds(PLAID_DOMAIN, 'public_key')
107
- end
108
-
109
115
  def access_token
110
116
  @access_token ||= creds(PLAID_DOMAIN, account_name)
111
117
  end
@@ -1,7 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
1
  ##
4
2
  # Set the version (needed for Mercenary -v)
5
3
  module Burglar
6
- VERSION = '0.1.3'.freeze
4
+ VERSION = '0.3.0'.freeze
7
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: burglar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-14 00:00:00.000000000 Z
11
+ date: 2022-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cymbal
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.3
33
+ version: 0.0.8
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.3
40
+ version: 0.0.8
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: logcabin
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,98 +58,70 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.3.4
61
+ version: 0.4.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.3.4
68
+ version: 0.4.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: codecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.1.1
75
+ version: 0.5.1
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.1.1
83
- - !ruby/object:Gem::Dependency
84
- name: fuubar
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 2.3.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 2.3.0
82
+ version: 0.5.1
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: goodcop
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: 0.7.0
89
+ version: 0.9.3
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: 0.7.0
96
+ version: 0.9.3
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: rake
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: 12.3.0
103
+ version: 13.0.3
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: 12.3.0
110
+ version: 13.0.3
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: rspec
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: 3.8.0
117
+ version: 3.10.0
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: 3.8.0
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.67.2
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.67.2
124
+ version: 3.10.0
153
125
  description: Tool for parsing data from bank websites
154
126
  email: me@lesaker.org
155
127
  executables:
@@ -183,7 +155,7 @@ homepage: https://github.com/akerl/burglar
183
155
  licenses:
184
156
  - MIT
185
157
  metadata: {}
186
- post_install_message:
158
+ post_install_message:
187
159
  rdoc_options: []
188
160
  require_paths:
189
161
  - lib
@@ -191,15 +163,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
163
  requirements:
192
164
  - - ">="
193
165
  - !ruby/object:Gem::Version
194
- version: '0'
166
+ version: 2.5.0
195
167
  required_rubygems_version: !ruby/object:Gem::Requirement
196
168
  requirements:
197
169
  - - ">="
198
170
  - !ruby/object:Gem::Version
199
171
  version: '0'
200
172
  requirements: []
201
- rubygems_version: 3.0.1
202
- signing_key:
173
+ rubygems_version: 3.2.33
174
+ signing_key:
203
175
  specification_version: 4
204
176
  summary: Tool for parsing data from bank websites
205
177
  test_files: