microslop_one_drive 2.0.1 → 2.2.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: d969f1feafa36c4a8292302ed2ae9e1d7baa05d07cc008e86c6eb1cfd9840637
4
- data.tar.gz: 23b7b339e4948550d795adf8e9c9670f42af0ae7be19adf840fd90be6eaf8164
3
+ metadata.gz: 5ecb37d7c06f4bdccc20efb969d008a164b04e1b9af749a548b7619533d1ecf0
4
+ data.tar.gz: '058058b75f1631a1d6c1ea16437564cff90629794713adb1125f67cb9a1aa405'
5
5
  SHA512:
6
- metadata.gz: 58e19c2018fd78d685e37c5c1fa3abffb0a00323ab140e2973d7b9ce0465da47e3dbb9fd0c8c1ab2ac099e03a94bdd0b4cb498a144c3f163abe2a58936bc4ff1
7
- data.tar.gz: 541055c99ec2b17e7968f96963a90b84d8a6441e28f6ffee2dd2705a9aec4069a1b50d3c1c1dfe4ef830a66a2b5ac29efdd46c770e29e0e0c9a156f87d5e1940
6
+ metadata.gz: 52c178fb870ddda9248b1cf7d1efd453d075e3ceafbaece55b3011cc9403fe860fd57a7b971342293e9cbe13dd79677ea93d2ffb67060acaf182b6df087de6b0
7
+ data.tar.gz: aa23a4524e2ffa81fb1e7b14f8cf6fb79ffcdbd37f1867e0fe1f4a5106469edfc5964d68131a8b035ff7d75ddaaf19e09c0c37cfb8322799340ee6b86270f1e4
@@ -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}",
@@ -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,12 +1,13 @@
1
1
  module MicroslopOneDrive
2
2
  class Drive
3
- attr_reader :id, :name, :url, :drive_type, :created_at, :updated_at
3
+ attr_reader :id, :name, :description, :url, :drive_type, :created_at, :updated_at
4
4
 
5
5
  def initialize(drive_hash)
6
6
  @drive_hash = drive_hash
7
7
 
8
8
  @id = drive_hash.fetch("id", nil)
9
9
  @name = drive_hash.fetch("name", nil)
10
+ @description = drive_hash.fetch("description", nil)
10
11
  @url = drive_hash.fetch("webUrl", nil)
11
12
  @drive_type = drive_hash.fetch("driveType", nil)
12
13
 
@@ -1,3 +1,3 @@
1
1
  module MicroslopOneDrive
2
- VERSION = "2.0.1"
2
+ VERSION = "2.2.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.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bradley Marques