Home Manual Reference Source Test Repository

src/organization_manufacturer/ManufacturerFinder.js

'use strict';

import ProvisionGenericFinder from '../ProvisionGenericFinder';
import { MANUFACTURERS_RESOURCE, PRE_RESOURCE } from './Manufacturer'

/**
 *   This class allow make get request to hardware manufacturers resource into Opengate North API.
 */
export default class ManufacturerFinder extends ProvisionGenericFinder {

    /**
     * Constructor
     * @param {InternalOpenGateAPI} Reference to the API object.
     */
    constructor(ogapi) {
        super(ogapi, PRE_RESOURCE, 'manufacturer', 'Manufacturer not found');
    }

    /**
     * @return {String} This returns a string with the URL of the request.
     * @private
     */
    _composeUrl() {
        this._setUrlParameters({
            visibility: this._visibility || 'assignable'
        });

        return this._baseUrl + "/" + this._organization + MANUFACTURERS_RESOURCE + (this._identifier ? "/" + this._identifier : "");
    }

    /**
     * Marks visibility assignable for manufacturer list retrieval
     * @test
     *   ogapi.newOrganizationManufacturerFinder().assignable().findByOrganization('organization').then().catch();
     * @return {this} 
     */
    assignable() {
        this._visibility = 'assignable'
        return this
    }

    /**
     * Marks visibility administrable for manufacturer list retrieval
     * @test
     *   ogapi.newOrganizationManufacturerFinder().assignable().findByOrganization('organization').then().catch();
     * @return {this} 
     */
    administrable() {
        this._visibility = 'administrable'
        return this
    }

    /**
     * Retrieves all manufacturer from a organization
     * @test
     *   ogapi.newOrganizationManufacturerFinder().findByOrganization('organization').then().catch();
     * @param {string} organization - organization name .
     * @return {Promise} 
     */
    findByOrganization(organization) {
        this._organization = organization;
        return this._execute();
    }

    /**
     * Retrieves a specific manufacturer
     * @test
     *   ogapi.newOrganizationManufacturerFinder().findByOrganizationAndId('organization', 'identifier').then().catch();
     * @param {string} organization - organization name .
     * @param {string} identifier - manufacturer name .
     * @return {Promise} 
     */
    findByOrganizationAndId(organization, identifier) {
        this._organization = organization;
        this._identifier = identifier;
        return this._execute();
    }
}