harvest-ruby-v2 0.2.0 → 0.3.2

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: 197576a0a9aea49a4ff0acd96668a8c6407a0f487270567998f158657ff33ab6
4
- data.tar.gz: 3a013efe25ea3ec70d4f239f59aedf1b4c1fd4de3476614b7ea72b0403a3740e
3
+ metadata.gz: d5ed655f022d6e69111845443dfe35b98532367865787c1e58300b0910d9625c
4
+ data.tar.gz: 3ed5a264fc80566e21eb2942148ed16a91adbec338315a0923b842867814c55c
5
5
  SHA512:
6
- metadata.gz: 953730ac41de134c4d11a1448cc7efdd5ed753359208c75920ad1d72a229b56cf160d28aa1520e7226725a361bc277122d1e8f1b36c1edd4ab3e49d7f5cd9f75
7
- data.tar.gz: cfac326cd27d5b372a7460ea4034d1c4d712bbedbe2e87057b68f319ca0eea2b4d33562014a62fc17698b856ee4655f35202d445031ef11f0268080b83fc0bf9
6
+ metadata.gz: 71d7d18d7f7b91e887f3fb694c2cc60636b10dd607f2a2bd4b44e75e20e74fcc6dbe55d4d52f062993692fd8bbebba91b51e099fc0eb4515fa3e49cb81949aae
7
+ data.tar.gz: 3f3af9a5c64d7a0c92b532968c9a66254048b01cde403dc33bf8bfc054f228b7a335c1aec1051ad01fb0dd68552d5ead215dd45f26e2f41da308fd9b6e38b7e7
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  .rspec_status
13
13
  Gemfile.lock
14
14
  vendor
15
+ *.gem
data/Gemfile CHANGED
@@ -5,35 +5,20 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in harvest.gemspec
6
6
  gemspec
7
7
 
8
- gem 'rake', '~> 12.0'
9
- gem 'rspec', '~> 3.0'
10
-
11
- gem 'rest-client', '~> 2.1'
12
-
13
- gem 'pry', '~> 0.13.1'
14
-
15
- gem 'configparser', '~> 0.1.7'
16
-
17
- gem 'rubocop', '~> 0.89.1'
18
-
19
8
  gem 'activesupport', '~> 6.0'
20
-
21
- gem 'reek', '~> 6.0'
22
-
23
- gem 'webmock', '~> 3.8'
24
-
25
- gem 'rubocop-rspec', '~> 1.43'
26
-
27
- gem 'rubocop-rake', '~> 0.5.1'
28
-
29
- gem 'yard', '~> 0.9.25'
30
-
31
- gem 'rubocop-performance', '~> 1.7'
32
- gem 'ruby-prof', '~> 1.4'
33
- gem 'simplecov', '~> 0.19.0'
34
-
35
- # gem 'pry-byebug', '~> 3.9'
36
-
37
- gem 'redcarpet', '~> 3.5'
38
-
39
- gem 'yard-struct', '~> 1.1'
9
+ gem 'configparser', '~> 0.1.7', group: :development
10
+ gem 'pry', '~> 0.13.1', group: :development
11
+ gem 'rake', '~> 12.0', group: :development
12
+ gem 'redcarpet', '~> 3.5', group: :development
13
+ gem 'reek', '~> 6.0', group: :development
14
+ gem 'rest-client', '~> 2.1'
15
+ gem 'rspec', '~> 3.0', group: :development
16
+ gem 'rubocop', '~> 0.89.1', group: :development
17
+ gem 'rubocop-performance', '~> 1.7', group: :development
18
+ gem 'rubocop-rake', '~> 0.5.1', group: :development
19
+ gem 'rubocop-rspec', '~> 1.43', group: :development
20
+ gem 'ruby-prof', '~> 1.4', group: :development
21
+ gem 'simplecov', '~> 0.19.0', group: :development
22
+ gem 'webmock', '~> 3.8', group: :development
23
+ gem 'yard', '~> 0.9.25', group: :development
24
+ gem 'yard-struct', '~> 1.1', group: :development
data/Makefile CHANGED
@@ -7,3 +7,8 @@ setup:
7
7
  yard:
8
8
  bundle exec rake yard
9
9
  bundle exec rake yard-server
10
+
11
+ push:
12
+ find . -maxdepth 1 -name '*.gem' -exec rm {} \;
13
+ gem build *.gemspec
14
+ gem push *.gem
@@ -28,4 +28,6 @@ Gem::Specification.new do |spec|
28
28
  # spec.bindir = 'exe'
29
29
  # spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ['lib']
31
+ spec.add_dependency 'activesupport', '~> 6.0'
32
+ spec.add_dependency 'rest-client', '~> 2.1'
31
33
  end
@@ -55,6 +55,10 @@ module Harvest
55
55
  ].include?(meth)
56
56
  end
57
57
 
58
+ def clone
59
+ Harvest::Client.new(@config, state: @state.clone)
60
+ end
61
+
58
62
  # @param meth [Symbol]
59
63
  # @return [Boolean]
60
64
  def respond_to_missing?(meth)
@@ -88,20 +92,31 @@ module Harvest
88
92
 
89
93
  # Discover resources
90
94
  def discover(**params)
91
- @state[@state[:active]] = Harvest::Discovers.const_get(
92
- to_class_name(@state[:active])
93
- ).new.discover(
94
- @admin_api, @client, @factory, active_user, @state, params
95
- )
95
+ @state[@state[:active]] = Harvest::Discovers
96
+ .const_get(to_class_name(@state[:active]))
97
+ .new
98
+ .discover(
99
+ @admin_api, @client, @factory, active_user, @state, params
100
+ )
96
101
  self
97
102
  end
98
103
 
99
104
  # Select a subset of all items depending on state
100
105
  def select(&block)
101
- @state[:filtered][@state[:active]] = @state[@state[:active]].select(&block)
106
+ @state[@state[:active]] = @state[@state[:active]].select(&block)
102
107
  self
103
108
  end
104
109
 
110
+ # Map block of filtered items
111
+ def map(&block)
112
+ @state[@state[:active]].map(&block)
113
+ end
114
+
115
+ # Return data from the active state in the base state or filtered.
116
+ def data
117
+ @state[@state[:active]]
118
+ end
119
+
105
120
  # Create an instance of object based on state
106
121
  def create(**kwargs)
107
122
  @state[@state[:active]] = Harvest::Create.const_get(
@@ -37,8 +37,8 @@ module Harvest
37
37
  possible_keys = %i[spent_date notes external_reference user_id]
38
38
  payload = kwargs.map { |k, v| [k, v] if possible_keys.include?(k) }.to_h
39
39
  payload[:user_id] ||= @active_user.id
40
- payload[:task_id] = @state[:filtered][:project_tasks][0].task.id
41
- payload[:project_id] = true_project(@state[:filtered][:projects][0]).id
40
+ payload[:task_id] = @state[:project_tasks][0].task.id
41
+ payload[:project_id] = true_project(@state[:projects][0]).id
42
42
  payload
43
43
  end
44
44
  end
@@ -51,7 +51,7 @@ module Harvest
51
51
 
52
52
  class ProjectTasks
53
53
  def discover(_admin_api, _client, _factory, _active_user, state, _params)
54
- state[:filtered][:projects][0].task_assignments
54
+ state[:projects][0].task_assignments
55
55
  end
56
56
  end
57
57
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'pry'
4
3
  require 'harvest/resources'
5
4
 
6
5
  module Harvest
@@ -214,6 +213,11 @@ module Harvest
214
213
  data.method("#{key}=").call(DateTime.strptime(data.method(key).call))
215
214
  end
216
215
  end
216
+ %i[spent_date].each do |key|
217
+ if data.members.include?(key) && !data.method(key).call.nil?
218
+ data.method("#{key}=").call(Date.strptime(data.method(key).call))
219
+ end
220
+ end
217
221
  data
218
222
  end
219
223
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harvest
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.2'
5
5
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harvest-ruby-v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.2
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-10-06 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.1'
13
41
  description: Harvest API for v2 written in Fluent API style
14
42
  email:
15
43
  - craig.davis@rackspace.com