cirro-ruby-client 0.1.3 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d0246cb292156f808c22a349f7739ba1b76c8356d2780c4736d494b4923aec7
4
- data.tar.gz: aabd41bc3c27bd0a6f053475931e27ffbe367ae817b6f5b166204c320ab0243b
3
+ metadata.gz: ae8201867c4e81773872690ee39df951dfb161d68cdf4ab10807a497a8e2744b
4
+ data.tar.gz: 59b06b8045b93026ddae29649542f54398ecc5c8fd5eb727608709153bcd57ea
5
5
  SHA512:
6
- metadata.gz: b24ad7bc157ff3399d4afb6eef59265bb43c63d47b7f00d4fecdb1975d56509a3107f07401303052a5efe83d41a05fd0d5de403e8209bc4ff8379c8a28b2f3d0
7
- data.tar.gz: 31d6789e35ff776fd0800c600b9e606d3d7bb72cb1302d688e32c5d81b1693fe4ea6f397ede1692b2cbaf8f806f2baccad90fbd102e85b026b26f218f69afd6d
6
+ metadata.gz: 6e664faa51a535dec4b7544c5bd43870e31dfa014d3f5e8665df7c20f4a6fa075529b226ae9835276105e229a86ab020cdfc005662bc5f972d587a43cba40515
7
+ data.tar.gz: f3263a656d9d2cc6500233dafdd40d47dee4727a3d1d1b4e9f464a4ecdc4e2c399b8a728360061b498f32dc77c30dfed40515560ce8b33ad01bdd6031b002861
data/Gemfile CHANGED
@@ -7,6 +7,7 @@ gem 'rake', '~> 12.0'
7
7
  gem 'rspec', '~> 3.0'
8
8
 
9
9
  group :development do
10
+ gem 'faker'
10
11
  gem 'pry'
11
12
  gem 'rubocop', require: false
12
13
  gem 'rubocop-rspec'
@@ -1,16 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cirro-ruby-client (0.1.2)
4
+ cirro-ruby-client (1.2.1)
5
+ faraday_middleware
5
6
  json_api_client
6
7
  jwt
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
- activemodel (6.0.3.3)
12
- activesupport (= 6.0.3.3)
13
- activesupport (6.0.3.3)
12
+ activemodel (6.0.3.4)
13
+ activesupport (= 6.0.3.4)
14
+ activesupport (6.0.3.4)
14
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
16
  i18n (>= 0.7, < 2)
16
17
  minitest (~> 5.1)
@@ -23,8 +24,11 @@ GEM
23
24
  concurrent-ruby (1.1.7)
24
25
  crack (0.4.4)
25
26
  diff-lcs (1.4.4)
26
- faraday (1.0.1)
27
+ faker (2.14.0)
28
+ i18n (>= 1.6, < 2)
29
+ faraday (1.1.0)
27
30
  multipart-post (>= 1.2, < 3)
31
+ ruby2_keywords
28
32
  faraday_middleware (1.0.0)
29
33
  faraday (~> 1.0)
30
34
  hashdiff (1.0.1)
@@ -80,21 +84,23 @@ GEM
80
84
  rubocop-rspec (1.43.2)
81
85
  rubocop (~> 0.87)
82
86
  ruby-progressbar (1.10.1)
87
+ ruby2_keywords (0.0.2)
83
88
  thread_safe (0.3.6)
84
- tzinfo (1.2.7)
89
+ tzinfo (1.2.8)
85
90
  thread_safe (~> 0.1)
86
91
  unicode-display_width (1.7.0)
87
92
  webmock (3.9.1)
88
93
  addressable (>= 2.3.6)
89
94
  crack (>= 0.3.2)
90
95
  hashdiff (>= 0.4.0, < 2.0.0)
91
- zeitwerk (2.4.0)
96
+ zeitwerk (2.4.2)
92
97
 
93
98
  PLATFORMS
94
99
  ruby
95
100
 
96
101
  DEPENDENCIES
97
102
  cirro-ruby-client!
103
+ faker
98
104
  pry
99
105
  rake (~> 12.0)
100
106
  rspec (~> 3.0)
@@ -26,5 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ['lib']
27
27
 
28
28
  spec.add_runtime_dependency 'jwt'
29
+ spec.add_runtime_dependency 'faraday_middleware'
29
30
  spec.add_runtime_dependency 'json_api_client'
30
31
  end
@@ -0,0 +1,33 @@
1
+ module JsonApiClient
2
+ module Associations
3
+ class BaseAssociation
4
+ attr_reader :attr_name, :klass, :options
5
+ def initialize(attr_name, klass, options = {})
6
+ @attr_name = attr_name
7
+ @klass = klass
8
+ @options = options
9
+ end
10
+
11
+ def association_class
12
+ @association_class ||= Utils.compute_type(klass, options.fetch(:class_name) do
13
+ attr_name.to_s.classify
14
+ end)
15
+ end
16
+
17
+ def data(url)
18
+ from_result_set(association_class.requestor.linked(url))
19
+ end
20
+
21
+ def from_result_set(result_set)
22
+ result_set.to_a
23
+ end
24
+
25
+ def load_records(data)
26
+ data.map do |d|
27
+ record_class = Utils.compute_type(klass, klass.key_formatter.unformat(d['type']).classify)
28
+ record_class.load id: d['id']
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,10 +1,23 @@
1
1
  require 'json_api_client'
2
+
3
+ # temporary monkey patch code to fix gem bug
4
+ require 'cirro_io/has_one'
5
+ require 'cirro_io/base_association'
6
+ # temporary monkey patch code to fix gem bug
7
+
2
8
  require 'cirro_io/client/version'
3
9
  require 'cirro_io/client/configuration'
4
10
  require 'cirro_io/client/response_debugging_middleware'
5
11
  require 'cirro_io/client/jwt_authentication'
6
12
  require 'cirro_io/client/base'
13
+ require 'cirro_io/client/gig_invitation'
14
+ require 'cirro_io/client/app_user'
7
15
  require 'cirro_io/client/app_worker'
16
+ require 'cirro_io/client/worker_invitation_filter'
17
+ require 'cirro_io/client/gig_task'
18
+ require 'cirro_io/client/gig_result'
19
+ require 'cirro_io/client/gig_time_activity'
20
+ require 'cirro_io/client/gig'
8
21
 
9
22
  module CirroIO
10
23
  module Client
@@ -0,0 +1,6 @@
1
+ module CirroIO
2
+ module Client
3
+ class AppUser < Base
4
+ end
5
+ end
6
+ end
@@ -1,9 +1,8 @@
1
1
  module CirroIO
2
2
  module Client
3
3
  class AppWorker < Base
4
- def self.resource_name
5
- 'app-workers'
6
- end
4
+ has_one :app_user
5
+ has_many :gig_invitations
7
6
  end
8
7
  end
9
8
  end
@@ -9,6 +9,19 @@ module CirroIO
9
9
  super(url)
10
10
  connection.faraday.url_prefix = url
11
11
  end
12
+
13
+ def self.custom_post(endpoint, payload)
14
+ custom_connection.post(endpoint, payload.to_json)
15
+ end
16
+
17
+ def self.custom_connection
18
+ Faraday.new(url: "#{CirroIO::Client.configuration.site}/#{CirroIO::Client.configuration.api_version}") do |conn|
19
+ conn.request :json
20
+ conn.response :json
21
+ conn.use CirroIO::Client::JwtAuthentication
22
+ conn.use JsonApiClient::Middleware::Status, {}
23
+ end
24
+ end
12
25
  end
13
26
  end
14
27
  end
@@ -0,0 +1,45 @@
1
+ module CirroIO
2
+ module Client
3
+ class Gig < Base
4
+ has_one :worker_invitation_filter
5
+ has_many :gig_tasks
6
+ has_many :gig_results
7
+ has_many :gig_time_activities
8
+
9
+ # rubocop:disable Metrics/AbcSize
10
+ def bulk_create_with(worker_invitation_filter, gig_tasks)
11
+ payload = { data: { attributes: attributes, relationships: {} } }
12
+ payload[:data][:relationships][:gig_tasks] = gig_tasks.map(&:attributes)
13
+ payload[:data][:relationships][:worker_invitation_filter] = worker_invitation_filter.attributes
14
+
15
+ response = self.class.custom_post('bulk/gigs', format_to_dashed_keys(payload))
16
+
17
+ self.class.parser.parse(self.class, response).first
18
+ end
19
+
20
+ def bulk_archive_with(gig_results, gig_time_activities)
21
+ payload = { data: { relationships: {} } }
22
+ payload[:data][:relationships][:gig_results] = gig_results.map do |result|
23
+ result.attributes.merge({ relationships: {
24
+ 'app-worker': { data: result.app_worker.attributes },
25
+ 'gig-task': { data: result.gig_task.attributes },
26
+ } })
27
+ end
28
+ payload[:data][:relationships][:gig_time_activities] = gig_time_activities.map do |activity|
29
+ activity.attributes.merge({ relationships: { 'app-worker': { data: activity.app_worker.attributes } } })
30
+ end
31
+
32
+ response = self.class.custom_post("bulk/gigs/#{id}/archive", format_to_dashed_keys(payload))
33
+
34
+ self.class.parser.parse(self.class, response).first
35
+ end
36
+ # rubocop:enable Metrics/AbcSize
37
+
38
+ private
39
+
40
+ def format_to_dashed_keys(params)
41
+ params.deep_transform_keys { |key| key.to_s.gsub('_', '-') }
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,6 @@
1
+ module CirroIO
2
+ module Client
3
+ class GigInvitation < Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ module CirroIO
2
+ module Client
3
+ class GigResult < Base
4
+ has_one :app_worker
5
+ has_one :gig_task
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module CirroIO
2
+ module Client
3
+ class GigTask < Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ module CirroIO
2
+ module Client
3
+ class GigTimeActivity < Base
4
+ has_one :app_worker
5
+ end
6
+ end
7
+ end
@@ -3,7 +3,7 @@ module CirroIO
3
3
  module Client
4
4
  class ResponseDebuggingMiddleware < Faraday::Response::Middleware
5
5
  def on_complete(env)
6
- # binding.pry
6
+ binding.pry # rubocop:disable Lint/Debugger
7
7
  end
8
8
  end
9
9
  end
@@ -1,7 +1,7 @@
1
1
  # rubocop:disable Style/MutableConstant
2
2
  module CirroIO
3
3
  module Client
4
- VERSION = '0.1.3'
4
+ VERSION = '1.2.1'
5
5
  end
6
6
  end
7
7
  # rubocop:enable Style/MutableConstant
@@ -0,0 +1,6 @@
1
+ module CirroIO
2
+ module Client
3
+ class WorkerInvitationFilter < Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,16 @@
1
+ module JsonApiClient
2
+ module Associations
3
+ module HasOne
4
+ class Association < BaseAssociation
5
+ def from_result_set(result_set)
6
+ result_set.first
7
+ end
8
+
9
+ def load_records(data)
10
+ record_class = Utils.compute_type(klass, klass.key_formatter.unformat(data['type']).classify)
11
+ record_class.load id: data['id']
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cirro-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cirro Dev Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-08 00:00:00.000000000 Z
11
+ date: 2020-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday_middleware
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: json_api_client
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -60,13 +74,22 @@ files:
60
74
  - bin/console
61
75
  - bin/setup
62
76
  - cirro-ruby-client.gemspec
77
+ - lib/cirro_io/base_association.rb
63
78
  - lib/cirro_io/client.rb
79
+ - lib/cirro_io/client/app_user.rb
64
80
  - lib/cirro_io/client/app_worker.rb
65
81
  - lib/cirro_io/client/base.rb
66
82
  - lib/cirro_io/client/configuration.rb
83
+ - lib/cirro_io/client/gig.rb
84
+ - lib/cirro_io/client/gig_invitation.rb
85
+ - lib/cirro_io/client/gig_result.rb
86
+ - lib/cirro_io/client/gig_task.rb
87
+ - lib/cirro_io/client/gig_time_activity.rb
67
88
  - lib/cirro_io/client/jwt_authentication.rb
68
89
  - lib/cirro_io/client/response_debugging_middleware.rb
69
90
  - lib/cirro_io/client/version.rb
91
+ - lib/cirro_io/client/worker_invitation_filter.rb
92
+ - lib/cirro_io/has_one.rb
70
93
  homepage: https://cirro.io/api-docs/v1#cirro-api-documentation
71
94
  licenses:
72
95
  - MIT