class FusionAuth::RESTClient
Public Class Methods
new()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 21 def initialize @url = ''.dup @parameters = {} @proxy = {} @headers = {} @body_handler = nil @certificate = nil @connect_timeout = 1000 @read_timeout = 2000 @error_response_handler = nil @error_type = nil @method = nil @success_response_handler = nil end
Public Instance Methods
body_handler(body_handler)
click to toggle source
Sets the BodyHandler for this RESTClient
@param body_handler
[BodyHandler] The body handler. @return [RESTClient] this
# File lib/fusionauth/rest_client.rb, line 58 def body_handler(body_handler) @body_handler = body_handler self end
certificate(certificate)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 63 def certificate(certificate) @certificate = certificate self end
connect_timeout(connect_timeout)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 68 def connect_timeout(connect_timeout) @connect_timeout = connect_timeout self end
delete()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 78 def delete @method = 'DELETE' self end
error_response_handler(error_response_handler)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 83 def error_response_handler(error_response_handler) @error_response_handler = error_response_handler self end
get()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 88 def get @method = 'GET' self end
go()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 93 def go if @url.size == 0 raise ArgumentError, 'You must specify a URL' end if @method == nil raise ArgumentError, 'You must specify a HTTP method' end response = ClientResponse.new response.request = (@body_handler != nil) ? @body_handler.body_object : nil response.method = @method begin if @parameters.length > 0 if @url.index('?') == nil @url<<'?' end list = [] @parameters.each { |key, values| values.each { |value| list<<"#{URI.encode_www_form_component(key)}=#{URI.encode_www_form_component(value)}" } } @url<<list.join('&') end response.url = URI(@url) opts = {:p_addr => @proxy[:p_addr], :p_port => @proxy[:p_port], :p_user => @proxy[:p_user], :p_pass => @proxy[:p_pass], :open_timeout => @connect_timeout, :read_timeout => @read_timeout} if @certificate != nil opts[:cert] = @certificate end if response.url.scheme == 'https' opts[:use_ssl] = true end if @body_handler != nil && @body_handler.type != "FormData" @body_handler.set_headers(@headers) end http_response = nil Net::HTTP.start(response.url.hostname, response.url.port, opts) { |http| request = nil if @method == 'COPY' request = Net::HTTP::Copy.new(response.url, @headers) elsif @method == 'DELETE' request = Net::HTTP::Delete.new(response.url, @headers) elsif @method == 'GET' request = Net::HTTP::Get.new(response.url, @headers) elsif @method == 'HEAD' request = Net::HTTP::Head.new(response.url, @headers) elsif @method == 'LOCK' request = Net::HTTP::Lock.new(response.url, @headers) elsif @method == 'MKCOL' request = Net::HTTP::Mkcol.new(response.url, @headers) elsif @method == 'MOVE' request = Net::HTTP::Move.new(response.url, @headers) elsif @method == 'OPTIONS' request = Net::HTTP::Options.new(response.url, @headers) elsif @method == 'PATCH' request = Net::HTTP::Patch.new(response.url, @headers) elsif @method == 'POST' request = Net::HTTP::Post.new(response.url, @headers) elsif @method == 'PROPFIND' request = Net::HTTP::Propfind.new(response.url, @headers) elsif @method == 'PROPPATCH' request = Net::HTTP::Proppatch.new(response.url, @headers) elsif @method == 'PUT' request = Net::HTTP::Put.new(response.url, @headers) elsif @method == 'TRACE' request = Net::HTTP::Trace.new(response.url, @headers) elsif @method == 'UNLOCK' request = Net::HTTP::Unlock.new(response.url, @headers) else raise ArgumentError, "Invalid HTTP method #{@method}" end if @body_handler != nil && @body_handler.type == "FormData" request.set_form_data(response.request) else request.body = response.request end http_response = http.request(request) } response.status = http_response.code.to_i if response.status < 200 || response.status > 299 if http_response.class.body_permitted? && !http_response.body.nil? && http_response.body.size > 0 && @error_response_handler != nil response.error_response = @error_response_handler.call(http_response.body) end elsif http_response.class.body_permitted? && !http_response.body.nil? && http_response.body.size > 0 && @success_response_handler != nil response.success_response = @success_response_handler.call(http_response.body) end rescue Exception => e response.status = -1 response.exception = e # e.backtrace.each {|l| p l} end response end
header(name, value)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 197 def header(name, value) @headers[name] = value self end
headers(headers)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 202 def headers(headers) @headers.merge!(headers) self end
patch()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 207 def patch @method = 'PATCH' self end
post()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 212 def post @method = 'POST' self end
put()
click to toggle source
# File lib/fusionauth/rest_client.rb, line 217 def put @method = 'PUT' self end
read_timeout(read_timeout)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 73 def read_timeout(read_timeout) @read_timeout = read_timeout self end
success_response_handler(success_response_handler)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 222 def success_response_handler(success_response_handler) @success_response_handler = success_response_handler self end
uri(uri)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 227 def uri(uri) if @url.size == 0 self end if @url[@url.size - 1] == '/' && uri[0] == '/' @url<<uri[1..uri.size] elsif @url[@url.size - 1] != '/' && uri[0] != '/' @url<<"/#{uri}" else @url<<uri end self end
url(url)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 243 def url(url) @url = url.dup self end
url_parameter(name, value)
click to toggle source
Add a URL parameter as a key value pair.
@param name [String] The URL parameter name. @param value [String} ]The url parameter value. The <code>.toString()</ code> method will be used to
get the <code>String</code> used in the URL parameter. If the object type is a @link Collection} a key value pair will be added for each value in the collection. @link ZonedDateTime} will also be handled uniquely in that the <code>long</ code> will be used to set in the request using <code>ZonedDateTime.toInstant().toEpochMilli()</code>
@return This.
# File lib/fusionauth/rest_client.rb, line 259 def url_parameter(name, value) if value == nil return self end if value.is_a? Array @parameters[name] = value else values = @parameters[name] if values == nil values = [] @parameters[name] = values end values<<value end self end
url_segment(value)
click to toggle source
Append a url path segment. <p> For Example: <pre> .url("http://www.foo.com ") .urlSegment(" bar ") </pre> This will result in a url of <code>http://www.foo.com/bar</code> @param value The url path segment. A nil value will be ignored. @return This.
/
# File lib/fusionauth/rest_client.rb, line 289 def url_segment(value) if value == nil return self end if @url[@url.size - 1] != '/' @url<<'/' end @url<<value self end
Private Instance Methods
to_http_uri(uri)
click to toggle source
# File lib/fusionauth/rest_client.rb, line 303 def to_http_uri(uri) uri.path + (uri.query == nil ? '' : "?#{uri.query}") end