Class: LeanMicrosoftGraph::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/lean_microsoft_graph/resource.rb

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ Resource

Returns a new instance of Resource.



5
6
7
# File 'lib/lean_microsoft_graph/resource.rb', line 5

def initialize(connection)
  @connection = connection
end

Instance Method Details

#get_request(url, params = {}, headers = {}, &block) ⇒ Object



9
10
11
# File 'lib/lean_microsoft_graph/resource.rb', line 9

def get_request(url, params = {}, headers = {}, &block)
  handle_response(@connection.get(url, params, headers, &block))
end

#handle_response(response) ⇒ Object (private)



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/lean_microsoft_graph/resource.rb', line 19

def handle_response(response)
	parsed_response = JSON.parse(response.body, symbolize_names: true)
  return parsed_response if (200..299).include?(response.status)

  error_message, error_code = parse_error(parsed_response)

  case { status: response.status, code: error_code, message: error_message }
  in { status: 400, code: code, message: message }
    raise Error, "Bad request. Code: #{code}. Message: #{message}"
  in { status: 401, code: code, message: message }
    raise Error, "Unauthorized. Check permissions or authentication token. Code: #{code}. Message: #{message}"
  in { status: 403, code: code, message: message }
    raise Error, "Forbidden. Insufficient permissions. Code: #{code}. Message: #{message}"
  in { status: 404, code: code, message: message }
    raise Error, "Resource not found. Code: #{code}. Message: #{message}"
  in { status: 429, code: code, message: message }
    raise Error, "Too many requests. Rate limit exceeded. Code: #{code}. Message: #{message}"
  in { status: 500, code: code, message: message }
    raise Error, "Internal server error. Code: #{code}. Message: #{message}"
  in { status: 503, code: code, message: message }
    raise Error, "Service unavailable. Try again later. Code: #{code}. Message: #{message}"
  else
    raise Error, "An unknown error occurred with status: #{response.status}."
  end
end

#parse_error(parsed_response) ⇒ Object (private)



45
46
47
48
49
50
51
52
53
54
# File 'lib/lean_microsoft_graph/resource.rb', line 45

def parse_error(parsed_response)
  if parsed_response[:error].is_a?(Hash)
    error_code = parsed_response[:error][:code]
    error_message = parsed_response[:error][:message]
  else
    error_code = parsed_response[:error_codes]
    error_message = parsed_response[:error_description]
  end
  [error_message, error_code]
end

#post_request(url, body = {}, headers = {}, &block) ⇒ Object



13
14
15
# File 'lib/lean_microsoft_graph/resource.rb', line 13

def post_request(url, body = {}, headers = {}, &block)
  handle_response(@connection.post(url, body, headers, &block))
end