cast.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { ApiError } from "../error";
  2. import { logError } from "../sentry";
  3. import { getToken } from "../storage/localStorage/helpers";
  4. import HTTPService from "./HTTPService";
  5. import { getEndpoint } from "./api";
  6. class CastGateway {
  7. constructor() {}
  8. public async getCastData(code: string): Promise<string | null> {
  9. let resp;
  10. try {
  11. resp = await HTTPService.get(
  12. `${getEndpoint()}/cast/cast-data/${code}`,
  13. );
  14. } catch (e) {
  15. logError(e, "failed to getCastData");
  16. throw e;
  17. }
  18. return resp.data.encCastData;
  19. }
  20. public async revokeAllTokens() {
  21. try {
  22. const token = getToken();
  23. await HTTPService.delete(
  24. getEndpoint() + "/cast/revoke-all-tokens/",
  25. undefined,
  26. undefined,
  27. {
  28. "X-Auth-Token": token,
  29. },
  30. );
  31. } catch (e) {
  32. logError(e, "removeAllTokens failed");
  33. // swallow error
  34. }
  35. }
  36. public async getPublicKey(code: string): Promise<string> {
  37. let resp;
  38. try {
  39. const token = getToken();
  40. resp = await HTTPService.get(
  41. `${getEndpoint()}/cast/device-info/${code}`,
  42. undefined,
  43. {
  44. "X-Auth-Token": token,
  45. },
  46. );
  47. } catch (e) {
  48. if (e instanceof ApiError && e.httpStatusCode === 404) {
  49. return "";
  50. }
  51. logError(e, "failed to getPublicKey");
  52. throw e;
  53. }
  54. return resp.data.publicKey;
  55. }
  56. public async registerDevice(code: string, publicKey: string) {
  57. await HTTPService.post(getEndpoint() + "/cast/device-info/", {
  58. deviceCode: `${code}`,
  59. publicKey: publicKey,
  60. });
  61. }
  62. public async publishCastPayload(
  63. code: string,
  64. castPayload: string,
  65. collectionID: number,
  66. castToken: string,
  67. ) {
  68. const token = getToken();
  69. await HTTPService.post(
  70. getEndpoint() + "/cast/cast-data/",
  71. {
  72. deviceCode: `${code}`,
  73. encPayload: castPayload,
  74. collectionID: collectionID,
  75. castToken: castToken,
  76. },
  77. undefined,
  78. { "X-Auth-Token": token },
  79. );
  80. }
  81. }
  82. export default new CastGateway();