click_up-client 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fb07849b23a939091998f5dcccb5d6ea0ab5505411f75a850d9ce7ff8c15525
4
- data.tar.gz: de7d2bfacd07ab2c08d443594567786dc2fb71c9d2750f351eb1cca691e185ce
3
+ metadata.gz: 740dac61b9ae56c7da7fb7f40b65031014c8405f6000c818b2df31908cea38d4
4
+ data.tar.gz: 504a6e2d30bf97bd39efc9185b04c0d30f33ab89d9314322e902da075d0b0597
5
5
  SHA512:
6
- metadata.gz: 832974fd560a9f52fe74fb1ca36fb8f0bd7ee74360ef347655b24d034b0c63947bf6edfb76e7a2a4a871622cf488f6407c43f8e24fbe2206edd5950854f07728
7
- data.tar.gz: ea792464da8928ba4a7c999c7680283b4e4855b20c0a989231efbbec18784836e850b049ceeee22cdc44fc02045380e381f15e5e875f96b3135dd222ec1f0fc1
6
+ metadata.gz: cc1a745db0edb0ec54830ecca4db2b00f0c7fe4e2f86dbaf29fa1725cf53f1c5b30fc64928652d0eaec6ee1691c452acb86aeb77b28fc11351e3025f0259e6cf
7
+ data.tar.gz: 3db7285faf6d987cc4348209c1f0089988ec9ee1e87f14c66b0dc9b5f887875ab9124e721a1547d2ad6e2af82b7458cd80f586ae47dd9ba6f753fb38c052064c
data/.rubocop.yml CHANGED
@@ -1,10 +1,275 @@
1
- Style/StringLiterals:
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
6
+ # Basic
7
+ AllCops:
8
+ DisplayStyleGuide: true
9
+
10
+ DisabledByDefault: true
11
+ NewCops: enable
12
+
13
+ Exclude:
14
+ - ".git/**/*"
15
+ - "tmp/**/*"
16
+ - "vendor/**/*"
17
+
18
+ TargetRubyVersion: 3.0
19
+
20
+ # Layout
21
+ Layout:
2
22
  Enabled: true
3
- EnforcedStyle: double_quotes
4
23
 
5
- Style/StringLiteralsInInterpolation:
24
+ Layout/CaseIndentation:
25
+ EnforcedStyle: end
26
+
27
+ Layout/EndAlignment:
28
+ EnforcedStyleAlignWith: variable
29
+
30
+ Layout/MultilineMethodCallIndentation:
31
+ EnforcedStyle: indented
32
+
33
+ Layout/MultilineOperationIndentation:
34
+ EnforcedStyle: indented
35
+
36
+ # TODO: remove for gem rubocop >= v2, once it'll become default
37
+ Layout/SpaceBeforeBrackets: # (new in 1.7)
38
+ Enabled: true
39
+
40
+ # Lint
41
+ Lint:
42
+ Enabled: true
43
+
44
+ # TODO: remove for gem rubocop >= v2, once it'll become default
45
+ Lint/AmbiguousAssignment: # (new in 1.7)
46
+ Enabled: true
47
+
48
+ # TODO: remove for gem rubocop >= v2, once it'll become default
49
+ Lint/DeprecatedConstants: # (new in 1.8)
50
+ Enabled: true
51
+
52
+ # TODO: remove for gem rubocop >= v2, once it'll become default
53
+ Lint/DuplicateBranch: # (new in 1.3)
54
+ Enabled: true
55
+
56
+ # TODO: remove for gem rubocop >= v2, once it'll become default
57
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
58
+ Enabled: true
59
+
60
+ # TODO: remove for gem rubocop >= v2, once it'll become default
61
+ Lint/EmptyBlock: # (new in 1.1)
62
+ Enabled: true
63
+
64
+ # TODO: remove for gem rubocop >= v2, once it'll become default
65
+ Lint/EmptyClass: # (new in 1.3)
66
+ Enabled: true
67
+
68
+ # TODO: remove for gem rubocop >= v2, once it'll become default
69
+ Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
70
+ Enabled: true
71
+
72
+ # TODO: remove for gem rubocop >= v2, once it'll become default
73
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
74
+ Enabled: true
75
+
76
+ # TODO: remove for gem rubocop >= v2, once it'll become default
77
+ Lint/RedundantDirGlobSort: # (new in 1.8)
78
+ Enabled: true
79
+
80
+ # TODO: remove for gem rubocop >= v2, once it'll become default
81
+ Lint/ToEnumArguments: # (new in 1.1)
82
+ Enabled: true
83
+
84
+ # TODO: remove for gem rubocop >= v2, once it'll become default
85
+ Lint/UnexpectedBlockArity: # (new in 1.5)
86
+ Enabled: true
87
+
88
+ # TODO: remove for gem rubocop >= v2, once it'll become default
89
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
90
+ Enabled: true
91
+
92
+ # Metrics
93
+ Metrics:
94
+ Enabled: true
95
+
96
+ Metrics/AbcSize:
97
+ CountRepeatedAttributes: false
98
+
99
+ Metrics/BlockLength:
100
+ Exclude:
101
+ - "spec/**/*_spec.rb"
102
+ - "spec/support/factories.rb"
103
+ - "test/factories.rb"
104
+ - "spec/factories.rb"
105
+ - "test/factories/*.rb"
106
+ - "spec/factories/*.rb"
107
+ - "*.gemspec"
108
+
109
+ Metrics/ClassLength:
110
+ Max: 500
111
+
112
+
113
+ Metrics/ModuleLength:
114
+ Max: 500
115
+
116
+ Metrics/MethodLength:
117
+ Max: 50
118
+
119
+ # Performance
120
+ Performance:
121
+ Enabled: true
122
+
123
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
124
+ Performance/AncestorsInclude: # (new in 1.7)
125
+ Enabled: true
126
+
127
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
128
+ Performance/BigDecimalWithNumericArgument: # (new in 1.7)
129
+ Enabled: true
130
+
131
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
132
+ Performance/BlockGivenWithExplicitBlock: # (new in 1.9)
133
+ Enabled: true
134
+
135
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
136
+ Performance/CollectionLiteralInLoop: # (new in 1.8)
137
+ Enabled: true
138
+
139
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
140
+ Performance/ConstantRegexp: # (new in 1.9)
141
+ Enabled: true
142
+
143
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
144
+ Performance/MethodObjectAsBlock: # (new in 1.9)
145
+ Enabled: true
146
+
147
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
148
+ Performance/RedundantSortBlock: # (new in 1.7)
149
+ Enabled: true
150
+
151
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
152
+ Performance/RedundantStringChars: # (new in 1.7)
153
+ Enabled: true
154
+
155
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
156
+ Performance/ReverseFirst: # (new in 1.7)
157
+ Enabled: true
158
+
159
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
160
+ Performance/SortReverse: # (new in 1.7)
161
+ Enabled: true
162
+
163
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
164
+ Performance/Squeeze: # (new in 1.7)
165
+ Enabled: true
166
+
167
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
168
+ Performance/StringInclude: # (new in 1.7)
169
+ Enabled: true
170
+
171
+ # TODO: remove for gem rubocop-performance >= v2, once it'll become default
172
+ Performance/Sum: # (new in 1.8)
173
+ Enabled: true
174
+
175
+ # Rake
176
+
177
+ Rake:
178
+ Enabled: true
179
+
180
+ # Rspec
181
+ RSpec/AnyInstance:
182
+ Enabled: true
183
+
184
+ RSpec/ContextWording:
185
+ Enabled: true
186
+
187
+ RSpec/ExampleLength:
188
+ Enabled: false
189
+
190
+ RSpec/MessageSpies:
191
+ Enabled: true
192
+
193
+ RSpec/MultipleExpectations:
194
+ Max: 6
195
+
196
+ RSpec/NamedSubject:
197
+ IgnoreSharedExamples: true
198
+
199
+ # Style
200
+ Style:
6
201
  Enabled: true
202
+
203
+ # TODO: remove for gem rubocop >= v2, once it'll become default
204
+ Style/ArgumentsForwarding: # (new in 1.1)
205
+ Enabled: true
206
+
207
+ # The problem with e.g. class Foo::Bar is when Foo is not defined. Rails will try to auto-load what
208
+ # it thinks is the right file, which (pre-Rails 6.0) sometimes leads to it loading the wrong file,
209
+ # and Bar being defined in the wrong namespace. This way we can be more elastic and remove not needed nesting.
210
+ Style/ClassAndModuleChildren:
211
+ Enabled: false
212
+
213
+ # TODO: remove for gem rubocop >= v2, once it'll become default
214
+ Style/CollectionCompact: # (new in 1.2)
215
+ Enabled: true
216
+
217
+ # TODO: remove for gem rubocop >= v2, once it'll become default
218
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
219
+ Enabled: true
220
+
221
+ Style/Documentation:
222
+ Enabled: false
223
+
224
+ Style/DoubleNegation:
225
+ Enabled: false
226
+
227
+ Style/EmptyMethod:
228
+ EnforcedStyle: expanded
229
+
230
+ # TODO: remove for gem rubocop >= v2, once it'll become default
231
+ Style/EndlessMethod: # (new in 1.8)
232
+ Enabled: true
233
+
234
+ # TODO: remove for gem rubocop >= v2, once it'll become default
235
+ Style/HashExcept: # (new in 1.7)
236
+ Enabled: true
237
+
238
+ Style/HashSyntax:
239
+ EnforcedStyle: ruby19_no_mixed_keys
240
+
241
+ Style/ModuleFunction:
242
+ Enabled: false
243
+
244
+ # TODO: remove for gem rubocop >= v2, once it'll become default
245
+ Style/NegatedIfElseCondition: # (new in 1.2)
246
+ Enabled: true
247
+
248
+ # TODO: remove for gem rubocop >= v2, once it'll become default
249
+ Style/NilLambda: # (new in 1.3)
250
+ Enabled: true
251
+
252
+ # TODO: remove for gem rubocop >= v2, once it'll become default
253
+ Style/RedundantArgument: # (new in 1.4)
254
+ Enabled: true
255
+
256
+ # https://www.viget.com/articles/just-use-double-quoted-ruby-strings/
257
+ Style/StringLiterals:
7
258
  EnforcedStyle: double_quotes
259
+ ConsistentQuotesInMultiline: true
260
+
261
+ # TODO: remove for gem rubocop >= v2, once it'll become default
262
+ Style/SwapValues: # (new in 1.1)
263
+ Enabled: true
264
+
265
+ Style/SymbolArray:
266
+ Enabled: false
267
+
268
+ Style/TrailingCommaInArrayLiteral:
269
+ Enabled: false
270
+
271
+ Style/TrailingCommaInHashLiteral:
272
+ Enabled: false
8
273
 
9
- Layout/LineLength:
10
- Max: 120
274
+ Style/WordArray:
275
+ Enabled: false
data/Gemfile CHANGED
@@ -7,6 +7,9 @@ gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
9
 
10
- gem "rspec", "~> 3.0"
10
+ gem "rubocop", "~> 1.9"
11
+ gem "rubocop-rspec", "~> 2"
12
+ gem "rubocop-performance", "~> 1"
13
+ gem "rubocop-rake", "~> 0.5"
11
14
 
12
- gem "rubocop", "~> 0.80"
15
+ gem "pry", "~> 0.13.1"
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  ## ClickUp::Client
2
2
 
3
- Unofficial ClickUp API Client for Ruby. Development in progress.
3
+ Unofficial ClickUp API Client for Ruby.
4
+
5
+ Supports ClickUp API 2.0 - https://clickup.com/api
6
+
7
+ Development in progress - contributions are welcome!
4
8
 
5
9
  ## Installation
6
10
 
@@ -20,8 +24,25 @@ Or install it yourself as:
20
24
 
21
25
  ## Usage
22
26
 
23
- TODO: Write usage instructions here
27
+ ### Tasks
28
+
29
+ ```ruby
30
+ require "click_up/client"
31
+
32
+ client = ClickUp::Client.new(api_token: YOUR_API_TOKEN)
33
+ tasks_client = client.tasks(list_id: YOUR_LIST_ID)
24
34
 
35
+ tasks_client.all # => fetches all unarchived tasks
36
+ tasks_client.all(archived: true) # => fetches all archived
37
+
38
+ tasks_client.find("abcd")
39
+
40
+ tasks_client.create({name: "New Task"})
41
+
42
+ tasks_client.update(task_id: "abcd", attributes: {name: "Updated Task"})
43
+
44
+ tasks_client.delete("abcd")
45
+ ```
25
46
  ## Development
26
47
 
27
48
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/bin/console CHANGED
@@ -2,14 +2,17 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "bundler/setup"
5
+ require "dotenv/load"
5
6
  require "click_up/client"
6
7
 
8
+ API_TOKEN = ENV.fetch("CLICK_UP_API_TOKEN")
9
+ WORKSPACE_ID = ENV.fetch("CLICK_UP_WORKSPACE_ID")
10
+ SPACE_ID = ENV.fetch("CLICK_UP_SPACE_ID")
11
+ DEFAULT_LIST_ID = ENV.fetch("CLICK_UP_DEFAULT_LIST_ID")
12
+
7
13
  # You can add fixtures and/or initialization code here to make experimenting
8
14
  # with your gem easier. You can also use a different console, if you like.
9
15
 
10
16
  # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require "irb"
15
- IRB.start(__FILE__)
17
+ require "pry"
18
+ Pry.start(__FILE__)
@@ -25,7 +25,14 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
 
27
27
  spec.add_dependency "faraday", "~> 1.3"
28
+ spec.add_dependency "oj", "~> 3.0"
29
+ spec.add_dependency "dry-struct", "~> 1.4"
30
+ spec.add_dependency "dry-types", "~> 1.5"
28
31
 
29
32
  spec.add_development_dependency "dotenv", "~> 2.7"
30
33
  spec.add_development_dependency "pry", "~> 0.13"
34
+ spec.add_development_dependency "webmock", "~> 3.0"
35
+ spec.add_development_dependency "simplecov", "~> 0.21"
36
+ spec.add_development_dependency "faker", "~> 2"
37
+ spec.add_development_dependency "rspec", "~> 3.10"
31
38
  end
@@ -1,14 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "client/version"
4
- require_relative "client/test"
4
+ require_relative "client/http_client"
5
+ require_relative "tasks/service"
6
+ require_relative "tasks/task"
7
+ require_relative "tasks/factory"
8
+ require_relative "types/base"
5
9
 
6
10
  module ClickUp
7
11
  class Client
8
- attr_reader :api_token
12
+ attr_reader :api_token, :default_list_id
9
13
 
10
14
  def initialize(options = {})
11
15
  @api_token = options.fetch(:api_token)
16
+ @default_list_id = options.fetch(:default_list_id, nil)
17
+
18
+ @http_client = HttpClient.new(api_token: @api_token)
19
+ end
20
+
21
+ def tasks(list_id: @default_list_id)
22
+ raise ArgumentError, "list_id can't be nil when default_list_id was not provided" if list_id.nil?
23
+
24
+ ClickUp::Tasks::Service.new(list_id: list_id, http_client: @http_client)
12
25
  end
13
26
  end
14
27
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+ require "forwardable"
5
+
6
+ module ClickUp
7
+ class Client
8
+ class HttpClient
9
+ extend Forwardable
10
+
11
+ CLICK_UP_API_BASE_URL = "https://api.clickup.com/api/v2"
12
+
13
+ def initialize(api_token:)
14
+ @client = init_client(api_token)
15
+ end
16
+
17
+ def_delegators :@client, :get, :post, :put, :delete
18
+
19
+ private
20
+
21
+ def init_client(api_token)
22
+ Faraday.new(
23
+ url: CLICK_UP_API_BASE_URL,
24
+ headers: {
25
+ "Authorization" => api_token,
26
+ "Accept" => "application/json"
27
+ }
28
+ ) do |conn|
29
+ conn.response :logger if ENV["FARADAY_ENABLE_LOGGER"]
30
+ conn.response :raise_error
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ClickUp
4
4
  class Client
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./task"
4
+
5
+ module ClickUp
6
+ module Tasks
7
+ module Factory
8
+ module_function
9
+
10
+ # @param items [Array] An array of objects containing Task fields
11
+ def build_collection(items)
12
+ items.map { |task| Task.new(task) }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "oj"
4
+
5
+ module ClickUp
6
+ module Tasks
7
+ class Service
8
+ attr_reader :list_id
9
+
10
+ # @param list_id [Integer]
11
+ # @param http_client [#get, #delete, #post, #put, #patch] any object implementing http requests
12
+ def initialize(list_id:, http_client:)
13
+ @list_id = list_id
14
+ @http_client = http_client
15
+ end
16
+
17
+ # @param archived [Boolean] flag telling whether to fetch only achieved tasks or unarchived ones
18
+ # @return [Array<ClickUp::Tasks::Task>]
19
+ def all(archived: false)
20
+ url = "list/#{@list_id}/task?archived=#{archived}"
21
+
22
+ resp = @http_client.get(url)
23
+
24
+ body = Oj.load(resp.body)
25
+ tasks = body.fetch("tasks")
26
+ ClickUp::Tasks::Factory.build_collection(tasks)
27
+ end
28
+
29
+ # @param task_id [String]
30
+ # @return [ClickUp::Tasks::Task]
31
+ def find(task_id)
32
+ resp = @http_client.get("task/#{task_id}")
33
+
34
+ Oj.load(resp.body).then { |task| Task.new(task) }
35
+ end
36
+
37
+ # @param task_id [String]
38
+ def delete(task_id)
39
+ @http_client.delete("task/#{task_id}")
40
+ end
41
+
42
+ # @param attributes [Hash]
43
+ # @return [ClickUp::Tasks::Task]
44
+ def create(attributes)
45
+ url = "list/#{@list_id}/task"
46
+
47
+ payload = Oj.dump(attributes, mode: :compat)
48
+ resp = @http_client.post(url, payload, { "Content-Type" => "application/json" })
49
+
50
+ Oj.load(resp.body).then { |task| Task.new(task) }
51
+ end
52
+
53
+ # @param task_id [String]
54
+ # @param attributes [Hash]
55
+ # @return [ClickUp::Tasks::Task]
56
+ def update(task_id:, attributes:)
57
+ url = "task/#{task_id}"
58
+
59
+ payload = Oj.dump(attributes, mode: :compat)
60
+ resp = @http_client.put(url, payload, { "Content-Type" => "application/json" })
61
+
62
+ Oj.load(resp.body).then { |task| Task.new(task) }
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry-struct"
4
+ require_relative "../types/base"
5
+
6
+ module ClickUp
7
+ module Tasks
8
+ class Task < Dry::Struct
9
+ transform_keys(&:to_sym)
10
+
11
+ attribute :id, Types::Base::String
12
+ attribute? :custom_id, Types::Base::String.optional
13
+ attribute :name, Types::Base::String
14
+ attribute :text_content, Types::Base::String.optional
15
+ attribute :description, Types::Base::String.optional
16
+ attribute :status, Types::Base::Hash
17
+ attribute :orderindex, Types::Base::Strict::String
18
+ attribute :date_created, Types::Base::Coercible::Integer
19
+ attribute :date_updated, Types::Base::Coercible::Integer.optional
20
+ attribute :start_date, Types::Base::Coercible::Integer.optional
21
+ attribute :date_closed, Types::Base::Coercible::Integer.optional
22
+ attribute :due_date, Types::Base::Coercible::Integer.optional
23
+ attribute :archived, Types::Base::Bool
24
+ attribute :creator, Types::Base::Hash
25
+ attribute :assignees, Types::Base::Array
26
+ attribute :watchers, Types::Base::Array
27
+ attribute :tags, Types::Base::Array
28
+ attribute :parent, Types::Base::Any
29
+ attribute :priority, Types::Base::Hash.optional
30
+ attribute :points, Types::Base::Integer.optional
31
+ attribute :time_estimate, Types::Base::Integer.optional
32
+ attribute? :time_spent, Types::Base::Integer.optional
33
+ attribute :custom_fields, Types::Base::Array
34
+ attribute :dependencies, Types::Base::Array
35
+ attribute :linked_tasks, Types::Base::Array
36
+ attribute :team_id, Types::Base::String
37
+ attribute :url, Types::Base::String
38
+ attribute :permission_level, Types::Base::String
39
+ attribute :list, Types::Base::Hash
40
+ attribute :project, Types::Base::Hash
41
+ attribute :folder, Types::Base::Hash
42
+ attribute :space, Types::Base::Hash
43
+ attribute? :attachments, Types::Base::Array
44
+ attribute :checklists, Types::Base::Array
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry-types"
4
+
5
+ module ClickUp
6
+ module Types
7
+ module Base
8
+ include Dry.Types()
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: click_up-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Kopyś
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-30 00:00:00.000000000 Z
11
+ date: 2021-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -24,6 +24,48 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: oj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dry-struct
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-types
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: dotenv
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +94,62 @@ dependencies:
52
94
  - - "~>"
53
95
  - !ruby/object:Gem::Version
54
96
  version: '0.13'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.21'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.21'
125
+ - !ruby/object:Gem::Dependency
126
+ name: faker
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.10'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.10'
55
153
  description:
56
154
  email:
57
155
  - jakubkopys95@gmail.com
@@ -71,7 +169,12 @@ files:
71
169
  - bin/setup
72
170
  - click_up-client.gemspec
73
171
  - lib/click_up/client.rb
172
+ - lib/click_up/client/http_client.rb
74
173
  - lib/click_up/client/version.rb
174
+ - lib/click_up/tasks/factory.rb
175
+ - lib/click_up/tasks/service.rb
176
+ - lib/click_up/tasks/task.rb
177
+ - lib/click_up/types/base.rb
75
178
  homepage: https://github.com/JakubKopys/click_up-client
76
179
  licenses:
77
180
  - MIT