kaze_client 0.2.1 → 0.3.1

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: 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