Retrieve queue listings and stories from Avid iNews Servers over FTP
Option | Description | Default |
---|---|---|
host | iNews FTP server | |
hosts | Array of iNews FTP servers | |
maxConnections | Maximum number of conenctions to open | 1 |
minConnections | Minimum number of connections to keep open | 0 |
connectionIdleTimeout | Time to keep connection open after it has no requests pending (milliseconds) | 60,000 (1 minute) |
optimalConnectionJobs | Soft max on number of requests pending on a connection before opening a new connection | 25 |
rotateHosts | Cycle through servers when creating multiple connections | TRUE |
user | iNews FTP username | |
password | iNews FTP password |
const Inews = require('inews')
import Inews from 'inews';
Will not connect unless a function that requires the connection (eg: cwd, list) is called
const conn = new Inews({
host: "inews-hostname",
user: "inews-username",
password: "inews-password"
});
Connect with backup servers and up to 10 connections
const conn = new Inews({
hosts: ["inews-hostname-a", "inews-hostname-b", "inews-hostname-c"],
user: "inews-username",
password: "inews-password",
maxConnections: 10,
minConnections: 1,
optimalConnectionJobs: 25,
rotateHosts: true,
connectionIdleTimeout: 60000
});
conn.list("YOUR.QUEUE.HERE")
.then((dirList) => {
dirList.forEach((story) => {
console.log(story.fileName);
})
})
.catch((error) => {
console.error(error);
});
let inewsQueue = "YOUR.QUEUE.HERE";
conn.list(inewsQueue)
.then(listItems => {
listItems.forEach((listItem) => {
if(listItem.fileType === 'STORY') {
conn.story(inewsQueue, listItem.fileName)
.then(story => {
console.log("STORY", story);
})
.catch(error => {
console.error("ERROR", error);
});
}
});
});
let inewsQueue = "YOUR.QUEUE.HERE";
conn.list(inewsQueue)
.then(listItems => {
listItems.forEach((listItem) => {
if(listItem.fileType === 'STORY') {
conn.storyNsml(inewsQueue, listItem.fileName)
.then(story => {
console.log("STORY", story);
})
.catch(error => {
console.error("ERROR", error);
});
}
});
});
let storyPromises = new Set();
let inewsQueue = "YOUR.QUEUE.HERE";
conn.list(inewsQueue)
.then(listItems => {
listItems.forEach((listItem) => {
if(listItem.fileType === 'STORY') {
let storyPromise = conn.story(inewsQueue, listItem.fileName);
storyPromises.add(storyPromise);
storyPromise
.then(story => {
console.log("STORY", story);
})
.catch(error => {
console.error("ERROR", error);
})
.finally(() => {
promises.delete(storyPromise);
});
}
});
});
setTimeout(() => {
storyPromises.forEach(storyPromise => {
storyPromise.cancel();
})
}, 10000);
let inewsQueue = "YOUR.QUEUE.HERE";
conn.on('connections', connections => {
console.log(connections + ' connections active');
});
conn.on('requests', requests => {
console.log(requests + ' total requests');
});
conn.on('queued', queued => {
console.log(queued + ' queued requests');
});
conn.on('running', running => {
console.log(running + ' running requests');
});
conn.on('error', error => {
console.log('Error', error);
});
conn.list(inewsQueue)
.then(listItems => {
listItems.forEach((listItem) => {
if(listItem.fileType === 'STORY') {
conn.story(inewsQueue, listItem.fileName)
.then(story => {
console.log("STORY", story);
})
.catch(error => {
console.error("ERROR", error);
});
}
});
});
- Bugfix to ESM export
- Multiple connections enabled
- Includes attachments in stories
- cwd_failed error now a proper Error, not a string
- Adds cancelable promises