cityssm/node-docushare

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# node-docushare

[![npm (scoped)](https://img.shields.io/npm/v/@cityssm/docushare)](https://www.npmjs.com/package/@cityssm/docushare) [![Codacy grade](https://img.shields.io/codacy/grade/fb0290786d3b4648a72d66363ab2fe7a)](https://app.codacy.com/gh/cityssm/node-docushare/dashboard) [![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/cityssm/node-docushare)](https://codeclimate.com/github/cityssm/node-docushare) [![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/cityssm/node-docushare)](https://app.snyk.io/org/cityssm/project/e2964793-ef2f-4ac8-81ba-fc345c9c3ba2)

An unofficial DocuShare API for NodeJS, wrapped around the official Java API.

Node-docushare relies on
[node-java-caller](https://github.com/nvuillam/node-java-caller)
to run simple Java programs written using
[dsJQuery](https://github.com/cityssm/dsJQuery),
a Java project which simplifies the official DocuShare API.

## Installation

```bash
npm install @cityssm/docushare
```

Node-docushare requires Java 12 or better.  If a Java 12 JRE is unavailable,
one will be downloaded on first use.

### ⭐ dsapi.jar not included ⭐

Note that every version on DocuShare requires a different version of the dsapi.jar file.
Also, the licence around distributing the dsapi.jar file is unclear.

**The appropriate dsapi.jar file is required before use.**

dsapi.jar files are available for free through the
[Xerox DocuShare Developer Network](https://docushare.xerox.com/dsdn/dsweb/HomePage).

## Getting Started

```javascript
import * as ds from "@cityssm/docushare";

/*
 * Set Up Connection
 */

ds.setupJava({
  dsapiPath: path.join("..", "..", "..", "java", "dsapi.jar")
});

ds.setupServer({
  serverName: "dsServer.local"
});

ds.setupSession({
  userName: "userName",
  password: "p@ssword1"
});

// Get a Collection
const dsCollection = await ds.findByHandle("Collection-100");

// Get the child objects of a Collection
const dsObjects = await ds.getChildren("Collection-101");

// Create a new Collection beneath a Collection
const childCollection = await ds.createCollection("Collection-102", "New Collection Name");
```

## Functions

Note that functions are written based on need.
Need another function?
[Create an issue](https://github.com/cityssm/node-docushare/issues/new)
or submit a pull request!

-   `ds.findByHandle(handleString);`

-   `ds.getChildren(parentCollectionHandleString);`

-   `ds.findChildren(parentCollectionHandleString, filters);`

-   `ds.createCollection(parentCollectionHandleString, newTitle);`

-   `ds.setTitle(handleString, newTitle);`

-   `ds.setKeywords(handleString, newKeywords);`

-   `ds.deleteObject(handleString): boolean;`

All functions return `DocuShareOutput` objects.

```typescript
interface DocuShareOutput {
  success: boolean;
  dsObjects: DocuShareObject[];
  error?: string;
};

interface DocuShareObject {
  handle: string;
  title: string;
  summary: string;
  description: string;
  keywords: string;
  createDate: string;
  createDateMillis: number;
  modifiedDate: string;
  modifiedDateMillis: number;
  expirationDate?: string;
  expirationDateMillis?: number;
};
```