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 +7 -0
- data/lib/huginn_harvest/harvest.rb +92 -0
- data/lib/huginn_harvest.rb +2 -0
- data/spec/harvest_spec.rb +13 -0
- metadata +102 -0
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,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
|