Home Manual Reference Source Test Repository

src/searching/builder/CertificatesSearchBuilder.js

'use strict';

import SearchBuilder from './SearchBuilder';
import FieldFinder from '../../util/searchingFields/FieldFinder';

const BASE_URL = '/certificates';
/**
 * Defined a search over Bundles    
 * @example ogapi.bundlesSearchBuilder()
 */
export default class CertificatesSearchBuilder extends SearchBuilder {
    /**
     *  @param {!InternalOpenGateAPI} parent - Instance of our InternalOpenGateAPI
     */
    constructor(parent) {
        super(parent, {}, new FieldFinder(parent, BASE_URL));
        this._url = BASE_URL;
        this._fetch = false;
        this._assignable = false;
    }

    /** 
     *  The search result will have all certificates which can be assignable to some device
     *  ogapi.certificatesSearchBuilder().assignable()
     * @return {CertificatesSearchBuilder} 
     */
    assignable() {
        this._assignable = true;
        return this;
    }

    /**
     * The search result will have all certificates which can be administered by the user
     * @example
     *  ogapi.certificatesSearchBuilder().administrable()
     * @return {CertificatesSearchBuilder} 
     **/
    administrable() {
        this._assignable = false;
        return this;
    }

    /**
     * Set fecth value
     * @example
     *  ogapi.certificatesSearchBuilder().withFetch(true)
     * @param {!flag} flag
     * @throws {Error} throw error when flag is not a number
     * @return {CertificatesSearchBuilder} 
     */
    withFetch(flag) {
        if (flag === true || flag === false) {
            this._fetch = flag;
        } else {
            throw new Error('Flag fecth incorrect');
        }
        return this;
    }


    _buildUrl() {
        let url = this._url;
        if (this._fetch === true) {
            this._urlParams.fetch = 1;
        }
        if (this._assignable === true) {
            this._urlParams.visibility = 'assignable';
        }
        return url;
    }

}