microslop_one_drive 2.0.0 → 2.1.0

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: 263180adfcfe1c3fd07687538f1deae87428df5c8470983fa301fc3348b3f49c
4
- data.tar.gz: 9da219ccfd38a57a74a1aac65e945d4e87cdf1eff9c6737e20645cc170d1e0b9
3
+ metadata.gz: e8dad115ceda6d13e87dfa8ce0e5d9b1d9e451a5000da6fa4feea51a66cf0a5f
4
+ data.tar.gz: 32162a0c944a59cfcdf3a80497d599e899d995fde9286555f11b4d09223b8cfc
5
5
  SHA512:
6
- metadata.gz: 7224f1393f2e5421fd02741e0940f4511fb907d991bfab65d9be324c4ee7aeb8a3b6f71f7d5f56d863671318ae3a6f680bef9a696e1673a58fac6289bb7edd7a
7
- data.tar.gz: 79a96850a6c4e1a90a156feffd8d5cb2dcf7df80370974766ace9a67e07aa02e75f618e368b432515160e635845475451ea4f556fda8662557f90507685ec256
6
+ metadata.gz: fe6c984e15650dc7a03c4299674122518bb55dabe9aac1943d03d0792003a0580a231a121cb7a93dd2dadaafd587992f2a747599d0eb1faf03f79bc272661db1
7
+ data.tar.gz: 5e3d86ad896bd39c942d014e2b33cc58a0b80db859b36c856049396dee10d99b3abff74af702a5a9abe1d05376746bf0c85403be7853d80f10c05c0d88f07fca
@@ -1,10 +1,16 @@
1
+ require "json"
2
+
1
3
  module MicroslopOneDrive
2
4
  class Client
3
5
  BASE_URL = "https://graph.microsoft.com/v1.0".freeze
4
6
  BATCH_REQUEST_LIMIT = 20.freeze
5
7
 
6
- def initialize(access_token)
8
+ # @param access_token [String] OAuth access token for Microsoft Graph.
9
+ # @param logger [Object, nil] Optional logger (e.g. Rails.logger) that responds to +#info+, +#debug+, +#warn+, +#error+.
10
+ # When set, all API requests and responses are logged.
11
+ def initialize(access_token, logger: nil)
7
12
  @access_token = access_token
13
+ @logger = logger
8
14
 
9
15
  @headers = {
10
16
  "Authorization" => "Bearer #{@access_token}",
@@ -150,7 +156,7 @@ module MicroslopOneDrive
150
156
 
151
157
  batches = requests.each_slice(BATCH_REQUEST_LIMIT).to_a
152
158
  batches.each do |batch|
153
- response = post(path: "$batch", body: { requests: batch })
159
+ response = post(path: "$batch", body: { requests: batch }.to_json)
154
160
  handle_error(response) unless response.success?
155
161
  new_responses = response.parsed_response.fetch("responses", [])
156
162
  new_responses.each do |new_response_hash|
@@ -164,11 +170,48 @@ module MicroslopOneDrive
164
170
  private
165
171
 
166
172
  def get(path:, query: {})
167
- HTTParty.get("#{BASE_URL}/#{path}", headers: @headers, query: query)
173
+ url = "#{BASE_URL}/#{path}"
174
+
175
+ log_request("GET", url, query: query)
176
+
177
+ response = HTTParty.get(url, headers: @headers, query: query)
178
+
179
+ log_response(response, "GET", url)
180
+
181
+ response
168
182
  end
169
183
 
170
184
  def post(path:, body:)
171
- HTTParty.post("#{BASE_URL}/#{path}", headers: @headers, body: body)
185
+ url = "#{BASE_URL}/#{path}"
186
+
187
+ log_request("POST", url, body: body)
188
+
189
+ response = HTTParty.post(url, headers: @headers, body: body)
190
+
191
+ log_response(response, "POST", url)
192
+
193
+ response
194
+ end
195
+
196
+ def log_request(method, url, query: nil, body: nil)
197
+ return unless @logger
198
+
199
+ @logger.info ""
200
+ @logger.info "==================== START MicroslopOneDrive #{method} #{url} ===================="
201
+ @logger.info "Request method: #{method}"
202
+ @logger.info "Request url: #{url}"
203
+ @logger.info "Request query: #{query.inspect}" if query && query.any?
204
+ @logger.info "Request body: #{body.inspect}" if body
205
+ end
206
+
207
+ def log_response(response, method, url)
208
+ return unless @logger
209
+
210
+ @logger.info ""
211
+ @logger.info "Response code: #{response.code}"
212
+ @logger.info "Response body:" if response.parsed_response
213
+ @logger.info JSON.pretty_generate(response.parsed_response) if response.parsed_response
214
+ @logger.info "==================== END MicroslopOneDrive #{method} #{url} ===================="
172
215
  end
173
216
 
174
217
  def handle_error(response)
@@ -1,3 +1,3 @@
1
1
  module MicroslopOneDrive
2
- VERSION = "2.0.0"
2
+ VERSION = "2.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microslop_one_drive
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bradley Marques