kaze_client 0.2.1 → 0.3.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: fd31be1e3cb6ccd738c9646f50ad6096961f4b77f893373f38481f747a2c5442
4
- data.tar.gz: 7f2081157ac8778d108e4629524e228ad67aaeabb38ad977b7eb362476d0e996
3
+ metadata.gz: 483e914296f78875d5a5eb30e3207f7f99d8db4c7bfddbc8440f3983e99f5605
4
+ data.tar.gz: ebb0a204c158f59fa6cdde4d04573b1beaeaa94b07f86b8b7815ce59c9e40ca0
5
5
  SHA512:
6
- metadata.gz: 96c9f307c9d54f2d446d82e10f1ed795223a2679c3dc60dcc7dcfd1f3609bf90b78042552e34560fe2ef292ea35ec2f93a8dc744f12ba05dac7c4a76316417f7
7
- data.tar.gz: 5645d82b34831f41eacd354e69a573a7e566c488dd6686e9b552e704953319c4733715bbe34e13efd9007af1e75ad122b9e6c33d5b3c923d312b4d37b8d17fc0
6
+ metadata.gz: c3006d994cb61c5b180449f58dce770ddb7f12cf3636cb3247b2b669f7ea387b3d4a71085645a1671d0aea0e298ba1f28db984227dbcc5c9d1e39809041ba0b7
7
+ data.tar.gz: a96e0bcd0089c80c89bed0573ff829d62e727f5b3e4d6de0b87b0a6b3158cb17bb1c5344fbd35bca8a52ced6b9466024365e004dc02fc704005e662a8b34615d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # CHANGELOG
2
+
3
+ ## [0.3.1] - 2022-11-30
4
+
5
+ - Update error handling for more clarity.
6
+
7
+ ## [0.3.0] - 2022-09-28
8
+
9
+ - Add new requests:
10
+ - Cancel job
11
+ - Get job document
12
+ - List users
13
+ - Upload image
14
+
1
15
  ## [0.2.1] - 2022-06-17
2
16
 
3
17
  - Add methods and utilities to get and set data in the response.
@@ -10,7 +10,7 @@ module KazeClient
10
10
  # Those headers are added on all requests by default
11
11
  DEFAULT_HEADERS = {
12
12
  'Content-Type' => 'application/json',
13
- 'Accept' => 'application/json'
13
+ 'Accept' => 'application/json'
14
14
  }.freeze
15
15
 
16
16
  # @return [String, Symbol] The HTTP verb to use for the request
@@ -64,19 +64,12 @@ module KazeClient
64
64
  # @param response [HTTParty::Response] The response object from HTTParty call
65
65
  # @return [KazeClient::Error::Generic] The adequate error object according to the given response
66
66
  def error_for(response)
67
- # Not found is handled in a specific way since there is no message key and the error has a
68
- # specific format
69
- return KazeClient::Error::NotFound.new if response.code == 404
67
+ error = response.parsed_response['error']
68
+ message = response.parsed_response['message']
70
69
 
71
- # Return the adequate error class for the error code in the response
72
- "KazeClient::Error::#{response.parsed_response['error'].camelize}"
73
- .constantize.new(response.parsed_response['message'])
74
- rescue NameError
75
- # This means no error class exists for the error code in the response, we fallback to a
76
- # generic error
77
- Error::Generic.new(status: response.code,
78
- error: response.parsed_response['error'],
79
- message: response.parsed_response['message'])
70
+ return non_generic_error(error, message, response) if error != 'generic'
71
+
72
+ generic_http_error(error, message, response)
80
73
  end
81
74
 
82
75
  protected
@@ -100,6 +93,8 @@ module KazeClient
100
93
  @body
101
94
  when Hash
102
95
  @body.to_json
96
+ else
97
+ @body.to_s
103
98
  end
104
99
  end
105
100
 
@@ -109,5 +104,30 @@ module KazeClient
109
104
 
110
105
  @query
111
106
  end
107
+
108
+ def non_generic_error(error, message, response)
109
+ # Return the adequate error class for the error code in the response
110
+ "KazeClient::Error::#{error.camelize}".constantize.new(message)
111
+ rescue NameError
112
+ # This means no error class exists for the error code in the response, we fallback to a
113
+ # generic error
114
+ Error::Generic.new(status: response.code, error: error, message: message)
115
+ end
116
+
117
+ def generic_http_error(error, message, response)
118
+ case response.code
119
+ when 401
120
+ KazeClient::Error::Unauthorized.new(message)
121
+ when 403
122
+ KazeClient::Error::Forbidden.new(message)
123
+ when 404
124
+ KazeClient::Error::NotFound.new
125
+ when 500
126
+ KazeClient::Error::InternalServerError.new(message)
127
+ else
128
+ # This means no error class exists for the response code, we fallback to a generic error
129
+ Error::Generic.new(status: response.code, error: error, message: message)
130
+ end
131
+ end
112
132
  end
113
133
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ # @author chevre_a@modulotech.fr
5
+ # Cancel a job.
6
+ # @see KazeClient::Request
7
+ # @see KazeClient::Utils::FinalRequest
8
+ # @see KazeClient::Utils::AuthentifiedRequest
9
+ # @since 0.3.0
10
+ class CancelJobRequest < Utils::FinalRequest
11
+ include Utils::AuthentifiedRequest
12
+
13
+ def initialize(job_id, cancel_reason_id)
14
+ super(:put, "api/jobs/#{job_id}/cancel")
15
+
16
+ @body = {
17
+ job: { cancel_reason_id: cancel_reason_id }
18
+ }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ # @author chevre_a@modulotech.fr
5
+ # Retrieve a job document from a job.
6
+ # @see KazeClient::Request
7
+ # @see KazeClient::Utils::FinalRequest
8
+ # @see KazeClient::Utils::AuthentifiedRequest
9
+ # @since 0.3.0
10
+ class JobDocumentRequest < Utils::FinalRequest
11
+ include Utils::AuthentifiedRequest
12
+
13
+ def initialize(job_id, job_document_id)
14
+ super(:get, "api/jobs/#{job_id}/documents/#{job_document_id}")
15
+ end
16
+ end
17
+ end
@@ -7,7 +7,7 @@ module KazeClient
7
7
  # @see KazeClient::Utils::FinalRequest
8
8
  # @see KazeClient::Utils::AuthentifiedRequest
9
9
  # @see KazeClient::Utils::ListRequest
10
- # @since 0.1.0
10
+ # @since 0.1.1
11
11
  class PartnersRequest < Utils::FinalRequest
12
12
  include Utils::AuthentifiedRequest
13
13
  include Utils::ListRequest
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ # @author pourch_t@modulotech.fr
5
+ # @author ciappa_m@modulotech.fr
6
+ # Upload an image to a job document from a job.
7
+ # @see KazeClient::Request
8
+ # @see KazeClient::Utils::FinalRequest
9
+ # @see KazeClient::Utils::AuthentifiedRequest
10
+ # @since 0.3.0
11
+ # @example How to use
12
+ # request = KazeClient::UploadImageRequest.new(Rails.root.join('public/images/test.jpg'))
13
+ # response = KazeClient::Client.new(URL).execute(request)
14
+ # request.send_image(response['direct_upload'])
15
+ class UploadImageRequest < Utils::FinalRequest
16
+
17
+ include Utils::AuthentifiedRequest
18
+
19
+ def initialize(filepath)
20
+ super(:post, 'api/direct_uploads')
21
+ @filepath = if filepath.is_a?(Pathname)
22
+ filepath
23
+ else
24
+ Pathname.new(filepath.to_s)
25
+ end
26
+ @filename = @filepath.basename.to_s
27
+
28
+ @body = {
29
+ blob: {
30
+ filename: @filename,
31
+ byte_size: File.size(@filepath),
32
+ checksum: Digest::MD5.base64digest(@filepath.read),
33
+ content_type: "image/#{@filename.split('.')[1]}"
34
+ }
35
+ }
36
+ end
37
+
38
+ def send_image(direct_uploads)
39
+ body = @filepath.read
40
+ header = direct_uploads['headers']
41
+ HTTParty.put(direct_uploads['url'], { body: body, headers: header })
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KazeClient
4
+ # @author chevre_a@modulotech.fr
5
+ # List the users from the current user's company.
6
+ # @see KazeClient::Request
7
+ # @see KazeClient::Utils::FinalRequest
8
+ # @see KazeClient::Utils::AuthentifiedRequest
9
+ # @since 0.3.0
10
+ class UsersRequest < Utils::FinalRequest
11
+ include Utils::AuthentifiedRequest
12
+ include Utils::ListRequest
13
+
14
+ def initialize
15
+ super(:get, 'api/users')
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KazeClient
4
- VERSION = '0.2.1'
4
+ VERSION = '0.3.1'
5
5
  end
data/lib/kaze_client.rb CHANGED
@@ -4,7 +4,8 @@
4
4
  require 'activesupport/blank'
5
5
  require 'activesupport/camelize'
6
6
 
7
- # Require third-part libraries
7
+ # Require third-party libraries
8
+ require 'pathname'
8
9
  require 'httparty'
9
10
  require 'jsonpath'
10
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaze_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu Ciappara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-17 00:00:00.000000000 Z
11
+ date: 2022-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -91,7 +91,9 @@ files:
91
91
  - lib/kaze_client/json_utils.rb
92
92
  - lib/kaze_client/request/request.rb
93
93
  - lib/kaze_client/request/requests/assign_performer_request.rb
94
+ - lib/kaze_client/request/requests/cancel_job_request.rb
94
95
  - lib/kaze_client/request/requests/create_job_request.rb
96
+ - lib/kaze_client/request/requests/job_document_request.rb
95
97
  - lib/kaze_client/request/requests/job_request.rb
96
98
  - lib/kaze_client/request/requests/job_workflow_request.rb
97
99
  - lib/kaze_client/request/requests/job_workflows_request.rb
@@ -100,6 +102,8 @@ files:
100
102
  - lib/kaze_client/request/requests/partners_request.rb
101
103
  - lib/kaze_client/request/requests/profile_request.rb
102
104
  - lib/kaze_client/request/requests/update_template_request.rb
105
+ - lib/kaze_client/request/requests/upload_image_request.rb
106
+ - lib/kaze_client/request/requests/users_request.rb
103
107
  - lib/kaze_client/request/requests/utils/authentified_request.rb
104
108
  - lib/kaze_client/request/requests/utils/final_request.rb
105
109
  - lib/kaze_client/request/requests/utils/list_request.rb