class Stupeflix::Connection
Public Class Methods
new(server, base_url)
click to toggle source
# File lib/stupeflix/connection.rb, line 6 def initialize(server, base_url) @server = server @base_url = base_url @MAX_NETWORK_RETRY = 1 @debuglevel = 0 end
Public Instance Methods
dump( message, request_uri, method)
click to toggle source
# File lib/stupeflix/connection.rb, line 35 def dump( message, request_uri, method) if @debuglevel > 0 print message, " " , time.asctime, " " , request_uri, "\n" end end
fetch(uri_str, limit = 10)
click to toggle source
# File lib/stupeflix/connection.rb, line 45 def fetch(uri_str, limit = 10) # You should choose better exception. raise ArgumentError, 'HTTP redirect too deep' if limit == 0 response = Net::HTTP.get_response(URI.parse(uri_str)) case response when Net::HTTPSuccess then response when Net::HTTPRedirection then fetch(response['location'], limit - 1) else response.error! end end
request( resource, method = "get", args = nil, body = nil, filename=nil, headers={}, sendcallback = nil)
click to toggle source
# File lib/stupeflix/connection.rb, line 59 def request( resource, method = "get", args = nil, body = nil, filename=nil, headers={}, sendcallback = nil) params = nil path = resource headers ||= {} headers['User-Agent'] = 'Basic Agent' if method != "get" if !body and filename bodystream = File.open(filename, 'r') end end path += "?" + urllib.urlencode(args) if args url = "http://#{@server}#{@base_url}#{path}" dump("Connection Request starting", path, method.upcase) for i in 0..@MAX_NETWORK_RETRY begin # http.set_debug_output $stdout # headers['Expect'] = '100-Continue' response = nil while true url = URI.parse(url) request = request_method(method).new(url.path + "?" + url.query, headers) if bodystream request.body_stream = bodystream elsif body request.body = body end http = Net::HTTP.new(url.host, url.port) result = http.start {|http| response = http.request(request) } case response when Net::HTTPRedirection then url = response['location'] else break end end break rescue StandardError => e if i == (@MAX_NETWORK_RETRY - 1) raise end end end response["status"] = response.code.to_s return {'headers' => response, 'body' => response.body} end
request_delete( resource, args = nil, headers={})
click to toggle source
# File lib/stupeflix/connection.rb, line 17 def request_delete( resource, args = nil, headers={}) return request(resource, "delete", args, headers=headers) end
request_get( resource, args = nil, headers={})
click to toggle source
# File lib/stupeflix/connection.rb, line 13 def request_get( resource, args = nil, headers={}) return request(resource, "get", args, body = nil, filename = nil, headers=headers) end
request_head( resource, args = nil, headers={})
click to toggle source
# File lib/stupeflix/connection.rb, line 21 def request_head( resource, args = nil, headers={}) return request(resource, "head", args, headers=headers) end
request_method(verb)
click to toggle source
# File lib/stupeflix/connection.rb, line 41 def request_method(verb) Net::HTTP.const_get(verb.to_s.capitalize) end
request_post( resource, args = nil, body = nil, filename=nil, headers={})
click to toggle source
# File lib/stupeflix/connection.rb, line 25 def request_post( resource, args = nil, body = nil, filename=nil, headers={}) return request(resource, "post", args , body = body, filename=filename, headers=headers) end
request_put(resource, args = nil, body = nil, filename=nil, headers={}, sendcallback = nil)
click to toggle source
# File lib/stupeflix/connection.rb, line 29 def request_put(resource, args = nil, body = nil, filename=nil, headers={}, sendcallback = nil) dump("In request_put in connection", resource, "PUT") resp = request(resource, "put", args , body = body, filename=filename, headers=headers, sendcallback = sendcallback) return resp end