Class: Fastly::Client

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

Overview

The UserAgent to communicate with the API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Client

Returns a new instance of Client.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/fastly/client.rb', line 11

def initialize(opts)
  @api_key  = opts.fetch(:api_key, nil)
  @user     = opts.fetch(:user, nil)
  @password = opts.fetch(:password, nil)
  @customer = opts.fetch(:customer, nil)

  base    = opts.fetch(:base_url, 'https://api.fastly.com')
  uri     = URI.parse(base)
  options = if uri.is_a? URI::HTTPS
              {
                use_ssl: true,
                verify_mode: OpenSSL::SSL::VERIFY_PEER
              }
            else
              {}
            end

  @http = Net::HTTP.start(uri.host, uri.port, options)

  return self unless fully_authed?

  # If full auth creds (user/pass) then log in and set a cookie
  resp = http.post('/login', make_params(user: user, password: password))

  if resp.kind_of?(Net::HTTPSuccess)
    @cookie = resp['Set-Cookie']
  else
    fail Unauthorized, "Invalid auth credentials. Check username/password."
  end

  self
end

Instance Attribute Details

#api_keyObject

:nodoc: all



9
10
11
# File 'lib/fastly/client.rb', line 9

def api_key
  @api_key
end

:nodoc: all



9
10
11
# File 'lib/fastly/client.rb', line 9

def cookie
  @cookie
end

#customerObject

:nodoc: all



9
10
11
# File 'lib/fastly/client.rb', line 9

def customer
  @customer
end

#httpObject

:nodoc: all



9
10
11
# File 'lib/fastly/client.rb', line 9

def http
  @http
end

#passwordObject

:nodoc: all



9
10
11
# File 'lib/fastly/client.rb', line 9

def password
  @password
end

#userObject

:nodoc: all



9
10
11
# File 'lib/fastly/client.rb', line 9

def user
  @user
end

Instance Method Details

#authed?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/fastly/client.rb', line 53

def authed?
  !api_key.nil? || fully_authed?
end

#delete(path) ⇒ Object



88
89
90
91
# File 'lib/fastly/client.rb', line 88

def delete(path)
  resp  = http.delete(path, headers)
  resp.kind_of?(Net::HTTPSuccess)
end

#fully_authed?Boolean

Some methods require full username and password rather than just auth token

Returns:

  • (Boolean)


58
59
60
# File 'lib/fastly/client.rb', line 58

def fully_authed?
  !(user.nil? || password.nil?)
end

#get(path, params = {}) ⇒ Object



62
63
64
65
66
67
# File 'lib/fastly/client.rb', line 62

def get(path, params = {})
  path += "?#{make_params(params)}" unless params.empty?
  resp  = http.get(path, headers)
  fail Error, resp.body unless resp.kind_of?(Net::HTTPSuccess)
  JSON.parse(resp.body)
end

#get_stats(path, params = {}) ⇒ Object



69
70
71
72
73
74
75
76
77
78
# File 'lib/fastly/client.rb', line 69

def get_stats(path, params = {})
  resp = get(path, params)

  # return meta data, not just the actual stats data
  if resp['status'] == 'success'
    resp
  else
    fail Error, resp['msg']
  end
end

#post(path, params = {}) ⇒ Object



80
81
82
# File 'lib/fastly/client.rb', line 80

def post(path, params = {})
  post_and_put(:post, path, params)
end

#put(path, params = {}) ⇒ Object



84
85
86
# File 'lib/fastly/client.rb', line 84

def put(path, params = {})
  post_and_put(:put, path, params)
end

#require_key!Object



44
45
46
47
# File 'lib/fastly/client.rb', line 44

def require_key!
  raise Fastly::KeyAuthRequired.new("This request requires an API key") if api_key.nil?
  @require_key = true
end

#require_key?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/fastly/client.rb', line 49

def require_key?
  !!@require_key
end