class SabredavClient::Request
Attributes
client[R]
http[R]
path[RW]
request[R]
Public Class Methods
new(method, client, path)
click to toggle source
# File lib/sabredav_client/request.rb, line 6 def initialize(method, client, path) @client = client @path = "#{client.base_path}/#{path}" @http = build_http @request = build_request(method) add_auth end
Public Instance Methods
add_body(body)
click to toggle source
# File lib/sabredav_client/request.rb, line 15 def add_body(body) request.body = body end
add_header(data)
click to toggle source
# File lib/sabredav_client/request.rb, line 19 def add_header(data) request['Content-Length'] = data[:content_length] if data[:content_length] request['If-Match'] = data[:if_match] if data[:if_match] request['Content-Type'] = data[:content_type] if data[:content_type] request['DAV'] = data[:dav] if data[:dav] end
run()
click to toggle source
# File lib/sabredav_client/request.rb, line 26 def run @http.request(request) end
Private Instance Methods
add_auth()
click to toggle source
# File lib/sabredav_client/request.rb, line 72 def add_auth unless client.authtype == 'digest' request.basic_auth client.user, client.password else request.add_field 'Authorization', digestauth(method.to_s.upcase) end end
build_http()
click to toggle source
# File lib/sabredav_client/request.rb, line 32 def build_http unless client.proxy_uri http = Net::HTTP.new(client.host, client.port) else http = Net::HTTP.new(client.host, client.port, client.proxy_host, client.proxy_port) end if client.ssl http.use_ssl = client.ssl http.verify_mode = OpenSSL::SSL::VERIFY_NONE end http end
build_request(method)
click to toggle source
# File lib/sabredav_client/request.rb, line 47 def build_request(method) case method when :get Net::HTTP::Get.new(path) when :post Net::HTTP::Post.new(path) when :put Net::HTTP::Put.new(path) when :delete Net::HTTP::Delete.new(path) when :propfind Net::HTTP::Propfind.new(path) when :proppatch Net::HTTP::Proppatch.new(path) when :report Net::HTTP::Report.new(path) when :mkcalendar Net::HTTP::Mkcalendar.new(path) when :mkcol Net::HTTP::Mkcol.new(path) else raise SabredavClient::Errors::HTTPMethodNotSupportedError, method end end
digestauth()
click to toggle source
# File lib/sabredav_client/request.rb, line 80 def digestauth h = Net::HTTP.new client.duri.host, client.duri.port if client.ssl h.use_ssl = client.ssl h.verify_mode = OpenSSL::SSL::VERIFY_NONE end req = Net::HTTP::Get.new client.duri.request_uri res = h.request req # res is a 401 response with a WWW-Authenticate header auth = client.digest_auth.auth_header client.duri, res['www-authenticate'], method return auth end