Class: Fastly

Inherits:
Object
  • Object
show all
Includes:
Fetcher
Defined in:
lib/fastly.rb,
lib/fastly/vcl.rb,
lib/fastly/base.rb,
lib/fastly/user.rb,
lib/fastly/match.rb,
lib/fastly/client.rb,
lib/fastly/domain.rb,
lib/fastly/origin.rb,
lib/fastly/syslog.rb,
lib/fastly/backend.rb,
lib/fastly/fetcher.rb,
lib/fastly/invoice.rb,
lib/fastly/service.rb,
lib/fastly/version.rb,
lib/fastly/customer.rb,
lib/fastly/director.rb,
lib/fastly/settings.rb,
lib/fastly/healthcheck.rb,
lib/fastly/belongs_to_service_and_version.rb

Overview

A client library for interacting with the Fastly web acceleration service

Defined Under Namespace

Modules: Fetcher Classes: AuthRequired, Backend, Base, BelongsToServiceAndVersion, Client, Customer, Director, Domain, Error, FullAuthRequired, Healthcheck, Invoice, Match, Origin, Service, Settings, Syslog, Unauthorized, User, VCL, Version

Constant Summary collapse

VERSION =

The current version of the library

"0.98"

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Fetcher

#client, #create, #delete, #get, #list, #update

Constructor Details

#initialize(opts) ⇒ Fastly

Create a new Fastly client. Options are

user

your Fastly login

password

your Fastly password

api_key

your Fastly api key

You only need to pass in C<api_key> OR C<user> and C<password>.

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



41
42
43
44
# File 'lib/fastly.rb', line 41

def initialize(opts)
  self.client(opts)
  self
end

Class Method Details

.get_options(*files) ⇒ Object

Tries to load options from the file passed in using, C<load_options>, stopping when it finds the first one.

Then it overrides those options with command line options of the form

--<key>=<value>


434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
# File 'lib/fastly.rb', line 434

def self.get_options(*files)
  options = {}
  files.each do |file|
    next unless File.exist?(file)
    options = load_config(file)
    break
  end

  while (ARGV.size>0 && ARGV[0] =~ /^-+(\w+)\=(\w+)$/) do
    options[$1.to_sym] = $2;
    @ARGV.shift;
  end
  raise"Couldn't find options from command line arguments or #{files.join(', ')}" unless options.size>0
  options;
end

.load_config(file) ⇒ Object

Attempts to load various config options in the form

<key> = <value>

From a file.

Skips whitespace and lines starting with C<#>.



407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
# File 'lib/fastly.rb', line 407

def self.load_config(file)
  options = {}
  return options unless File.exist?(file)

  File.open(file, "r") do |infile|
    while (line = infile.gets) do
      line.chomp!
      next if     line =~ /^#/;
      next if     line =~ /^\s*$/;
      next unless line =~ /=/;
      line.strip!
      key, val = line.split(/\s*=\s*/, 2)
      options[key.to_sym] = val;
    end
  end
  options;
end

Instance Method Details

#authed?Boolean

Whether or not we’re authed at all by either username & password or API key

Returns:

  • (Boolean)


47
48
49
# File 'lib/fastly.rb', line 47

def authed?
  client.authed?
end

#commandsObject

Return a hash representing all commands available.

Useful for information.



73
74
75
# File 'lib/fastly.rb', line 73

def commands 
  client.get('/commands')
end

#current_customerObject

Return a Customer object representing the customer of the current logged in user.



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

def current_customer
  raise Fastly::AuthRequired unless self.authed?
  @current_customer ||= get(Customer)
end

#current_userObject

Return a User object representing the current logged in user. NOTE: requires you to be fully authed - will not work with only an API key



65
66
67
68
# File 'lib/fastly.rb', line 65

def current_user
  raise Fastly::FullAuthRequired unless self.fully_authed?
  @current_user ||= get(User)
end

#fully_authed?Boolean

Whether or not we’re fully (username and password) authed Some methods require full username and password rather than just auth token

Returns:

  • (Boolean)


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

def fully_authed?
  client.fully_authed?
end

#get_invoice(year = nil, month = nil) ⇒ Object

Return an array of Invoice objects representing invoices for all services.

If a year and month are passed in returns the invoices for that whole month.

Otherwise it returns the invoices for the current month so far.



97
98
99
100
101
102
103
104
# File 'lib/fastly/invoice.rb', line 97

def get_invoice(year=nil, month=nil)
  opts = {}
  unless year.nil? || month.nil?
    opts[:year]  = year
    opts[:month] = month
  end
  get(Fastly::Invoice, opts)
end

#get_settings(service, number) ⇒ Object

Get the Settings object for the specified Version



61
62
63
# File 'lib/fastly/settings.rb', line 61

def get_settings(service, number)
  get(Fastly::Settings, service, number)
end

#purge(path) ⇒ Object

Purge the specified path from your cache.



78
79
80
81
# File 'lib/fastly.rb', line 78

def purge(path)
  res = client.post("/purge/#{path}")
  #res = client.post("/purge/", :path => path)
end

#search_services(opts) ⇒ Object

Search all the services that the current customer has.

In general you’ll want to do

services = fastly.search_services(:name => name)

or

service = fastly.search_services(:name => name, :version => number)


106
107
108
109
110
111
# File 'lib/fastly/service.rb', line 106

def search_services(opts)
  klass = Fastly::Service
  hash  = client.get(klass.post_path+"/search", opts)
  return nil if hash.nil?
  klass.new(hash, self)
end

#update_settings(opts = {}) ⇒ Object

Update the Settings object for the specified Version



66
67
68
# File 'lib/fastly/settings.rb', line 66

def update_settings(opts={})
  update(Fastly::Settings, opts)
end