@@ -16,37 +16,41 @@ def initialize(access_token, debug: false)
1616 end
1717
1818 def get ( uri , args : { } )
19- r_uri = URI ( uri . start_with? ( "https" ) ? uri : ( Office365 ::API_HOST + uri ) )
19+ req_url = URI ( uri . start_with? ( "https" ) ? uri : ( Office365 ::API_HOST + uri ) )
2020
21- response = Faraday . new ( url : [ r_uri . scheme , "://" , r_uri . hostname ] . join , headers : headers ) do |faraday |
21+ response = Faraday . new ( url : [ req_url . scheme , "://" , req_url . hostname ] . join , headers : headers ) do |faraday |
2222 faraday . adapter Faraday . default_adapter
2323 faraday . response :json
2424 faraday . response :logger , ::Logger . new ( $stdout) , bodies : true if dev_developement?
25- end . get ( r_uri . request_uri , *args )
25+ end . get ( req_url . request_uri , *args )
2626
27- resp_body = response . body
28- return resp_body if response . status == 200
29- raise InvalidAuthenticationTokenError , resp_body . dig ( "error" , "message" ) if response . status == 401
30-
31- raise Error , resp_body [ "error" ]
27+ parse_respond ( response )
3228 end
3329
3430 def post ( uri , args )
35- response = Faraday . new ( url : Office365 ::API_HOST , headers : headers ) do |faraday |
31+ req_url = URI ( uri . start_with? ( "https" ) ? uri : ( Office365 ::API_HOST + uri ) )
32+
33+ response = Faraday . new ( url : [ req_url . scheme , "://" , req_url . hostname ] . join , headers : post_headers ) do |faraday |
3634 faraday . adapter Faraday . default_adapter
3735 faraday . response :json
3836 faraday . response :logger , ::Logger . new ( $stdout) , bodies : true if dev_developement?
39- end . post ( uri , args )
37+ end . post ( req_url . request_uri , args . to_query )
38+
39+ parse_respond ( response )
40+ end
4041
42+ private
43+
44+ def parse_respond ( response )
4145 resp_body = response . body
46+
4247 return resp_body if response . status == 200
4348 raise InvalidAuthenticationTokenError , resp_body . dig ( "error" , "message" ) if response . status == 401
49+ raise InvaliRequestError , resp_body [ "error_description" ] if response . status == 400
4450
4551 raise Error , resp_body [ "error" ]
4652 end
4753
48- private
49-
5054 def headers
5155 {
5256 "Content-Type" => "application/json" ,
@@ -57,6 +61,12 @@ def headers
5761 def dev_developement?
5862 debug
5963 end
64+
65+ def post_headers
66+ {
67+ "Content-Type" => "application/x-www-form-urlencoded"
68+ }
69+ end
6070 end
6171 end
6272end
0 commit comments