3.2.3 • Published 3 years ago

inews v3.2.3

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

node-inews

Retrieve queue listings and stories from Avid iNews Servers over FTP

Options

OptionDescriptionDefault
hostiNews FTP server
hostsArray of iNews FTP servers
maxConnectionsMaximum number of conenctions to open1
minConnectionsMinimum number of connections to keep open0
connectionIdleTimeoutTime to keep connection open after it has no requests pending (milliseconds)60,000 (1 minute)
optimalConnectionJobsSoft max on number of requests pending on a connection before opening a new connection25
rotateHostsCycle through servers when creating multiple connectionsTRUE
useriNews FTP username
passwordiNews FTP password

Examples

const Inews = require('inews')

import Inews from 'inews';

Connect

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
});

List Files In Directory/Queue

conn.list("YOUR.QUEUE.HERE")
	.then((dirList) => {
		dirList.forEach((story) => {
    		console.log(story.fileName);
    	})
	})
	.catch((error) => {
		console.error(error);
	});

Retrieve all stories in a queue

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);
    				});
    		}
    	});
    });

Retrieve NSML of all stories in a queue

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);
        				});
        		}
        	});
	    });

Get all stories that can be retrieved in 10 seconds

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);

Monitor number of requests and number of conenctions

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);
                    });
            }
        });
    });

Changes

v3.0.1

  • Bugfix to ESM export

v3.0.0

  • Multiple connections enabled
  • Includes attachments in stories

v2.0.1

  • cwd_failed error now a proper Error, not a string

v2.0.0

  • Adds cancelable promises
3.2.3

3 years ago

3.2.2

4 years ago

3.2.1

4 years ago

3.2.0

4 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.3.4

7 years ago

1.3.3

7 years ago

1.3.2

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago