NAME
Net::Fastly - client library for interacting with the Fastly web acceleration service
SYNOPSIS
my $fastly = Net::Fastly->new(%login_opts);
my $current_user = $fastly->current_user;
my $current_customer = $fastly->current_customer;
my $user = $fastly->get_user($current_user->id);
my $customer = $fastly->get_customer($current_customer->id);
print "Name: ".$user->name."\n";
print "Works for ".$user->customer->name."\n";
print "Which is the same as ".$customer->name."\n";
print "Which has the owner ".$customer->owner->name."\n";
# Let's see which services we have defined
foreach my $service ($fastly->list_services) {
print $service->name." (".$service->id.")\n";
foreach my $version ($service->versions) {
print "\t".$version->number."\n";
}
}
my $service = $fastly->create_service(name => "MyFirstService");
my $latest_version = $service->version;
# Create a domain and a backend for the service ...
my $domain = $fastly->create_domain(service_id => $service->id, version => $latest_version->number, name => "www.example.com");
my $backend = $fastly->create_backend(service_id => $service->id, version => $latest_version->number, ipv4 => "127.0.0.1", port => 80);
# ... and activate it. You're now hosted on Fastly.
$latest_version->activate;
# Let's take a peek at the VCL that Fastly generated for us
my $vcl = $latest_version->generated_vcl;
print "Generated VCL file is:\n".$vcl->content."\n";
# Now let's create a new version ...
my $new_version = $latest_version->clone;
# ... add a new backend ...
my $new_backend = $fastly->create_backend(service_id => $service->id, version => $new_version->number, ipv4 => "192.0.0.1", port => 8080);
# ... and upload some custome vcl (presuming we have permissions)
$new_version->upload_vcl($vcl_name, slurp($vcl_file));
$new_version->activate;
DESCRIPTION
METHODS
new <opt[s]>
Create a new Fastly client. Options are
You only need to pass in api_key
OR user
and password
.
Some methods require full username and password rather than just auth token.
client
Get the current Net::Fastly::Client
set_customer <customer id>
Set the current customer to act as.
NOTE: this will only work if you're an admin
authed
Whether or not we're authed at all by either username & password or API key
fully_authed
Whether or not we're fully (username and password) authed
current_user
Return a User object representing the current logged in user.
This will not work if you're logged in with an API key.
current_customer
Return a Customer object representing the customer of the current logged in user.
commands
Return a hash representing all commands available.
Useful for information.
purge <path>
Purge the specified path from your cache.
create_user <opts>
create_customer <opts>
create_service <opts>
create_version service_id => <service id>, [opts]
create_backend service_id => <service id>, version => <version number>, name => <name> <opts>
create_director service_id => <service id>, version => <version number>, name => <name> <opts>
create_domain service_id => <service id>, version => <version number>, name => <name> <opts>
create_healthcheck service_id => <service id>, version => <version number>, name => <name> <opts>
create_match service_id => <service id>, version => <version number>, name => <name> <opts>
create_origin service_id => <service id>, version => <version number>, name => <name> <opts>
create_syslog service_id => <service id>, version => <version number>, name => <name> <opts>
create_vcl service_id => <service id>, version => <version number>, name => <name> <opts>
Create new objects.
get_user <id>
get_customer <id>
get_service <id>
get_version <service id> <number>
get_backend <service id> <version number> <name>
get_director <service id> <version number> <name>
get_domain <service id> <version number> <name>
get_healthcheck <service id> <version number> <name>
get_invoice [<year> <month>]
Return a Net::Fastly::Invoice objects representing an invoice for all services.
If a year and month are passed in returns the invoice for that whole month.
Otherwise it returns the invoices for the current month to date.
get_match <service id> <version number> <name>
get_origin <service id> <version number> <name>
get_syslog <service id> <version number> <name>
get_vcl <service id> <version number> <name>
get_version <service id> <version number> <name>
get_settings <service id> <version number>
Get existing objects.
update_user <obj>
update_customer <obj>
update_service <obj>
update_version <obj>
update_backend <obj>
update_director <obj>
update_domain <obj>
update_healthcheck <obj>
update_match <obj>
update_origin <obj>
update_syslog <obj>
update_vcl <obj>
update_version <obj>
update_settings <obj>
Update existing objects.
Note - you can also do
$obj->save;
delete_user <obj>
delete_customer <obj>
delete_service <obj>
delete_version <obj>
delete_backend <obj>
delete_director <obj>
delete_domain <obj>
delete_healthcheck <obj>
delete_match <obj>
delete_origin <obj>
delete_syslog <obj>
delete_vcl <obj>
delete_version <obj>
Delete existing objects.
Note - you can also do
$obj->delete
list_users
list_customers
list_versions
list_services
list_backends
list_directors
list_domains
list_healthchecks
list_matchs
list_origins
list_syslogs
list_vcls
list_versions
Get a list of all objects
search_services <param[s]>
Search all the services that the current customer has.
In general you'll want to do
my @services = $fastly->search_services(name => $name);
or
my ($service) = $fastly->search_services(name => $name, version => $number);
CLASS METHODS
load_options <file>
Attempts to load various config options in the form
<key> = <value>
From a file.
Skips whitespace and lines starting with #
.
get_options <file[s]>
Tries to load options from the file[s] passed in using, load_options
, stopping when it finds the first one.
Then it overrides those options with command line options of the form
--<key>=<value>
COPYRIGHT
Copyright 2011 - Fastly Inc
Mail support at fastly dot com if you have problems.
DEVELOPERS
http://github.com/fastly/fastly-perl
http://www.fastly.com/documentation