@ubw/mediatum-rest-client

Convenience wrapper around the RESTful mediaTUM API

Usage no npm install needed!

<script type="module">
  import ubwMediatumRestClient from 'https://cdn.skypack.dev/@ubw/mediatum-rest-client';
</script>

README

mediatum-rest-client

Convenience wrapper around the RESTful mediaTUM API

Install

$ npm install @ubw/mediatum-rest-client

Usage

const ubwMediatumRestClient = require('@ubw/mediatum-rest-client');

ubwMediatumRestClient.getAllChildren(1433089, {limit: 1}).then(console.log);
// =>
/*
{
    data: [
        {
            type: '1433089',
            id: 1335274,
            attributes: {
                'author.firstname': 'Thomas',
                type: 'Dissertation',
                // ...
            },
            links: {
                self: {
                    href: 'https://mediatum.ub.tum.de/?id=...'
                }
            }
        }
    ],
    meta: {
        username: 'guest',
        status: 'ok',
        method: 'GET',
        nodelist_limit: '1',
        nodelist_start: 0,
        // ...
    }
}
 */

API

.getAllChildren(id, [options])

Returns a Promise.

id

Type: Number

The id of the mediaTUM node to query.

options

Type: Object

See mediaTUM query parameters for additional options.

format

Type: String
Default: 'json'

acceptcached

Type: Number
Default: 180

mask

Type: String
Default: 'none'

attrspec

Type: String
Default: 'all'

baseUrl

Type: String
Default: 'https://mediatum.ub.tum.de'

queryUrl

Type: Function
Default: (baseUrl, id, endpoint) => `${baseUrl}/services/export/node/${id}/${endpoint}`

selfHref

Type: Function
Default: (node, baseUrl) => `${baseUrl}/?id=${node.id}`

schema

Type: Object
Default: undefined

Expected attributes schema.

const schema = {
    author: String,      // convert attribute to string
    title: undefined,    // include attribute, but do not mind the type
    isAwesome: Boolean,  // convert attribute to boolean
    year: 'year',        // convert attribute to integer
    pages: 'int',        // convert attribute to integer
    created: Date,       // convert attribute to date
};

getAllChildren(42, {schema})
// => nodes in nodelist will only have attributes mentioned above
/*
{
    data: [
        {
            type: '21',
            id: 42,
            attributes: {
                author: 'Douglas Adams',
                title: 'The Hitchhiker’s Guide to the Galaxy',
                isAwesome: true,
                year: 1979,
                pages: 158,
                created: Date(...)
            },
            links: {
                self: {
                    href: 'https://mediatum.ub.tum.de/?id=42'
                }
            }
        }
    ],
    meta: {
        // ...
    }
}
 */

Related

License

MIT © Michael Mayer