Home Manual Reference Source Test Repository

src/geocluster/Geocluster.js

'use strict';

import q from 'q';
import BaseProvision from '../provision/BaseProvision';
import checkType from '../util/formats/check_types'
/**
 * This is a base object that contains all you can do about geocluster.
 */

export default class Geocluster extends BaseProvision {

    /**
     * Constructor
     * @param {InternalOpenGateAPI} Reference to the API object.
     */
    constructor(ogapi) {
        super(ogapi, "/geocluster", undefined, 'identifier');
    }

    _buildURL() {
        let url = 'provision/geocluster/' + this._identifier + '/clustering';
        return url;
    }

    /**
     * Set the identifier attribute
     * @param {string} identifier - required field
     * @return {Geocluster}
     */

    withIdentifier(identifier) {
        checkType._checkStringAndLength(identifier, 50, 'identifier');
        this._identifier = identifier;
        return this;
    }
    _composeElement() {
        this._resource = 'provision/geocluster/' + this._identifier + '/clustering';
    }

    _composeElementUpdate() {
        let geocluster = super._composeUpdateElement();
        return geocluster;
    }
    update() {
        var defered = q.defer();
        var promise = defered.promise;
        this._ogapi.Napi.put(this._buildURL(), this._composeElementUpdate(), undefined, this._getExtraHeaders(), this._getUrlParameters())
            .then((res) => {
                if (res.statusCode === 200) {
                    defered.resolve({
                        statusCode: res.statusCode
                    });
                } else if (res.status === 200) {
                    defered.resolve({
                        statusCode: res.status
                    });
                } else {
                    defered.reject({
                        errors: res.errors,
                        statusCode: res.statusCode
                    });
                }
            })
            .catch((error) => {
                defered.reject(error);
            });
        return promise;
    }


}