Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

148 lines
5.1KB

  1. import { Injectable } from '@angular/core';
  2. import { ServiceHelper } from 'app/helper/service-helper';
  3. @Injectable({
  4. providedIn: 'root'
  5. })
  6. export class SpotifyService {
  7. // protected _playlists: Array<Object> = [];
  8. // protected spotifyWebApi = require('spotify-web-api-node');
  9. // constructor(
  10. // protected offsetHelper: ServiceHelper.OfssetHelper,
  11. // ) { }
  12. // public async setUserPlaylists(): Promise<Object[]> {
  13. // return new Promise<Object[]>(
  14. // (resolve, reject) => {
  15. // // get All Playlists of user
  16. // this.getAllUserPlaylists().then(
  17. // (playlists) => {
  18. // this.resolvePlaylists(playlists).then(resolvedPlaylists => {
  19. // this._playlists = resolvedPlaylists as Object[];
  20. // resolve(this._playlists);
  21. // });
  22. // },
  23. // (err) => {
  24. // reject(err);
  25. // });
  26. // });
  27. // }
  28. // public get playlists(): Array<Object> {
  29. // return this._playlists;
  30. // }
  31. // public getPlaylistById(playlistId: string): Object | null {
  32. // return this._playlists.find((playlist) => {
  33. // return playlist['id'] === playlistId;
  34. // });
  35. // }
  36. // protected enlistPlaylistInQueue(playlist: Object) {
  37. // console.debug(`Too many Requests save ${playlist} in Queue`);
  38. // // TODO enlist Playlist in DB
  39. // }
  40. // protected async getAllUserPlaylists(pagingObject?: Object): Promise<Array<Object>> {
  41. // return new Promise<Array<Object>>(async (resolve, reject) => {
  42. // let playlists = new Array<Object>();
  43. // this.spotifyWebApi.getUserPlaylists({ offset: !!pagingObject ? pagingObject['offset'] : 0 }).then(
  44. // async (paginatePlaylistsResponse) => {
  45. // if (!paginatePlaylistsResponse) {
  46. // reject(`Can't get Playlists of current user, response empty.`);
  47. // }
  48. // playlists = paginatePlaylistsResponse.body.items;
  49. // pagingObject = paginatePlaylistsResponse.body;
  50. // if (paginatePlaylistsResponse.body.next) {
  51. // const offset = this.offsetHelper.getNextOffsetFromUrl(paginatePlaylistsResponse.body.next);
  52. // if (offset === -1) {
  53. // resolve(playlists);
  54. // }
  55. // pagingObject['offset'] = offset;
  56. // this.getAllUserPlaylists(pagingObject).then((paginatePlaylists) => {
  57. // playlists = playlists.concat(paginatePlaylists);
  58. // resolve(playlists);
  59. // },
  60. // (err) => {
  61. // reject(err);
  62. // });
  63. // return;
  64. // }
  65. // resolve(playlists);
  66. // },
  67. // (err) => {
  68. // if (err.statusCode === ServiceHelper.SPOTIFY_STAUS_CODES.TOO_MANY) {
  69. // playlists.forEach(playlist => {
  70. // this.enlistPlaylistInQueue(playlist)
  71. // });
  72. // resolve();
  73. // return;
  74. // }
  75. // reject(`Can't get Playlists of current user ${err}`);
  76. // }
  77. // );
  78. // });
  79. // }
  80. // protected async resolvePlaylists(playlists: Array<Object>): Promise<Object> {
  81. // const getPlaylistTracksPromises = Array<Promise<Object>>();
  82. // for (const playlist of playlists) {
  83. // getPlaylistTracksPromises.push(
  84. // this.resolvePlaylist(playlist)
  85. // );
  86. // }
  87. // return Promise.all(getPlaylistTracksPromises);
  88. // }
  89. // protected resolvePlaylist(
  90. // playlist,
  91. // pagingObject?
  92. // ): Promise<Object> {
  93. // return new Promise<Object>(async (resolve, reject) => {
  94. // this.spotifyWebApi.getPlaylistTracks(playlist.id, { offset: !!pagingObject ? pagingObject.offset : 0 }).then(
  95. // (tracksResponse) => {
  96. // const fullPlaylist = ServiceHelper.GenericHelper.deepClone(playlist);
  97. // if (!playlist) {
  98. // resolve(fullPlaylist);
  99. // return;
  100. // }
  101. // fullPlaylist.tracks = tracksResponse.body;
  102. // pagingObject = tracksResponse.body;
  103. // if (tracksResponse.body.next) {
  104. // const offset = this.offsetHelper.getNextOffsetFromUrl(tracksResponse.body.next);
  105. // if (offset === -1) {
  106. // resolve(fullPlaylist);
  107. // return;
  108. // }
  109. // pagingObject.offset = offset;
  110. // this.resolvePlaylist(fullPlaylist, pagingObject).then(
  111. // (fullTracksResponse) => {
  112. // if (fullTracksResponse) {
  113. // fullPlaylist.tracks.items = fullPlaylist.tracks.items.concat(fullTracksResponse['tracks'].items);
  114. // }
  115. // resolve(fullPlaylist);
  116. // },
  117. // (err) => {
  118. // reject(err);
  119. // });
  120. // return;
  121. // }
  122. // resolve(fullPlaylist);
  123. // }, (err) => {
  124. // if (err.statusCode === ServiceHelper.SPOTIFY_STAUS_CODES.TOO_MANY) {
  125. // this.enlistPlaylistInQueue(playlist)
  126. // resolve();
  127. // return;
  128. // }
  129. // reject(`Can't get Playlist: ${playlist.name}. ${err}`);
  130. // })
  131. // });
  132. // }
  133. }