Class: MaxCDN::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/maxcdn.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(company_alias, key, secret, server = "rws.maxcdn.com", _debug = false) ⇒ Client

Returns a new instance of Client.



13
14
15
16
17
18
19
20
21
22
# File 'lib/maxcdn.rb', line 13

def initialize(company_alias, key, secret, server="rws.maxcdn.com", _debug=false)
  @debug = _debug
  @company_alias = company_alias
  @server = server
  @request_signer = Signet::OAuth1::Client.new(
    :client_credential_key => key,
    :client_credential_secret => secret,
    :two_legged => true
  )
end

Instance Attribute Details

#clientObject

Returns the value of attribute client.



12
13
14
# File 'lib/maxcdn.rb', line 12

def client
  @client
end

#debugObject

Returns the value of attribute debug.



12
13
14
# File 'lib/maxcdn.rb', line 12

def debug
  @debug
end

Instance Method Details

#_connection_typeObject



24
25
26
# File 'lib/maxcdn.rb', line 24

def _connection_type
  "https"
end

#_get_url(uri, params = {}) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/maxcdn.rb', line 28

def _get_url uri, params={}
  url = "#{_connection_type}://#{@server}/#{@company_alias}/#{uri.gsub(/^\//, "")}"
  if params and not params.empty?
    url += "?#{params.to_params}"
  end

  url
end

#_response_as_json(method, uri, options = {}, data = {}) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/maxcdn.rb', line 37

def _response_as_json method, uri, options={}, data={}
  puts "Making #{method.upcase} request to #{_get_url uri}" if debug

  req_opts = {
    :method => method
  }

  req_opts[:uri]  = _get_url(uri, (options[:body] ? {} : data))
  req_opts[:body] = data.to_params if options[:body]

  request = @request_signer.generate_authenticated_request(req_opts)
  request.headers["User-Agent"] = "Ruby MaxCDN API Client"

  begin
    curb_opts = {
      :url => req_opts[:uri],
      :headers => request.headers
    }

    CurbFu.debug = debug

    response = CurbFu.send method, curb_opts, request.body do |curb|
      curb.verbose = debug

      # Because CurbFu overwrite the content-type header passed
      # to it
      curb.headers["Content-Type"] = "application/json" if request.body
    end

    pp response if debug

    response_json = JSON.load(response.body)

    pp response_json if debug

    unless response.success? or response.redirect?
      error_message = response_json["error"]["message"]
      raise MaxCDN::APIException.new("#{response.status}: #{error_message}")
    end
  rescue TypeError
    raise MaxCDN::APIException.new("#{response.status}: No information supplied by the server")
  end

  response_json
end

#purge(zone_id, file_or_files = nil, options = {}) ⇒ Object



90
91
92
93
94
95
96
97
# File 'lib/maxcdn.rb', line 90

def purge zone_id, file_or_files=nil, options={}
  unless file_or_files.nil?
    return self.delete("/zones/pull.json/#{zone_id}/cache",
             { "files" => file_or_files }, options)
  end

  self.delete("/zones/pull.json/#{zone_id}/cache", {}, options)
end