Client to list all the domains for a particular Fastly account
The Fastly API doesn't provide an endpoint to fetch all the domains associated with an account. It only provides an endpoint which lists all the domains for a particular service and version and another one which lists all the domains for the active version of a service.
The solution is to perform a request to GET /service first in order to fetch all services of a Fastly account before you send a request for each service to GET /service/service_id/version/version/domain in order to fetch all of the domains of a service.
That's exactly what the fastly-domains
library does. Let's say you have 10 services then it needs to perform eleven requests (1 + 10) to the Fastly API in order to fetch all domains associated with an account.
The library doesn't provide an option to specify a particular version of a service since it fetches the domains of all serivces. Instead it uses the active version for each request to GET /service/service_id/version/version/domain.
You'll need a Fastly API Token in order to use the fastly-domains
library. Your token must have at least global:read access. The token is necessary for every single invocation and won't be saved by the library!
This is a Node.js module available through the npm registry. The fastly-domains
library can be used locally in your scripts or globally in your Terminal
or Command Prompt
. Installation is done using the npm install
command:
$ npm install --global fastly-domains
$ npm install --save fastly-domains
Commands | Options | Alias | Type | Required | Description |
---|---|---|---|---|---|
read | List all the domains in the terminal | ||||
--help | -h | boolean | false | Show help | |
--version | -v | boolean | false | Show version number | |
--token | -t | string | true | Fastly API token | |
create | Write all the domains to fastly-domains.json | ||||
--help | -h | boolean | false | Show help | |
--version | -v | boolean | false | Show version number | |
--token | -t | string | true | Fastly API token |
const fastlyDomains = require('fastly-domains');
function handler() {
fastlyDomains('<your_fastly_api_token>')
.then(res => {
res.domains.forEach(domain => console.log(domain.name));
})
.catch(err => {
console.log(err.message);
});
}
const fastlyDomains = require('fastly-domains');
async function handler() {
try {
const res = await fastlyDomains('<your_fastly_api_token>');
res.domains.forEach(domain => console.log(domain.name));
} catch (err) {
console.log(err.message);
}
}
{
// a list of all domains associated with a fastly account
domains: [
{
version: 2,
name: 'fastly-domains.com',
service_id: '20Esr3c2mP2IO4661htKVo'
},
{
version: 2,
name: 'www.fastly-domains.com',
service_id: '20Esr3c2mP2IO4661htKVo'
}
],
// the total number of all domains associated to a fastly account
number_of_domains: 2,
// the total number of all services associated to a fastly account
number_of_services: 1
}
To run the test suite, first install the dependencies, then run the npm test
command:
$ npm install
$ npm test
PRs accepted. I am open to suggestions in improving this library. Commit by:
$ npm run commit
Licensed under the MIT License © 2017 Philipp Schulte