open-index/open-npm huggingface dataset:
npm package: @financial-times/n-methode
Description: Utility to publish to Methode's REST API
Latest version: 4.0.3

# Next Methode API Client [![CircleCI](https://circleci.com/gh/Financial-Times/n-methode.svg?style=svg&circle-token=e474aebbbc7ff374f7f89258083a0dd420f53e91)](https://circleci.com/gh/Financial-Times/n-methode) [![Coverage Status](https://coveralls.io/repos/github/Financial-Times/n-methode/badge.svg?branch=master&t=KF2arc)](https://coveralls.io/github/Financial-Times/n-methode?branch=master)

Utility to publish to Methode's REST API

## Installation

    npm install @financial-times/n-methode

## Usage

```js
import methode from '@financial-times/n-methode';

methode.create('<body>xml containing story data</body>', 'target-filename.xml')
    .then((msg) => {
        console.log(msg); // 'file successfully uploaded as target-filename.xml'
    })
    .catch((err) => {
        // something went wrong :-(
    });
```

If using CommonJS modules

```js
const methode = require('@financial-times/n-methode');
```

### API

#### create(data, filename)

* `data` the contents of the file you want to upload, typically this is an XML file based on a template within Méthode. The module will create a `new Buffer()` to the contents.
* `filename` the target filename on Methode – this will be timestamped by the module
* note that if the destination file already exists, the module is set to tell Methode to rename the upload and report `OK`.

#### delete(objectId)

* `objectId` the methode object Id to be deleted

#### metadata.get(objectId, objectPath, getDefaultMetadata)

* `objectId` the methode object Id, e.g. '116$116.0.3514221999'
* `objectPath` the methode object path, e.g. '/FT/Content/Links/Videos/Video_MKTS-120417-Geopolitical-anxiety-puts-pressure-on-markets-Michael-Mackenzie-120417-LST_9353ce68-ea4f-4b08-a5e4-d84ae41f2e7e.xml'
* `getDefaultMetadata` boolean to include the default metadata (useful on new objects)

#### metadata.post(objectId, objectPath, xml)

* `xml` the entire copy of the new Metadata XML document. [[Example]](https://github.com/Financial-Times/n-methode/blob/master/test/fixture/metadata-default.xml)

#### metadata.update(objectId, objectPath, updateObj)

Make changes to an object's metadata by providing a JSON style object. Saves having to work with XML parsing, but the JSON object should mirror the structure of the Metadata XML in order not to corrupt it. [See example in the tests](https://github.com/Financial-Times/n-methode/blob/master/test/main.spec.js#L251).

* `updateObj` a JSON object representing the properties of the Metadata XML you wish to update.