Home Reference Source

src/api/TrackFetcher.js

import { TRACKS as ENDPOINT } from '../Endpoint';
import Fetcher from './Fetcher';

/**
 * Get metadata of a track.
 * @see https://docs-en.kkbox.codes/v1.1/reference#tracks
 */
export default class TrackFetcher extends Fetcher {
  /**
   * @ignore
   */
  constructor(http, territory = 'TW') {
    super(http, territory);

    /**
     * @ignore
     */
    this.trackID = undefined;
  }

  /**
   * Set the track fetcher's track ID.
   *
   * @param {string} trackID - The ID of a track.
   * @return {Track}
   * @see https://docs-en.kkbox.codes/v1.1/reference#tracks-track_id
   */
  setTrackID(trackID) {
    this.trackID = trackID;
    return this;
  }

  /**
   * Get metadata of the track with the track fetcher.
   *
   * @return {Promise}
   * @example api.trackFetcher.setTrackID('KpnEGVHEsGgkoB0MBk').fetchMetadata();
   * @see https://docs-en.kkbox.codes/v1.1/reference#tracks-track_id
   */
  fetchMetadata() {
    return this.http.get(ENDPOINT + '/' + this.trackID, {
      territory: this.territory
    });
  }

  /**
   * Get KKBOX web widget uri of the track.
   * @example https://widget.kkbox.com/v1/?id=8sD5pE4dV0Zqmmler6&type=song
   * @return {string}
   */
  getWidgetUri() {
    return `https://widget.kkbox.com/v1/?id=${this.trackID}&type=song`;
  }
}