Class: Io::Flow::Reference::V0::HttpClient::Request
- Inherits:
-
Object
- Object
- Io::Flow::Reference::V0::HttpClient::Request
- Defined in:
- lib/flow_reference_v0_client.rb
Defined Under Namespace
Classes: PATCH
Instance Attribute Summary collapse
-
#base_uri ⇒ Object
readonly
Returns the value of attribute base_uri.
-
#full_uri ⇒ Object
readonly
Returns the value of attribute full_uri.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
- #delete(&block) ⇒ Object
- #do_request(klass) ⇒ Object
- #get(&block) ⇒ Object
-
#initialize(http_handler, base_uri, path) ⇒ Request
constructor
A new instance of Request.
- #options(&block) ⇒ Object
- #patch(&block) ⇒ Object
- #post(&block) ⇒ Object
- #put(&block) ⇒ Object
- #with_auth(auth) ⇒ Object
- #with_body(body) ⇒ Object
- #with_header(name, value) ⇒ Object
-
#with_json(json) ⇒ Object
Wrapper to set Content-Type header to application/json and set the provided json document as the body.
- #with_query(params) ⇒ Object
Constructor Details
#initialize(http_handler, base_uri, path) ⇒ Request
Returns a new instance of Request.
991 992 993 994 995 996 997 998 999 1000 1001 |
# File 'lib/flow_reference_v0_client.rb', line 991 def initialize(http_handler, base_uri, path) @http_handler = http_handler @base_uri = Preconditions.assert_class('base_uri', base_uri, URI) @path = Preconditions.assert_class('path', path, String) @full_uri = @base_uri.to_s + @path @params = nil @body = nil @auth = nil @headers = {} @header_keys_lower_case = [] end |
Instance Attribute Details
#base_uri ⇒ Object (readonly)
Returns the value of attribute base_uri.
989 990 991 |
# File 'lib/flow_reference_v0_client.rb', line 989 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
989 990 991 |
# File 'lib/flow_reference_v0_client.rb', line 989 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
989 990 991 |
# File 'lib/flow_reference_v0_client.rb', line 989 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
1049 1050 1051 |
# File 'lib/flow_reference_v0_client.rb', line 1049 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 |
# File 'lib/flow_reference_v0_client.rb', line 1073 def do_request(klass) Preconditions.assert_class('klass', klass, Class) uri = @full_uri.dup if q = to_query(@params) uri += "?%s" % q end request = klass.send(:new, uri) curl = ['curl'] if klass != Net::HTTP::Get curl << "-X%s" % klass.name.split("::").last.upcase end if @body # DEBUG path = "/tmp/rest_client.tmp" # DEBUG File.open(path, "w") { |os| os << @body.to_s } # DEBUG curl << "-d@%s" % path request.body = @body end if @auth curl << "-u \"%s:%s\"" % [@auth.username, @auth.password] Preconditions.check_state(!@header_keys_lower_case.include?("authorization"), "Cannot specify both an Authorization header and an auth instance") user_pass = "%s:%s" % [@auth.username, @auth.password] encoded = Base64.encode64(user_pass).to_s.split("\n").map(&:strip).join request.add_field("Authorization", "Basic %s" % encoded) end @headers.each { |key, value| curl << "-H \"%s: %s\"" % [key, value] request.add_field(key, value) } curl << "'%s%s'" % [@base_uri, path] # DEBUG puts curl.join(" ") raw_response = @http_handler.instance(@base_uri, request.path).execute(request) response = raw_response.to_s == "" ? nil : JSON.parse(raw_response) if block_given? yield response else response end end |
#get(&block) ⇒ Object
1045 1046 1047 |
# File 'lib/flow_reference_v0_client.rb', line 1045 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
1053 1054 1055 |
# File 'lib/flow_reference_v0_client.rb', line 1053 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
1069 1070 1071 |
# File 'lib/flow_reference_v0_client.rb', line 1069 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
1057 1058 1059 |
# File 'lib/flow_reference_v0_client.rb', line 1057 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
1061 1062 1063 |
# File 'lib/flow_reference_v0_client.rb', line 1061 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 |
# File 'lib/flow_reference_v0_client.rb', line 1013 def with_auth(auth) Preconditions.assert_class('auth', auth, HttpClient::Authorization) Preconditions.check_state(@auth.nil?, "auth previously set") if auth.scheme.name == AuthScheme::BASIC.name @auth = auth else raise "Auth Scheme[#{auth.scheme.name}] not supported" end self end |
#with_body(body) ⇒ Object
1039 1040 1041 1042 1043 |
# File 'lib/flow_reference_v0_client.rb', line 1039 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
1003 1004 1005 1006 1007 1008 1009 1010 1011 |
# File 'lib/flow_reference_v0_client.rb', line 1003 def with_header(name, value) Preconditions.check_not_blank('name', name, "Header name is required") Preconditions.check_not_blank('value', value, "Header value is required") Preconditions.check_state(!@headers.has_key?(name), "Duplicate header named[%s]" % name) @headers[name] = value @header_keys_lower_case << name.downcase self end |
#with_json(json) ⇒ Object
Wrapper to set Content-Type header to application/json and set the provided json document as the body
1034 1035 1036 1037 |
# File 'lib/flow_reference_v0_client.rb', line 1034 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
1025 1026 1027 1028 1029 1030 |
# File 'lib/flow_reference_v0_client.rb', line 1025 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |