Package Exports
- dat-pinning-service-client
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (dat-pinning-service-client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
dat-pinning-service-client
Client API for Dat pinning services. Conforms to the Dat Pinning Service API.
API
To create a client:
const {createClient} = require('dat-pinning-service-client')
createClient('https://my-pinning-service.com', {username: 'bob', password: 'hunter2'}, (err, client) => {
if (err) throw err
// ...
})
Alternatively:
const {DatPinningServiceClient} = require('dat-pinning-service-client')
var client = new DatPinningServiceClient('https://my-pinning-service.com')
client.fetchPSADoc(err => {
if (err) throw err
client.login('bob', 'hunter2', err => {
if (err) throw err
// ...
})
})
All of the methods provide the response body and give an error if a non-2xx response is received.
The errors will have the .statusCode
and .responseBody
set.
createClient(hostUrl[, login], cb)
Create a new client object. Will fetch the PSA document and run login if the creds are specified.
new DatPinningServiceClient(hostUrl[, psaDoc])
Create a new client object. You can optionally provide the PSA document, which is useful if you've cached it from a previous session.
client.setPSADoc(psaDoc)
Manually set the PSA document (useful if you've cached it from a previous session).
You can find the PSA doc on client.psaDoc
.
client.setSession(token)
Manually set the session token (useful if you've cached it from a previous session).
You can find the token on client.sessionToken
.
client.login(username, password, cb)
Start a session.
You can check client.hasSession
to see if a session token has been stored.
client.logout(cb)
End the session.
client.getAccount(cb)
Get the account info for the current session. Returns
{
email: String, the accounts email (required)
username: String, the accounts username (required)
diskUsage: Number, how much disk space has the user's data taken? (optional)
diskQuota: Number, how much disk space can the user's data take? (optional)
updatedAt: Number, the Unix timestamp of the last time the user account was updated (optional)
createdAt: Number, the Unix timestamp of the last time the user account was updated (optional)
}
client.listDats(cb)
Get the dats pinned by the user. Returns
{
items: [{
url: String, dat url
name: String, optional shortname assigned by the user
title: String, optional title extracted from the dat's manifest file
description: String, optional description extracted from the dat's manifest file
additionalUrls: Array of Strings, optional list of URLs the dat can be accessed at
}]
}
client.addDat({url, name, domains}, cb)
Pin a dat. Params:
url
String, required url/key of the datname
String, optional shortname for the archivedomains
Array of Strings, optional list of domain-names the dat should be made available at
client.removeDat(url, cb)
Unpin a dat. Params:
url
String, required url/key of the dat
client.getDat(url, cb)
Get a pinned dat. Returns:
{
url: String, dat url
name: String, optional shortname assigned by the user
title: String, optional title extracted from the dat's manifest file
description: String, optional description extracted from the dat's manifest file
additionalUrls: Array of Strings, optional list of URLs the dat can be accessed at
}
client.updateDat(url, {name, domains}, cb)
Update a pinned dat. Params:
url
String, required url/key of the datname
String, optional shortname for the archivedomains
Array of Strings, optional list of domain-names the dat should be made available at
CLI tool
Small utility for testing endpoints:
npm i -g dat-pinning-service-client
dat-pinning-service-client https://my-pinning-service.com bob hunter2 getDat 9900f9aad4d6e79e0beb1c46333852b99829e4dfcdfa9b690eeeab3c367c1b9a
The usage is:
dat-pinning-service-client [service] [username] [password] [action] [args...]