harvest-ruby-v2 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.rst +8 -0
- data/Gemfile +1 -0
- data/Rakefile +2 -0
- data/bin/console +1 -1
- data/lib/harvest.rb +6 -3
- data/lib/harvest/discovers.rb +3 -0
- data/lib/harvest/httpclient.rb +33 -18
- data/lib/harvest/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f341c06dfb732eeb0ab69f8a03d2d3a1d183c3afa1e200c14dba0cfe9e4bc81c
|
4
|
+
data.tar.gz: b10cb0684fb74ebb9a8e0dc87875b617a7b3c77af99ca5ed2dd75978c6fa7cf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bddbbd22c42beb25c7877adc7241b4d2feb61961c0f3ba61c5b774f34c9caf69a87239703a2e3eca0d7906a2b90e648b598492cc149c8d0752804d7f0bc58dd6
|
7
|
+
data.tar.gz: 8bdd8d98251fa443f0fbaf0b6665de237f64131aab1cc6d207c1305912f6891831bdd5eb8bf706e6d22696737209e9fccf158e8a9c3ba5625924254d5f8de086
|
data/CHANGELOG.rst
CHANGED
data/Gemfile
CHANGED
@@ -8,6 +8,7 @@ gemspec
|
|
8
8
|
gem 'activesupport', '~> 6.0'
|
9
9
|
gem 'configparser', '~> 0.1.7', group: :development
|
10
10
|
gem 'pry', '~> 0.13.1', group: :development
|
11
|
+
gem 'pry-stack_explorer', '~> 0.5.1', group: :development
|
11
12
|
gem 'rake', '~> 12.0', group: :development
|
12
13
|
gem 'redcarpet', '~> 3.5', group: :development
|
13
14
|
gem 'reek', '~> 6.0', group: :development
|
data/Rakefile
CHANGED
@@ -9,6 +9,8 @@ RSpec::Core::RakeTask.new(:spec)
|
|
9
9
|
RuboCop::RakeTask.new(:spec) do |rubocop|
|
10
10
|
rubocop.options << '--auto-correct'
|
11
11
|
rubocop.options << '--display-cop-names'
|
12
|
+
rubocop.options << '--extra-details'
|
13
|
+
rubocop.options << '--display-style-guide'
|
12
14
|
end
|
13
15
|
|
14
16
|
YARD::Rake::YardocTask.new do |t|
|
data/bin/console
CHANGED
data/lib/harvest.rb
CHANGED
@@ -39,14 +39,17 @@ module Harvest
|
|
39
39
|
@client = Harvest::HTTP::Api.new(**@config)
|
40
40
|
@factory = Harvest::ResourceFactory.new
|
41
41
|
@state = state
|
42
|
-
@
|
43
|
-
@admin_api = if @active_user.is_admin
|
42
|
+
@admin_api = if active_user.is_admin
|
44
43
|
config.admin_api
|
45
44
|
else
|
46
45
|
false
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
49
|
+
def active_user
|
50
|
+
@state[:active_user] ||= @factory.user(@client.api_call(@client.api_caller('/users/me')))
|
51
|
+
end
|
52
|
+
|
50
53
|
def allowed?(meth)
|
51
54
|
%i[
|
52
55
|
projects
|
@@ -93,7 +96,7 @@ module Harvest
|
|
93
96
|
|
94
97
|
# Find single instance of resource
|
95
98
|
def change(**kwargs)
|
96
|
-
@state[@state[:active]].map do |
|
99
|
+
@state[@state[:active]].map do |obj|
|
97
100
|
Harvest::Changers.const_get(to_class_name(@state[:active])).new.change(
|
98
101
|
@factory, @client, active_user, @state, kwargs
|
99
102
|
)
|
data/lib/harvest/discovers.rb
CHANGED
data/lib/harvest/httpclient.rb
CHANGED
@@ -71,7 +71,7 @@ module Harvest
|
|
71
71
|
|
72
72
|
# Make a api call to an endpoint.
|
73
73
|
# @api public
|
74
|
-
# @param struct [
|
74
|
+
# @param struct [ApiCall]
|
75
75
|
def api_call(struct)
|
76
76
|
JSON.parse(
|
77
77
|
send(struct.http_method.to_sym, struct).tap do
|
@@ -85,7 +85,9 @@ module Harvest
|
|
85
85
|
# @param struct [Struct::Pagination]
|
86
86
|
def pagination(struct)
|
87
87
|
struct.param[:page] = struct.page_count
|
88
|
-
page = api_call(struct.to_api_call)
|
88
|
+
page = api_call(struct.to_api_call).tap do
|
89
|
+
# require 'pry'; binding.pry
|
90
|
+
end
|
89
91
|
struct.rows.concat(page[struct.data_key])
|
90
92
|
|
91
93
|
return struct.rows if struct.page_count >= page['total_pages']
|
@@ -108,11 +110,11 @@ module Harvest
|
|
108
110
|
end
|
109
111
|
|
110
112
|
def api_caller(path, http_method: 'get', param: {}, payload: nil, headers: {})
|
111
|
-
|
113
|
+
ApiCall.new(
|
112
114
|
{
|
113
115
|
path: path,
|
114
116
|
http_method: http_method.to_sym,
|
115
|
-
|
117
|
+
params: param,
|
116
118
|
payload: payload,
|
117
119
|
headers: headers
|
118
120
|
}
|
@@ -138,17 +140,30 @@ module Harvest
|
|
138
140
|
end
|
139
141
|
end
|
140
142
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
:http_method,
|
145
|
-
|
146
|
-
:
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
143
|
+
class NoOptionProvided; end
|
144
|
+
|
145
|
+
class ApiCall
|
146
|
+
attr_accessor :path, :http_method, :payload, :headers
|
147
|
+
|
148
|
+
def initialize(path:, payload: {}, http_method: 'get', headers: {}, params: {})
|
149
|
+
@path = path
|
150
|
+
@http_method = http_method
|
151
|
+
@payload = payload
|
152
|
+
@headers = headers
|
153
|
+
param(params)
|
154
|
+
end
|
155
|
+
|
156
|
+
def param(params = NoOptionProvided)
|
157
|
+
if params == NoOptionProvided
|
158
|
+
@headers['params']
|
159
|
+
else
|
160
|
+
@headers['params'] = params
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def param=(params)
|
165
|
+
param(params)
|
166
|
+
self
|
152
167
|
end
|
153
168
|
end
|
154
169
|
|
@@ -165,11 +180,11 @@ module Harvest
|
|
165
180
|
keyword_init: true
|
166
181
|
) do
|
167
182
|
def to_api_call
|
168
|
-
|
169
|
-
{
|
183
|
+
ApiCall.new(
|
184
|
+
**{
|
170
185
|
path: path,
|
171
186
|
http_method: http_method,
|
172
|
-
|
187
|
+
params: param,
|
173
188
|
payload: payload,
|
174
189
|
headers: headers
|
175
190
|
}
|
data/lib/harvest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: harvest-ruby-v2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Davis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|