class AkamaiRSpec::Request
Attributes
debug_headers[RW]
network[RW]
prod_domain[RW]
stg_domain[RW]
Public Class Methods
add_debug_header(key, value)
click to toggle source
# File lib/akamai_rspec/request.rb, line 26 def self.add_debug_header(key, value) self.debug_headers["#{key}"] = value end
get(url, headers={})
click to toggle source
# File lib/akamai_rspec/request.rb, line 30 def self.get(url, headers={}) new.get(url, headers.merge(debug_headers)) end
get_cache_miss(url)
click to toggle source
# File lib/akamai_rspec/request.rb, line 38 def self.get_cache_miss(url) url += url.include?('?') ? '&' : '?' url += SecureRandom.hex get(url) end
get_decode(url)
click to toggle source
# File lib/akamai_rspec/request.rb, line 44 def self.get_decode(url) response = new.get(url, debug_headers.merge({'Accept-Encoding' => 'gzip'})) RestClient::Request.decode(response.headers[:content_encoding], response.body) response end
get_without_debug_headers(url, headers={})
click to toggle source
# File lib/akamai_rspec/request.rb, line 34 def self.get_without_debug_headers(url, headers={}) new.get(url, headers) end
new()
click to toggle source
# File lib/akamai_rspec/request.rb, line 50 def initialize @domain = case self.class.network.downcase when 'staging' self.class.stg_domain or raise ArgumentError.new( "You must set the staging domain: AkamaiRSpec::Request.stg_domain = 'www.example.com.edgesuite.net'" ) else self.class.prod_domain or raise ArgumentError.new( "You must set the prod domain: AkamaiRSpec::Request.prod_domain = 'www.example.com.edgesuite.net'" ) end @rest_client = RestClient::Request.new( method: :get, url: 'fakeurl.com', verify_ssl: false ) end
Public Instance Methods
build_request(uri, headers)
click to toggle source
# File lib/akamai_rspec/request.rb, line 99 def build_request(uri, headers) req = Net::HTTP::Get.new(uri) headers.each { |key, value| req[key] = value } req end
get(url, headers = {})
click to toggle source
# File lib/akamai_rspec/request.rb, line 71 def get(url, headers = {}) # DO NOT USE url.is_a? here - some versions of # the JSON gem monkey patch String which causes it to match. if url.class.ancestors.include? RestClient::Response return AkamaiRSpec::Response.new(url) end if url.class.ancestors.include? AkamaiRSpec::Response return url end uri = parse_url_with_auth(url) req = build_request(uri, stringify_headers(headers)) req['Host'] = uri.hostname uri.hostname = @domain net = Net::HTTP.new(uri.hostname, uri.port) if uri.scheme == 'https' net.use_ssl = true net.verify_mode = OpenSSL::SSL::VERIFY_NONE end response = net.request(req, nil) AkamaiRSpec::Response.new(response) end