huginn_ynab_agent 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c1ebd6448202099af8545e72e99b4a9b165338f3ab33db2704343185cf0372da
4
+ data.tar.gz: 34047a4ad974779a30daf2062eb893330cce19b1dc734e60bdbd225af626aa09
5
+ SHA512:
6
+ metadata.gz: df3a6e55f1c02b6225c04051ffd2f9c16aacff9ef94c2727372d7f056d9274628d321354520d490b38d3263829d09fecea0ecd15cc383a8ec2f9fcc48ac4d501
7
+ data.tar.gz: fd46136b8ba1389ca615b32239dd4a281d774bf62e340dc3cc9765f5ed0b1c318a3a983dcd4c82917aeb96c4ec58db4bf182e4108f419372412ac58a065d2d06
@@ -0,0 +1,3 @@
1
+ require 'huginn_agent'
2
+
3
+ HuginnAgent.register 'huginn_ynab_agent/ynab_agent'
@@ -0,0 +1,57 @@
1
+ module Agents
2
+ class YnabAgent < Agent
3
+ include FormConfigurable
4
+
5
+ can_dry_run!
6
+ cannot_be_scheduled!
7
+
8
+ def working?
9
+ true
10
+ end
11
+
12
+ def default_options
13
+ {}
14
+ end
15
+
16
+ form_configurable :ynab_token
17
+ def validate_options
18
+ if options['ynab_token'].blank?
19
+ errors.add(:base, 'YNAB access token is required')
20
+ end
21
+ end
22
+
23
+ def default_options
24
+ {'ynab_token' => "{% credential YNAB_TOKEN %}"}
25
+ end
26
+
27
+ def receive(incoming_events)
28
+ incoming_events.each do |event|
29
+ log("Creating transaction with payee #{event.payload['payee_name']}")
30
+ payload = {
31
+ 'transaction' => {
32
+ 'account_id' => event.payload['account_id'],
33
+ 'category_id' => event.payload['category_id'],
34
+ 'payee_name' => event.payload['payee_name'],
35
+ 'date' => event.payload['date'] || Date.today.to_s,
36
+ 'amount' => (event.payload['amount'] * 1000).to_i,
37
+ 'memo' => event.payload['memo'] || '',
38
+ 'cleared' => event.payload['cleared'] || 'uncleared',
39
+ },
40
+ }
41
+
42
+ url = "https://api.youneedabudget.com/v1/budgets/#{event.payload['budget_id']}/transactions"
43
+ resp = Faraday.post(url, payload.to_json) do |req|
44
+ req.headers['Content-Type'] = 'application/json'
45
+ req.headers['Authorization'] = "Bearer #{interpolated['ynab_token']}"
46
+ end
47
+
48
+ if resp.status < 200 || resp.status >= 300
49
+ error("Received bad response from YNAB (#{resp.status}): #{resp.body}")
50
+ else
51
+ log("Success!\n Response: #{resp.body}")
52
+ create_event payload: JSON.parse(resp.body)['data']
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: huginn_ynab_agent
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Steve Gattuso
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-01-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 12.3.3
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 12.3.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: huginn_agent
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description:
56
+ email:
57
+ - steve@stevegattuso.me
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/huginn_ynab_agent.rb
63
+ - lib/huginn_ynab_agent/ynab_agent.rb
64
+ homepage: https://github.com/stevenleeg/huginn_ynab_agent
65
+ licenses: []
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubygems_version: 3.1.2
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: Huginn Agent to interact with the YNAB API
86
+ test_files: []