MaxCDN API for perl
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
README.md

README.md

perl-maxcdn

MaxCDN API for perl

MaxCDN REST Web Services Perl Client

Requirements (open cpan)

install JSON

install Net::OAuth

install LWP::UserAgent

install URI

install Data::Dumper

install IO::Socket::SSL

install LWP::Protocol::https

Installation

wget https://github.com/MaxCDN/perl-maxcdn.git

unzip master.zip

cd perl-maxcdn-master/

Usage

#!/usr/bin/perl -w

use strict;
use warnings;
use JSON qw( decode_json );
use MaxCDNRWS;
use Data::Dumper;
           
$api = new MaxCDNRWS( 'ALIAS', 'KEY', 'SECRET');

#ENABLE DEBUG FUNCTIONALITY BY ADDING "1" AT THE END OF AUTH:
#my $api = new MaxCDNRWS('ALIAS', 'KEY', 'SECRET', 1);
#EXAMPLE OF DEBUG OUTPUT:

#Checking if shortcut was used...
#Shortcut is used! Applying URL composition method...
#Address composed: /zones/pull.json/123456/cache
#Forming purge array...
#Making a DELETE request to https://rws.maxcdn.com/ALIAS/zones/pull.json/123456/cache
#Creating request...
#consumer_key => ---------------------------------,
#                consumer_secret => +++++++++++++++++++++++++++++++++++,
#                request_url => https://rws.maxcdn.com/ALIAS/zones/pull.json/123456/cache,
#                request_method => 'DELETE',
#                signature_method => 'HMAC-SHA1',
#                timestamp => time,
#                nonce => '',
#                callback => '',
#Signing request Net::OAuth::V1_0A::RequestTokenRequest=HASH(0x20d3d98)
#Sending request to MaxCDN API server...
#Successfully executed API call.
#$VAR1 = undef;

#*******************************
#ACCOUNT
#GET ACCOUNT INFO
#my $data = $api->get("/account.json");
#print $data->{'account'}{'name'};

#UPDATE ACCOUNT INFO
#my @params = ('name=IDABIC');
#$api->put("/account.json", @params);

#GET ACCOUNT ADDRESS
#my $data = $api->get("/account.json/address");
#print $data->{'address'}{'street1'};

#UPDATE ACCOUNT ADDRESS
#my @params = ('street1=Fake');
#$api->put("/account.json/address", @params);
#*******************************




#*******************************
#USERS
#GET USERS
#my $data = $api->get("/users.json");
#print $data->{'users'}[0]{'id'};

#CREATE USER
#my @params = {firstname => 'Perl', lastname => 'User', email => 'user@domain.com', password => 'testpwd'};
#$api->post("/users.json", @params);

#GET USER
#my $id = 33706;
#my $data = $api->get("/users.json/" . $id);
#print $data->{'user'}{'lastname'};

#UPDATE USER
#my $id = 33706;
#my @params = ('lastname=Test');
#$api->put("/users.json/" . $id, @params);

#DELETE USER
#my $id = 33706;
#$api->delete("/users.json/" . $id);

#*******************************



#*******************************
#ZONES

#LIST ZONES
#$api->get("/zones.json");

#GET ZONES SUMMARY
#$api->get("/zones.json/summary");

#GET ZONE COUNT
#$api->get("/zones.json/count");

#UPDATE ZONE DETAILS
#my @params = ('compress=0');
#$api->put("/zones/pull.json/97167", @params);

#CREATE ZONE
#my @params = {name => 'perltest5', url => 'http://www.google.com'};
#$api->post("/zones/pull.json", @params);


#DELETE
#$api->delete("/zones/pull.json/97167");
#*******************************


#*******************************
#PULL ZONES


#LIST PULL ZONES
#$api->get("/zones/pull.json");

#CREATE PULL ZONE
#my @params = {name => 'perltest5', url => 'http://www.google.com'};
#$api->post("/zones/pull.json", @params);

#Get Pull Zones Count
#$api->get("/zones/pull.json/count");

#Get Pull Zone
#my $id = 97167;
#$api->get("/zones/pull.json/" . $id);

#Update Pull Zone
#my $id = 97167;
#my @params = ('compress=0');
#$api->put("/zones/pull.json/" . $id, @params);

#Delete Pull Zone
#my $id = 97167;
#$api->delete("/zones/pull.json/" . $id);

#Enable Pull Zone
#my $id = 97167;
#$api->put("/zones/pull/" . $id . "/enable.json");

#Disable Pull Zone
#my $id = 97167;
#$api->put("/zones/pull/" . $id . "/disable.json");

#Purge Cache
#PURGE MULTIPLE
#my @params = ("%2Frankings%2Fhotlist%2Fi%2F500w%2F2.jpg", "%2F_index%2Ff_mdcdb.html");

#PURGE SINGLE
#my @params = ("%2Frankings%2Fhotlist%2Fi%2F500w%2F2.jpg");

#$api->delete("/zones/pull.json/97167/cache", @params)

#PURGE ALL

#$api->delete("/zones/pull.json/97167/cache")
#*******************************



#*******************************
#Pull Zone Custom Domains API
#my $id = 97167;
#my $data = $api->get("/zones/pull/" . $id . "/customdomains.json");
#print $data->{'customdomains'}[2]{'custom_domain'};

#Create Custom Domain
#my $id = 97167;
#my @params = {custom_domain => 'idabic.dom.net'};
#$api->post("/zones/pull/" . $id . "/customdomains.json", @params);

#Get Custom Domain
#my $zid = 97167;
#my $cid = 113070;
#my $data = $api->get("/zones/pull/" . $zid . "/customdomains.json/" . $cid);
#print $data->{'customdomain'}{'custom_domain'};

#Update Custom Domain
#my $zid = 97167;
#my $cid = 173075;
#my @params = ('custom_domain=idabic.domain.net');
#$api->put("/zones/pull/" . $zid . "/customdomains.json/" . $cid, @params);

#Delete Custom Domain
#my $zid = 97167;
#my $cid = 173075;
#$api->delete("/zones/pull/" . $zid . "/customdomains.json/" . $cid);
#*******************************





#*******************************
#Push Zone API
#List Push Zones
#$api->get("/zones/push.json");

#Create Push Zone
#my @params = {name => 'perltestpush', password => 'password'};
#$api->post("/zones/push.json", @params);

#Get Push Zones Count
#$api->get("/zones/push.json/count");

#Get Push Zone
#my $id = 55659;
#$api->get("/zones/push.json/" . $id);

#Update Push Zone
#my $id = 55659;
#my @params = ('compress=0');
#$api->put("/zones/push.json/" . $id, @params);

#Delete Push Zone
#my $id = 55659;
#$api->delete("/zones/push.json/" . $id);

#Enable Push Zone
#my $id = 55659;
#$api->put("/zones/push/" . $id . "/enable.json");

#Disable Push Zone
#my $id = 55659;
#$api->put("/zones/push/" . $id . "/disable.json");
#*******************************

#*******************************
#Push Zone Custom Domains API
#List Custom Domains
#my $id = 134458;
#my $data = $api->get("/zones/push/" . $id . "/customdomains.json");
#print $data->{'customdomains'}[1]{'custom_domain'};
#print $data->{'customdomains'}[1]{'id'};

#Create Custom Domain
#my $id = 55659;
#my @params = {custom_domain => 'idabic2.dom.net'};
#$api->post("/zones/push/" . $id . "/customdomains.json", @params);

#Get Custom Domain
#my $zid = 55659;
#my $cid = 122211;
#my $data = $api->get("/zones/push/" . $zid . "/customdomains.json/" . $cid);
#print $data->{'customdomain'}{'custom_domain'};

#Update Custom Domain
#my $zid = 55659;
#my $cid = 122211;
#my @params = ('custom_domain=idabic.domain.net');
#$api->put("/zones/push/" . $zid . "/customdomains.json/" . $cid, @params);

#Delete Custom Domain
#my $zid = 55659;
#my $cid = 122211;
#$api->delete("/zones/push/" . $zid . "/customdomains.json/" . $cid);
#*******************************



#*******************************
#VOD Zone API
#List VOD Zones

#LIST VOD ZONES
#$api->get("/zones/vod.json");

#CREATE VOD ZONE
#my @params = {name => 'perltest5', password => 'password'};
#$api->post("/zones/vod.json", @params);

#Get VOD Zones Count
#$api->get("/zones/vod.json/count");

#Get VOD Zone
#my $id = 75477;
#$api->get("/zones/vod.json/" . $id);

#Update VOD Zone
#my $id = 75477;
#my @params = ('compress=0');
#$api->put("/zones/vod.json/" . $id, @params);

#Delete VOD Zone
#my $id = 75477;
#$api->delete("/zones/vod.json/" . $id);

#Enable VOD Zone
#my $id = 75477;
#$api->put("/zones/vod/" . $id . "/enable.json");

#Disable VOD Zone
#my $id = 75477;
#$api->put("/zones/vod/" . $id . "/disable.json");
#*******************************



#*******************************
#VOD Zone Custom Domains API
#List Custom Domains

#my $id = 75477;
#my $data = $api->get("/zones/vod/" . $id . "/customdomains.json");
#print $data->{'customdomains'}[0]{'custom_domain'};
#print $data->{'customdomains'}[0]{'id'};

#Create Custom Domain
#my $id = 75477;
#my @params = {custom_domain => 'idabic3.dom.net', type => 'vod-rtmp'};
#$api->post("/zones/vod/" . $id . "/customdomains.json", @params);

#Get Custom Domain
#my $zid = 75477;
#my $cid = 173088;
#my $data = $api->get("/zones/vod/" . $zid . "/customdomains.json/" . $cid);
#print $data->{'customdomain'}{'custom_domain'};

#Update Custom Domain
#my $zid = 75477;
#my $cid = 173088;
#my @params = ('custom_domain=idabic.domain.net');
#$api->put("/zones/vod/" . $zid . "/customdomains.json/" . $cid, @params);

#Delete Custom Domain
#my $zid = 75477;
#my $cid = 173088;
#$api->delete("/zones/vod/" . $zid . "/customdomains.json/" . $cid);
#*******************************

#*******************************
#Zones SSL API
#Get Zone's SSL Information
#my $id = 236828;
#my $type = "pull";
#$api->get("/zones/" . $type . "/" . $id . "/ssl.json");

#Install SSL on Zone
#my $id = 236828;
#my $type = 'pull';
#my $ssl_crt = "-----BEGIN CERTIFICATE-----\n{ ... your certificate ... }\n-----END CERTIFICATE-----\n";
#my $ssl_key = "-----BEGIN RSA PRIVATE KEY-----\n{ ... your key ... }\n-----END RSA PRIVATE KEY-----";
#my @params = {ssl_crt => $ssl_crt, ssl_key => $ssl_key};
#$api->post("/zones/" . $type . "/" . $id . "/ssl.json", @params);

#Update Zone's SSL Information
#my $id = 236828;
#my $type = "pull";
#my @params = ('ssl_crt=-----BEGIN CERTIFICATE-----\n{ ... your certificate ... }\n-----END CERTIFICATE-----\n', 'ssl_key=-----BEGIN RSA PRIVATE KEY-----\n{ ... your key ... }\n-----END RSA PRIVATE KEY-----');
#$api->put("/zones/" . $type . "/" . $id . "/ssl.json", @params);

#Remove Zone's SSL Information
#my $id = 236828;
#my $type = "pull";
#$api->delete("/zones/" . $type . "/" . $id . "/ssl.json");
#*******************************



#*******************************
#Zones Upstream API
#Get Upstream information for the current zone
#my $id = 236828;
#my $type = "pull";
#$api->get("/zones/" . $type . "/" . $id . "/upstream.json");

#Enable Upstream on Zone
#my $id = 96061;
#my $type = "pull";
#my @params = {server_url => 'http://cdn.somedomain.com', server => 'http://cdn.somedomain.com', port => '80'};
#$api->post("/zones/" . $type . "/" . $id . "/upstream.json", @params);

#Update Zone's Upstream Information
#my $id = 96061;
#my $type = "pull";
#my @params = ('upstream_id=93013', 'server_url=http://somedomain.net', 'port=80');
#$api->put("/zones/" . $type . "/" . $id . "/upstream.json", @params);

#Remove Zone's Upstream Information
#my $id = 96061;
#my $type = "pull";
#$api->delete("/zones/" . $type . "/" . $id . "/upstream.json");
#*******************************


#*******************************
#Reports API
#Get Account Stats
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/stats.json" . $reportType);

#Get All Zone Stats
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/statsbyzone.json" . $reportType);

#Get a Zone's Stats
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#$api->get("/reports/" . $id . "/stats.json" . $reportType);


#Reports by Location API
#List Nodes
#$api->get("/reports/nodes.json");

#List Nodes by Zone
#my $id = 96061;
#$api->get("/reports/" . $id . "/nodes.json");

#List Zone Node Stats by Report Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/nodes.json/stats" . $reportType);

#List Node Stats by Zone and Report Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#$api->get("/reports/" . $id . "/nodes.json/stats" . $reportType);

#Get Zone Node
#my $id = 1;
#$api->get("/reports/nodes.json/" . $id);

#Get Node by Zone
#my $zoneId = 96061;
#my $nodeId = 1;
#$api->get("/reports/" . $zoneId . "/nodes.json/" . $nodeId);

#Get Zone Node Stats by Report Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 1;
#$api->get("/reports/nodes.json/" . $id . "/stats/" . $reportType);

#Get Node Stats by Zone and Report Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $zoneId = 96061;
#my $nodeId = 1;
#$api->get("/reports/" . $zoneId . "/nodes.json/" . $nodeId . "/stats" . $reportType);

#Reports by Popular Files API
#List Popular Files
#$api->get("/reports/popularfiles.json");

#List Popular Files By Zone Type
#my $type = "pull";
#$api->get("/reports/" . $type . "/popularfiles.json");

#Reports by Status Codes API
#List Status Code Responses
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/statuscodes.json/" . $reportType);

#List Status Code Responses by Zone Id
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#$api->get("/reports/" . $id . "/statuscodes.json" . $reportType);

#List Status Codes by Zone Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $zoneType = "pull";
#$api->get("/reports/" . $zoneType . "/statuscodes.json" . $reportType);

#List Status Codes by Zone Id and Zone Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#my $zoneType = "pull";
#$api->get("/reports/" . $zoneType . "/" . $id . "/statuscodes.json" . $reportType);

#Reports by File Types API
#List File Types
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/filetypes.json" . $reportType);

#List File Types by Zone Id
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#$api->get("/reports/" . $id . "/filetypes.json" . $reportType);

#List File Types by Zone Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $zoneType = "pull";
#$api->get("/reports/" . $zoneType . "/filetypes.json" . $reportType);

#List File Types by Zone Id
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $zoneType = "pull";
#my $id = 96061;
#$api->get("/reports/" . $zoneType . "/" . $id . "/filetypes.json" . $reportType);

#Reports by File Size Ranges API
#List File Sizes
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/filesizes.json/" . $reportType);

#List File Sizes by Zone Id
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#$api->get("/reports/" . $id . "/filesizes.json" . $reportType);

#List File Sizes by Zone Type
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $zoneType = "pull";
#$api->get("/reports/" . $zoneType . "/filesizes.json" . $reportType);

#List File Sizes by Zone Id
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $zoneType = "pull";
#my $id = 96061;
#$api->get("/reports/" . $zoneType . "/" . $id . "/filesizes.json" . $reportType);

#Reports By Directory API
#List Stats By Directory
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#$api->get("/reports/statsbydir.json" . $reportType);

#List Stats By Directory and Zone Id
#my $reportType = ""; #Vaild input includes /daily, /hourly, /monthly or ""
#my $id = 96061;
#$api->get("/reports/" . $id . "/statsbydir.json" . $reportType);
#*******************************




#*******************************
#Raw Logs API
#Get Raw Logs
#$api->get("/v3/reporting/logs.json?start=2014-01-30&end=2014-01-31&status=200");
#*******************************



#*******************************
#Origin Shield API
#Enable Origin Shield
#my $id = 123502;
#my @params = {location => 'sjc'};
#$api->post("/zones/pull/" . $id . "/zoneshields.json", @params)

#Update Origin Shield
#my $id = 123502;
#my @params = ('location=ams');
#$api->put("/zones/pull/" . $id . "/zoneshields.json", @params)

#Delete Origin Shield
#my $id = 123502;
#$api->delete("/zones/pull/" . $id . "/zoneshields.json")

#SSL Certificate API
#List Certificates
#$api->get("/ssl.json");

#Create Certificate
#my @params = {ssl_crt => '-----BEGIN CERTIFICATE-----\n{ you certificate info }\n-----END CERTIFICATE-----', ssl_key => '-----BEGIN RSA PRIVATE KEY-----\n{ your private key info}\n-----END RSA PRIVATE KEY-----","ssl_cabundle"=>"-----BEGIN CERTIFICATE.....", "name"=>"Our .example.com wildcard');
#$api->post("/ssl.json", @params );

#Get SSL Certificate
#my $id = 1234;
#$api->get("/ssl.json/" . $id);

#Update SSL Certificate
#my $id = 1234;
#my @params = ('ssl_crt=-----BEGIN CERTIFICATE-----\n{ you certificate info }\n-----END CERTIFICATE-----', 'ssl_key=-----BEGIN RSA PRIVATE KEY-----\n{ your private key info}\n-----END RSA PRIVATE KEY-----","ssl_cabundle"=>"-----BEGIN CERTIFICATE.....', 'name=Our.example.com-wildcard');
#$api->put("/ssl.json/" . $id, @params);

#Delete SSL Certificiate
#my $id = 1234;
#$api->delete("/ssl.json/" . $id);
#*******************************

Methods

It has support for GET, POST, PUT and DELETE OAuth 1.0a signed requests.