class Wework::Request
Attributes
base[R]
httprb[R]
ssl_context[R]
Public Class Methods
new(base, skip_verify_ssl)
click to toggle source
# File lib/wework/request.rb, line 9 def initialize(base, skip_verify_ssl) @base = base @httprb = HTTP.timeout(**Wework.http_timeout_options) @ssl_context = OpenSSL::SSL::SSLContext.new @ssl_context.ssl_version = :TLSv1 @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE if skip_verify_ssl end
Public Instance Methods
get(path, get_header = {})
click to toggle source
# File lib/wework/request.rb, line 17 def get(path, get_header = {}) request(path, get_header) do |url, header| params = header.delete(:params) httprb.headers(header).get(url, params: params, ssl_context: ssl_context) end end
post(path, post_body, post_header = {})
click to toggle source
# File lib/wework/request.rb, line 24 def post(path, post_body, post_header = {}) request(path, post_header) do |url, header| params = header.delete(:params) httprb.headers(header).post(url, params: params, json: post_body, ssl_context: ssl_context) end end
post_file(path, file, post_header = {})
click to toggle source
# File lib/wework/request.rb, line 31 def post_file(path, file, post_header = {}) request(path, post_header) do |url, header| params = header.delete(:params) httprb.headers(header) .post(url, params: params, form: { media: HTTP::FormData::File.new(file), hack: 'X' }, # Existing here for http-form_data 1.0.1 handle single param improperly ssl_context: ssl_context) end end
Private Instance Methods
parse_response(response, as) { |parse_as, data| ... }
click to toggle source
# File lib/wework/request.rb, line 63 def parse_response(response, as) content_type = response.headers[:content_type] parse_as = { %r{^application\/json} => :json, %r{^image\/.*} => :file }.each_with_object([]) { |match, memo| memo << match[1] if content_type =~ match[0] }.first || as || :text case parse_as when :file file = Tempfile.new('tmp') file.binmode file.write(response.body) file.close data = file when :json data = JSON.parse response.body.to_s else data = response.body end yield(parse_as, data) end
request(path, header = {}) { |"#{url_base}#{path}", header| ... }
click to toggle source
# File lib/wework/request.rb, line 44 def request(path, header = {}, &_block) url_base = header.delete(:base) || base as = header.delete(:as) header['Accept'] = 'application/json' dup_header = header.dup response = yield("#{url_base}#{path}", header) raise ResponseError.new(response.status) unless HTTP_OK_STATUS.include?(response.status) parse_response(response, as || :json) do |parse_as, data| break data unless parse_as == :json result = Wework::Result.new(data) if defined?(Rails.logger) && Rails.logger Rails.logger.debug "[WEWORK] request path(#{url_base}#{path}); request params: #{dup_header.inspect}; response: #{result.inspect}" end raise AccessTokenExpiredError if result.token_expired? result end end