@neptunelabs/fsi-server-api-client
v1.0.92
Published
API client for NeptuneLabs FSI Server
Downloads
50
Maintainers
Readme
FSI Server API Client JS
API client for NeptuneLabs FSI Server
Table of Contents
About
FSI Server API Client JS offers developers a flexible interface to control the REST OpenAPI of FSI server.
Uploading, deleting, modifying, creating and managing files and directory structures, as well as complex tasks can be easily accomplished using this high level API client. The FSI Server web interface uses this API client to communicate with FSI Server. You can see the API in action on this demo FSI Server.
How to install
Install with npm:
npm install @neptunelabs/fsi-server-api-client
Install with yarn:
yarn add @neptunelabs/fsi-server-api-client
Concepts
Promise based API versus queue API
There are two ways of using the API:
- a promise based API
- a queue API
Queueing command results in a far more readable code while using the promise-based API gives you more flexibility, but a deeply nested code.
Let's have a look at an example which just logs in and out of FSI Server:
Example: Promise based API
const fsiServerApiClient = require("@neptunelabs/fsi-server-api-client");
const client = new fsiServerApiClient.FSIServerClient('https://my.fsi-server.tld');
client.login("user", "password")
.then(() => {
client.logout()
.catch(console.error);
})
.catch(console.error);
Example: Queue API
const fsiServerApiClient = require("@neptunelabs/fsi-server-api-client");
const client = new fsiServerApiClient.FSIServerClient('https://my.fsi-server.tld');
const queue = client.createQueue({continueOnError: false});
queue.login("user", "password");
queue.logout();
// the following line actually starts the execution
queue.runWithResult();
Besides the code style, the queue API simplifies working with many files, because you can run commands against all files selected by the queue.
Getting started
Basic Examples
Renaming all files in a folder
const queue = client.createQueue({continueOnError: false});
queue.login("user", "password");
// recursively read all files and folder entries in images/foo
queue.listServer("images/foo", {recursive: true});
// recursively read all files and folder entries in images/bar
queue.listServer("images/bar", {recursive: true});
//rename each collected file
queue.batchRename((entry) => {
return (entry.type === "file") ? "renamed_" + entry.src : entry.src;
});
queue.logout();
queue.runWithResult();
Downloading assets
const queue = client.createQueue({continueOnError: false});
queue.login("user", "password");
queue.listServer("/path/to/images", {recursive: true});
queue.batchDownload("/target/path/", {
flattenTargetPath: false,
overwriteExisting: true
});
queue.logout();
queue.runWithResult();
Uploading assets
const queue = client.createQueue({continueOnError: false});
queue.login("user", "password");
queue.listLocal("/local_path/to/images", {
fnFileFilter: FSIServerClient.FN_FILE_FILTER_VALID_IMAGES,
recursive: true
});
queue.batchUpload("/images/", {
flattenTargetPath: false,
overwriteExisting: true
});
queue.logout();
queue.runWithResult();
More Examples
A repository containing various examples how to use this API in TypeScript is available here.
Please refer to the wiki for a complete API documentation.