Nodeschool Public Materials

    @ubw/mediatum-rest-client

    0.4.1 • Public • Published

    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

    Install

    npm i @ubw/mediatum-rest-client

    DownloadsWeekly Downloads

    1

    Version

    0.4.1

    License

    MIT

    Unpacked Size

    116 kB

    Total Files

    9

    Last publish

    Collaborators

    • avatar