huginn_harvest 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a4b99ab09e1697bc16712059fb070d28a219325a0d3416519fb79a5b9a1d2df8
4
+ data.tar.gz: 8ead7a012f5b2884eca33754eefdc35f3743036af6dbcd7901fca4d0d744a442
5
+ SHA512:
6
+ metadata.gz: 150d05b7e2045c75c854150bb045ef978df5d0bde56779ea459e618be88e11c4940b53f806557dd16e6d4edd8e944f1c03aeeac37f47b02e26595be836893b9d
7
+ data.tar.gz: a2a17638372a7a0baca18632016e5fc8de2f71ea5048347a5886e26efc56b3a26cdefd8cbcb14dc7834bdf7ba8594d24d40690e3980ccb86f91c4bba65e4c3d5
@@ -0,0 +1,92 @@
1
+ module Agents
2
+ class Harvest < Agent
3
+ include FormConfigurable
4
+ default_schedule '12h'
5
+ gem_dependency_check { defined?(Harvesting::Client) }
6
+ cannot_receive_events!
7
+
8
+ description <<-MD
9
+ The Harvest API agent allows you to fetch harvest api and dispatch results.
10
+
11
+ ### Authentication
12
+
13
+ * `access_token`: Harvest api token
14
+ * `account_id`: Harvest account id
15
+
16
+ ### `model`
17
+ Harvest API offers many api endpoints to queries it's models.
18
+ `model` can be one of the following:
19
+
20
+ * `clients`
21
+ * `time_entries`
22
+ * `tasks`
23
+ * `projects`
24
+
25
+ > N.B `invoices` are not yet supported.
26
+ MD
27
+
28
+ form_configurable :access_token, type: :text
29
+ form_configurable :account_id, type: :text
30
+ form_configurable :model, type: :array, values: %w(clients time_entries tasks projects)
31
+
32
+ def default_options
33
+ {
34
+ access_token: "",
35
+ account_id: "",
36
+ model: "time_entries"
37
+ }
38
+ end
39
+
40
+ def validate_options
41
+ errors.add(:base, "can not connect to Harvest API: access_token is missing.") unless options["access_token"].present?
42
+ errors.add(:base, "can not connect to Harvest API: account_id is missing.") unless options["account_id"].present?
43
+ end
44
+
45
+ def working?
46
+ # Implement me! Maybe one of these next two lines would be a good fit?
47
+ checked_without_error?
48
+ end
49
+
50
+ def check
51
+ harvest_client = Harvesting::Client.new(
52
+ access_token: interpolated["access_token"],
53
+ account_id: interpolated["account_id"]
54
+ )
55
+ metas = {account: interpolated["account_id"], model: interpolated["model"]}
56
+ case options["model"]
57
+ when "clients"
58
+ harvest_client.clients.each do |client|
59
+ create_event payload: {
60
+ metas: metas,
61
+ data: client.as_json
62
+ }
63
+ end
64
+ when "time_entries"
65
+ harvest_client.time_entries.each do |time_entry|
66
+ create_event payload: {
67
+ metas: metas,
68
+ data: time_entry.as_json
69
+ }
70
+ end
71
+ when "tasks"
72
+ harvest_client.tasks.each do |task|
73
+ create_event payload: {
74
+ metas: metas,
75
+ data: task.as_json
76
+ }
77
+ end
78
+ when "projects"
79
+ harvest_client.projects.each do |project|
80
+ create_event payload: {
81
+ metas: metas,
82
+ data: project.as_json
83
+ }
84
+ end
85
+
86
+ end
87
+
88
+
89
+ end
90
+
91
+ end
92
+ end
@@ -0,0 +1,2 @@
1
+ require 'huginn_agent'
2
+ HuginnAgent.register 'huginn_harvest/harvest'
@@ -0,0 +1,13 @@
1
+ require 'rails_helper'
2
+ require 'huginn_agent/spec_helper'
3
+
4
+ describe Agents::Harvest do
5
+ before(:each) do
6
+ @valid_options = Agents::Harvest.new.default_options
7
+ @checker = Agents::Harvest.new(:name => "Harvest", :options => @valid_options)
8
+ @checker.user = users(:bob)
9
+ @checker.save!
10
+ end
11
+
12
+ pending "add specs here"
13
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: huginn_harvest
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Hadrien Froger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-05-20 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: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
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
+ - !ruby/object:Gem::Dependency
56
+ name: harvesting
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Fetch resources from harvest.
70
+ email:
71
+ - hadrien@octree.ch
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - lib/huginn_harvest.rb
77
+ - lib/huginn_harvest/harvest.rb
78
+ - spec/harvest_spec.rb
79
+ homepage: ''
80
+ licenses: []
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubygems_version: 3.1.4
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Harvest tasks for Huginn
101
+ test_files:
102
+ - spec/harvest_spec.rb