Class: Fastly::Client
- Inherits:
-
Object
- Object
- Fastly::Client
- Defined in:
- lib/fastly/client.rb
Overview
The UserAgent to communicate with the API
Instance Attribute Summary collapse
-
#api_key ⇒ Object
:nodoc: all.
-
#cookie ⇒ Object
:nodoc: all.
-
#customer ⇒ Object
:nodoc: all.
-
#http ⇒ Object
:nodoc: all.
-
#password ⇒ Object
:nodoc: all.
-
#user ⇒ Object
:nodoc: all.
Instance Method Summary collapse
- #authed? ⇒ Boolean
- #delete(path) ⇒ Object
-
#fully_authed? ⇒ Boolean
Some methods require full username and password rather than just auth token.
- #get(path, params = {}) ⇒ Object
- #get_stats(path, params = {}) ⇒ Object
-
#initialize(opts) ⇒ Client
constructor
A new instance of Client.
- #post(path, params = {}) ⇒ Object
- #put(path, params = {}) ⇒ Object
- #require_key! ⇒ Object
- #require_key? ⇒ Boolean
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) = 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, ) 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) = resp['Set-Cookie'] else fail , "Invalid auth credentials. Check username/password." end self end |
Instance Attribute Details
#api_key ⇒ Object
:nodoc: all
9 10 11 |
# File 'lib/fastly/client.rb', line 9 def api_key @api_key end |
#cookie ⇒ Object
:nodoc: all
9 10 11 |
# File 'lib/fastly/client.rb', line 9 def end |
#customer ⇒ Object
:nodoc: all
9 10 11 |
# File 'lib/fastly/client.rb', line 9 def customer @customer end |
#http ⇒ Object
:nodoc: all
9 10 11 |
# File 'lib/fastly/client.rb', line 9 def http @http end |
#password ⇒ Object
:nodoc: all
9 10 11 |
# File 'lib/fastly/client.rb', line 9 def password @password end |
#user ⇒ Object
:nodoc: all
9 10 11 |
# File 'lib/fastly/client.rb', line 9 def user @user end |
Instance Method Details
#authed? ⇒ 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
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
49 50 51 |
# File 'lib/fastly/client.rb', line 49 def require_key? !!@require_key end |