Class: Io::Flow::Reference::V0::HttpClient::Request
- Inherits:
-
Object
- Object
- Io::Flow::Reference::V0::HttpClient::Request
- Defined in:
- lib/io_flow_reference_v0.rb
Defined Under Namespace
Classes: PATCH
Instance Attribute Summary collapse
-
#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.
724 725 726 727 728 729 730 731 732 733 |
# File 'lib/io_flow_reference_v0.rb', line 724 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) @params = nil @body = nil @auth = nil @headers = {} @header_keys_lower_case = [] end |
Instance Attribute Details
#path ⇒ Object (readonly)
Returns the value of attribute path.
722 723 724 |
# File 'lib/io_flow_reference_v0.rb', line 722 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
781 782 783 |
# File 'lib/io_flow_reference_v0.rb', line 781 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 |
# File 'lib/io_flow_reference_v0.rb', line 805 def do_request(klass) Preconditions.assert_class('klass', klass, Class) uri = path.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
777 778 779 |
# File 'lib/io_flow_reference_v0.rb', line 777 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
785 786 787 |
# File 'lib/io_flow_reference_v0.rb', line 785 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
801 802 803 |
# File 'lib/io_flow_reference_v0.rb', line 801 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
789 790 791 |
# File 'lib/io_flow_reference_v0.rb', line 789 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
793 794 795 |
# File 'lib/io_flow_reference_v0.rb', line 793 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
745 746 747 748 749 750 751 752 753 754 755 |
# File 'lib/io_flow_reference_v0.rb', line 745 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
771 772 773 774 775 |
# File 'lib/io_flow_reference_v0.rb', line 771 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
735 736 737 738 739 740 741 742 743 |
# File 'lib/io_flow_reference_v0.rb', line 735 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
766 767 768 769 |
# File 'lib/io_flow_reference_v0.rb', line 766 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
757 758 759 760 761 762 |
# File 'lib/io_flow_reference_v0.rb', line 757 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |