Class: Fastly
- Inherits:
-
Object
- Object
- Fastly
- Includes:
- Fetcher
- Defined in:
- lib/fastly.rb,
lib/fastly/acl.rb,
lib/fastly/vcl.rb,
lib/fastly/base.rb,
lib/fastly/gzip.rb,
lib/fastly/user.rb,
lib/fastly/util.rb,
lib/fastly/match.rb,
lib/fastly/client.rb,
lib/fastly/domain.rb,
lib/fastly/header.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/acl_entry.rb,
lib/fastly/condition.rb,
lib/fastly/dictionary.rb,
lib/fastly/s3_logging.rb,
lib/fastly/gem_version.rb,
lib/fastly/healthcheck.rb,
lib/fastly/cache_setting.rb,
lib/fastly/dictionary_item.rb,
lib/fastly/request_setting.rb,
lib/fastly/response_object.rb,
lib/fastly/papertrail_logging.rb,
lib/fastly/belongs_to_service_and_version.rb
Overview
The current version of the library
Defined Under Namespace
Modules: Fetcher, Util Classes: ACL, ACLEntry, AdminRequired, AuthRequired, Backend, Base, BelongsToServiceAndVersion, CacheSetting, Client, Condition, Customer, Dictionary, DictionaryItem, Director, Domain, Error, FullAuthRequired, Gzip, Header, Healthcheck, Invoice, KeyAuthRequired, Match, PapertrailLogging, RequestSetting, ResponseObject, S3Logging, Service, Settings, Syslog, Unauthorized, User, VCL, Version
Constant Summary collapse
- VERSION =
"1.10.0"
Class Method Summary collapse
-
.get_options(*files) ⇒ Object
Tries to load options from the file passed in using, C<load_options>, stopping when it finds the first one.
-
.load_config(file) ⇒ Object
Attempts to load various config options in the form.
Instance Method Summary collapse
-
#authed? ⇒ Boolean
Whether or not we’re authed at all by either username & password or API key.
-
#current_customer ⇒ Object
Return a Customer object representing the customer of the current logged in user.
-
#current_user ⇒ Object
Return a User object representing the current logged in user.
-
#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.
-
#get_invoice(year = nil, month = nil) ⇒ Object
Return an array of Invoice objects representing invoices for all services.
-
#get_settings(service, number) ⇒ Object
Get the Settings object for the specified Version.
-
#initialize(opts) ⇒ Fastly
constructor
Create a new Fastly client.
-
#purge(url, soft = false) ⇒ Object
Purge the specified path from your cache.
-
#regions ⇒ Object
Fetches the list of codes for regions that are covered by the Fastly CDN service.
-
#search_services(opts) ⇒ Object
Search all the services that the current customer has.
-
#stats(opts) ⇒ Object
Fetches historical stats for each of your fastly services and groups the results by service id.
-
#update_settings(opts = {}) ⇒ Object
Update the Settings object for the specified Version.
-
#usage(opts) ⇒ Object
Returns usage information aggregated across all Fastly services and grouped by region.
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.
51 52 53 54 55 56 57 58 |
# File 'lib/fastly.rb', line 51 def initialize(opts) if opts[:api_key].nil? && (opts[:password].nil? || opts[:user].nil?) raise ArgumentError, "Required options missing. Please pass either ':api_key' or both ':user' and ':password'." end 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>
692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 |
# File 'lib/fastly.rb', line 692 def self.(*files) = {} files.each do |file| next unless File.exist?(file) = load_config(file) break end while ARGV.size > 0 && ARGV[0] =~ /^-+(\w+)\=(\w+)$/ [$1.to_sym] = $2 ARGV.shift end fail "Couldn't find options from command line arguments or #{files.join(', ')}" unless .size > 0 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<#>.
664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 |
# File 'lib/fastly.rb', line 664 def self.load_config(file) = {} return unless File.exist?(file) File.open(file, 'r') do |infile| while line = infile.gets line.chomp! next if line =~ /^#/ next if line =~ /^\s*$/ next unless line =~ /=/ line.strip! key, val = line.split(/\s*=\s*/, 2) [key.to_sym] = val end end end |
Instance Method Details
#authed? ⇒ Boolean
Whether or not we’re authed at all by either username & password or API key
61 62 63 |
# File 'lib/fastly.rb', line 61 def authed? client.authed? end |
#current_customer ⇒ Object
Return a Customer object representing the customer of the current logged in user.
72 73 74 75 |
# File 'lib/fastly.rb', line 72 def current_customer fail AuthRequired unless authed? @current_customer ||= get(Customer) end |
#current_user ⇒ Object
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
79 80 81 82 |
# File 'lib/fastly.rb', line 79 def current_user fail FullAuthRequired unless 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
67 68 69 |
# File 'lib/fastly.rb', line 67 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.
100 101 102 103 104 105 106 107 108 |
# File 'lib/fastly/invoice.rb', line 100 def get_invoice(year = nil, month = nil) opts = {} unless year.nil? || month.nil? opts[:year] = year opts[:month] = month end get(Invoice, opts) end |
#get_settings(service, number) ⇒ Object
Get the Settings object for the specified Version
61 62 63 64 65 66 67 |
# File 'lib/fastly/settings.rb', line 61 def get_settings(service, number) hash = client.get(Settings.get_path(service, number)) return nil if hash.nil? hash['settings'] = Hash[['general.default_host', 'general.default_ttl'].collect { |var| [var, hash.delete(var)] }] Settings.new(hash, self) end |
#purge(url, soft = false) ⇒ Object
Purge the specified path from your cache.
85 86 87 |
# File 'lib/fastly.rb', line 85 def purge(url, soft=false) client.purge(url, soft ? { headers: { 'Fastly-Soft-Purge' => "1"} } : {}) end |
#regions ⇒ Object
Fetches the list of codes for regions that are covered by the Fastly CDN service.
144 145 146 |
# File 'lib/fastly.rb', line 144 def regions client.get_stats('/stats/regions') 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)
107 108 109 110 |
# File 'lib/fastly/service.rb', line 107 def search_services(opts) hash = client.get("#{Service.post_path}/search", opts) hash.nil? ? nil : Service.new(hash, self) end |
#stats(opts) ⇒ Object
Fetches historical stats for each of your fastly services and groups the results by service id.
If you pass in a :field opt then fetches only the specified field. If you pass in a :service opt then fetches only the specified service. The :field and :service opts can be combined.
If you pass in an :aggregate flag then fetches historical stats information aggregated across all of your Fastly services. This cannot be combined with :field and :service.
Other options available are:
- from
-
earliest time from which to fetch historical statistics
- to
-
latest time from which to fetch historical statistics
- by
-
the sampling rate used to produce the result set (minute, hour, day)
- region
-
restrict query to a particular region
See docs.fastly.com/docs/stats for details.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/fastly.rb', line 105 def stats(opts) if opts[:aggregate] && (opts[:field] || opts[:service]) fail Error, "You can't specify a field or a service for an aggregate request" end url = '/stats' url += '/aggregate' if opts.delete(:aggregate) if service = opts.delete(:service) url += "/service/#{service}" end if field = opts.delete(:field) url += "/field/#{field}" end client.get_stats(url, opts) end |
#update_settings(opts = {}) ⇒ Object
Update the Settings object for the specified Version
70 71 72 |
# File 'lib/fastly/settings.rb', line 70 def update_settings(opts = {}) update(Settings, opts) end |
#usage(opts) ⇒ Object
Returns usage information aggregated across all Fastly services and grouped by region.
If the :by_service flag is passed then returns usage information aggregated by service and grouped by service & region.
Other options available are:
- from
-
earliest time from which to fetch historical statistics
- to
-
latest time from which to fetch historical statistics
- by
-
the sampling rate used to produce the result set (minute, hour, day)
- region
-
restrict query to a particular region
See docs.fastly.com/docs/stats for details.
137 138 139 140 141 |
# File 'lib/fastly.rb', line 137 def usage(opts) url = '/stats/usage' url += '_by_service' if opts.delete(:by_service) client.get_stats(url, opts) end |