Guest User

Untitled

a guest
May 19th, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. require 'net/http'
  2.  
  3. module REST
  4. class Connection
  5. def initialize(base_url, args = {})
  6. @base_url = base_url
  7. @username = args[:username]
  8. @password = args[:password]
  9. end
  10.  
  11. def request_get(resource, args = nil)
  12. request(resource, "get", args)
  13. end
  14.  
  15. def request_post(resource, args = nil)
  16. request(resource, "post", args)
  17. end
  18.  
  19. def request_put(resource, args = nil)
  20. request(resource, "put", args)
  21. end
  22.  
  23. def request(resource, method = "get", args = nil)
  24. url = URI.join(@base_url, resource)
  25. if args
  26. # TODO: What about keys without value?
  27. url.query = args.map { |k,v| "%s=%s" % [URI.encode(k.to_s), URI.encode(v)] }.join("&")
  28. end
  29.  
  30. case method
  31. when "get"
  32. req = Net::HTTP::Get.new(url.request_uri)
  33. when "post"
  34. req = Net::HTTP::Post.new(url.request_uri)
  35. when "put"
  36. req = Net::HTTP::Put.new(url.request_uri)
  37. end
  38.  
  39. if @username and @password
  40. req.basic_auth(@username, @password)
  41. end
  42.  
  43. http = Net::HTTP.new(url.host, url.port)
  44. #http.use_ssl = (url.port == 443)
  45. res = http.start() { |conn| conn.request(req) }
  46. res.body
  47. end
  48. end
  49. end
Add Comment
Please, Sign In to add comment