|
3 | 3 | require "base64" |
4 | 4 | require "rest-client" |
5 | 5 | require "json" |
| 6 | +require 'net/http/post/multipart' |
6 | 7 | require_relative './constant' |
7 | 8 | # Request requests and sends data from server |
8 | 9 | module ImageKitIo |
@@ -33,28 +34,39 @@ def auth_headers |
33 | 34 | # request method communicates with server |
34 | 35 | def request(method, url, headers = create_headers, payload = nil) |
35 | 36 | headers ||= create_headers |
36 | | - response = {response: nil, error: nil} |
| 37 | + response = {} |
37 | 38 | begin |
38 | | - resp = RestClient::Request.new(method: method, |
39 | | - url: url, |
40 | | - headers: headers, |
41 | | - payload: payload).execute |
42 | | - |
43 | | - if (resp.code >= 200) && (resp.code < 204) |
44 | | - if (resp.headers[:content_type].include? "application/json") |
| 39 | + if(method.downcase.to_sym == :post) |
| 40 | + uri = URI.parse(url) |
| 41 | + http = Net::HTTP.new(uri.host, uri.port) |
| 42 | + http.use_ssl = (uri.scheme == 'https') |
| 43 | + req = Net::HTTP::Post::Multipart.new uri.path, payload, headers |
| 44 | + resp = http.request(req) |
| 45 | + if resp.code.to_i == 400 |
| 46 | + raise RestClient::ExceptionWithResponse, OpenStruct.new(code: 400, body: resp.body) |
| 47 | + end |
| 48 | + else |
| 49 | + resp = RestClient::Request.new(method: method, |
| 50 | + url: url, |
| 51 | + headers: headers, |
| 52 | + payload: payload).execute |
| 53 | + end |
| 54 | + if (resp.code.to_i >= 200) && (resp.code.to_i < 204) |
| 55 | + content_type = resp.respond_to?(:headers) ? resp.headers[:content_type] : resp.content_type |
| 56 | + if (content_type.include? "application/json") |
45 | 57 | response[:response] = JSON.parse(resp.body.to_s) |
46 | 58 | else |
47 | | - raise =RestClient::ExceptionWithResponse |
| 59 | + raise RestClient::ExceptionWithResponse, OpenStruct.new(code: 404, body: resp.body) |
48 | 60 | end |
49 | | - elsif resp.code == 204 |
| 61 | + elsif resp.code.to_i == 204 |
50 | 62 | response[:response] = {'success': true} |
51 | 63 | end |
52 | 64 |
|
53 | 65 | rescue RestClient::ExceptionWithResponse => err |
54 | | - response[:error] = if err.http_code == 404 |
| 66 | + response[:error] = if err.http_code.to_i == 404 |
55 | 67 | {'message': err.response.to_s} |
56 | 68 | else |
57 | | - JSON.parse(err.response) |
| 69 | + err.response.is_a?(OpenStruct) ? JSON.parse(err.response.body) : JSON.parse(err.response) |
58 | 70 | end |
59 | 71 | end |
60 | 72 | response |
|
0 commit comments