@nomad-media/public 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nomad-media-sdk-debug.js +208 -478
- package/dist/nomad-media-sdk.min.js +5 -25
- package/package.json +1 -1
|
@@ -125,6 +125,11 @@
|
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
128
133
|
|
|
129
134
|
|
|
130
135
|
|
|
@@ -319,7 +324,7 @@ class NomadMediaSDK {
|
|
|
319
324
|
|
|
320
325
|
try
|
|
321
326
|
{
|
|
322
|
-
const LOGIN_INFO = await _login(this.config.username, this.config.password,
|
|
327
|
+
const LOGIN_INFO = await _login(this, this.config.username, this.config.password,
|
|
323
328
|
this.config.serviceApiUrl, this.debugMode);
|
|
324
329
|
this.token = LOGIN_INFO["token"];
|
|
325
330
|
this.refreshTokenVal = LOGIN_INFO["refreshToken"];
|
|
@@ -353,7 +358,7 @@ class NomadMediaSDK {
|
|
|
353
358
|
|
|
354
359
|
try
|
|
355
360
|
{
|
|
356
|
-
await _logout(this.token, this.config.serviceApiUrl, this.debugMode);
|
|
361
|
+
await _logout(this, this.token, this.config.serviceApiUrl, this.debugMode);
|
|
357
362
|
this.token = null;
|
|
358
363
|
this.refreshTokenVal = null;
|
|
359
364
|
this.expirationSeconds = null;
|
|
@@ -383,7 +388,7 @@ class NomadMediaSDK {
|
|
|
383
388
|
|
|
384
389
|
try
|
|
385
390
|
{
|
|
386
|
-
const TOKEN_INFO = await _refreshToken(this.token, this.config.serviceApiUrl,
|
|
391
|
+
const TOKEN_INFO = await _refreshToken(this, this.token, this.config.serviceApiUrl,
|
|
387
392
|
this.refreshTokenVal, this.debugMode);
|
|
388
393
|
this.token = TOKEN_INFO["token"];
|
|
389
394
|
_printDatetime(`Token refresh successful`);
|
|
@@ -437,7 +442,7 @@ class NomadMediaSDK {
|
|
|
437
442
|
|
|
438
443
|
try
|
|
439
444
|
{
|
|
440
|
-
await _forgotPassword(this.config.serviceApiUrl, USERNAME, this.debugMode);
|
|
445
|
+
await _forgotPassword(this, this.config.serviceApiUrl, USERNAME, this.debugMode);
|
|
441
446
|
_printDatetime(`Code sent to ${USERNAME}`);
|
|
442
447
|
}
|
|
443
448
|
catch (error)
|
|
@@ -466,7 +471,7 @@ class NomadMediaSDK {
|
|
|
466
471
|
|
|
467
472
|
try
|
|
468
473
|
{
|
|
469
|
-
await _resetPassword(this.config.serviceApiUrl, USERNAME, CODE, NEW_PASSWORD,
|
|
474
|
+
await _resetPassword(this, this.config.serviceApiUrl, USERNAME, CODE, NEW_PASSWORD,
|
|
470
475
|
this.debugMode);
|
|
471
476
|
_printDatetime(`Password reset for ${USERNAME}`);
|
|
472
477
|
}
|
|
@@ -506,7 +511,7 @@ class NomadMediaSDK {
|
|
|
506
511
|
|
|
507
512
|
try
|
|
508
513
|
{
|
|
509
|
-
await _clearContinueWatching(this.token, this.config.serviceApiUrl, USER_ID, ASSET_ID,
|
|
514
|
+
await _clearContinueWatching(this, this.token, this.config.serviceApiUrl, USER_ID, ASSET_ID,
|
|
510
515
|
this.debugMode);
|
|
511
516
|
_printDatetime(`Continue watching cleared`);
|
|
512
517
|
}
|
|
@@ -545,7 +550,7 @@ class NomadMediaSDK {
|
|
|
545
550
|
{
|
|
546
551
|
USER_ID = USER_ID || this.id;
|
|
547
552
|
|
|
548
|
-
await _clearWatchlist(this.token, this.config.serviceApiUrl, USER_ID, this.debugMode);
|
|
553
|
+
await _clearWatchlist(this, this.token, this.config.serviceApiUrl, USER_ID, this.debugMode);
|
|
549
554
|
_printDatetime(`Watchlist cleared`);
|
|
550
555
|
}
|
|
551
556
|
catch (error)
|
|
@@ -584,7 +589,7 @@ class NomadMediaSDK {
|
|
|
584
589
|
|
|
585
590
|
try
|
|
586
591
|
{
|
|
587
|
-
const GET_FORMS_INFO = await _createForm(this.token, this.config.serviceApiUrl,
|
|
592
|
+
const GET_FORMS_INFO = await _createForm(this, this.token, this.config.serviceApiUrl,
|
|
588
593
|
CONTENT_DEFINITION_ID, FORM_INFO, this.debugMode);
|
|
589
594
|
_printDatetime(`Form created`);
|
|
590
595
|
return GET_FORMS_INFO;
|
|
@@ -624,7 +629,7 @@ class NomadMediaSDK {
|
|
|
624
629
|
|
|
625
630
|
try
|
|
626
631
|
{
|
|
627
|
-
const GET_CONTENT_COOKIES_INFO = await _getContentCookies(this.token,
|
|
632
|
+
const GET_CONTENT_COOKIES_INFO = await _getContentCookies(this, this.token,
|
|
628
633
|
this.config.serviceApiUrl, CONTENT_ID, this.debugMode);
|
|
629
634
|
_printDatetime(`Content cookies gotten`);
|
|
630
635
|
return GET_CONTENT_COOKIES_INFO;
|
|
@@ -661,7 +666,7 @@ class NomadMediaSDK {
|
|
|
661
666
|
|
|
662
667
|
try
|
|
663
668
|
{
|
|
664
|
-
const GET_DYNAMIC_CONTENTS_INFO = await _getDefaultSiteConfig(this.token,
|
|
669
|
+
const GET_DYNAMIC_CONTENTS_INFO = await _getDefaultSiteConfig(this, this.token,
|
|
665
670
|
this.config.serviceApiUrl, this.debugMode);
|
|
666
671
|
_printDatetime(`Default site config gotten`);
|
|
667
672
|
return GET_DYNAMIC_CONTENTS_INFO;
|
|
@@ -694,7 +699,7 @@ class NomadMediaSDK {
|
|
|
694
699
|
|
|
695
700
|
try
|
|
696
701
|
{
|
|
697
|
-
const GET_DYNAMIC_CONTENT_INFO = await _getDynamicContent(this.token,
|
|
702
|
+
const GET_DYNAMIC_CONTENT_INFO = await _getDynamicContent(this, this.token,
|
|
698
703
|
this.config.serviceApiUrl, DYNAMIC_CONTENT_RECORD_ID, this.debugMode);
|
|
699
704
|
_printDatetime(`Dynamic content gotten: ${DYNAMIC_CONTENT_RECORD_ID}`);
|
|
700
705
|
return GET_DYNAMIC_CONTENT_INFO;
|
|
@@ -731,7 +736,7 @@ class NomadMediaSDK {
|
|
|
731
736
|
|
|
732
737
|
try
|
|
733
738
|
{
|
|
734
|
-
const GET_DYNAMIC_CONTENTS_INFO = await _getDynamicContents(this.token,
|
|
739
|
+
const GET_DYNAMIC_CONTENTS_INFO = await _getDynamicContents(this, this.token,
|
|
735
740
|
this.config.serviceApiUrl, this.debugMode);
|
|
736
741
|
_printDatetime(`Dynamic contents gotten`);
|
|
737
742
|
return GET_DYNAMIC_CONTENTS_INFO;
|
|
@@ -769,7 +774,7 @@ class NomadMediaSDK {
|
|
|
769
774
|
|
|
770
775
|
try
|
|
771
776
|
{
|
|
772
|
-
const GET_MEDIA_GROUP_INFO = await _getMediaGroup(this.token, this.config.serviceApiUrl,
|
|
777
|
+
const GET_MEDIA_GROUP_INFO = await _getMediaGroup(this, this.token, this.config.serviceApiUrl,
|
|
773
778
|
MEDIA_GROUP_ID, this.debugMode);
|
|
774
779
|
_printDatetime(`Media group gotten: ${MEDIA_GROUP_ID}`);
|
|
775
780
|
return GET_MEDIA_GROUP_INFO;
|
|
@@ -807,7 +812,7 @@ class NomadMediaSDK {
|
|
|
807
812
|
|
|
808
813
|
try
|
|
809
814
|
{
|
|
810
|
-
const GET_MEDIA_ITEM_INFO = await _getMediaItem(this.token, this.config.serviceApiUrl,
|
|
815
|
+
const GET_MEDIA_ITEM_INFO = await _getMediaItem(this, this.token, this.config.serviceApiUrl,
|
|
811
816
|
MEDIA_ITEM_ID, this.debugMode);
|
|
812
817
|
_printDatetime(`Media item gotten: ${MEDIA_ITEM_ID}`);
|
|
813
818
|
return GET_MEDIA_ITEM_INFO;
|
|
@@ -846,7 +851,7 @@ class NomadMediaSDK {
|
|
|
846
851
|
|
|
847
852
|
try
|
|
848
853
|
{
|
|
849
|
-
const GET_MY_CONTENT_INFO = await _getMyContent(this.token, this.config.serviceApiUrl,
|
|
854
|
+
const GET_MY_CONTENT_INFO = await _getMyContent(this, this.token, this.config.serviceApiUrl,
|
|
850
855
|
this.debugMode);
|
|
851
856
|
_printDatetime(`My content gotten`);
|
|
852
857
|
return GET_MY_CONTENT_INFO;
|
|
@@ -879,7 +884,7 @@ class NomadMediaSDK {
|
|
|
879
884
|
|
|
880
885
|
try
|
|
881
886
|
{
|
|
882
|
-
const GET_MY_GROUP_INFO = await _getMyGroup(this.token, this.config.serviceApiUrl,
|
|
887
|
+
const GET_MY_GROUP_INFO = await _getMyGroup(this, this.token, this.config.serviceApiUrl,
|
|
883
888
|
GROUP_ID, this.debugMode);
|
|
884
889
|
_printDatetime(`My group gotten: ${GROUP_ID}`);
|
|
885
890
|
return GET_MY_GROUP_INFO;
|
|
@@ -912,7 +917,7 @@ class NomadMediaSDK {
|
|
|
912
917
|
|
|
913
918
|
try
|
|
914
919
|
{
|
|
915
|
-
const GET_DYNAMIC_CONTENT_INFO = await _getSiteConfig(this.token,
|
|
920
|
+
const GET_DYNAMIC_CONTENT_INFO = await _getSiteConfig(this, this.token,
|
|
916
921
|
this.config.serviceApiUrl, SITE_CONFIG_RECORD_ID, this.debugMode);
|
|
917
922
|
_printDatetime(`Site config gotten: ${SITE_CONFIG_RECORD_ID}`);
|
|
918
923
|
return GET_DYNAMIC_CONTENT_INFO;
|
|
@@ -955,7 +960,7 @@ class NomadMediaSDK {
|
|
|
955
960
|
|
|
956
961
|
try
|
|
957
962
|
{
|
|
958
|
-
const MEDIA_SEARCH_INFO = await _mediaSearch(this.token, this.config.serviceApiUrl,
|
|
963
|
+
const MEDIA_SEARCH_INFO = await _mediaSearch(this, this.token, this.config.serviceApiUrl,
|
|
959
964
|
QUERY, IDS, SORT_FIELDS, OFFSET, SIZE, this.debugMode);
|
|
960
965
|
_printDatetime(`Media search complete`);
|
|
961
966
|
return MEDIA_SEARCH_INFO;
|
|
@@ -967,82 +972,107 @@ class NomadMediaSDK {
|
|
|
967
972
|
}
|
|
968
973
|
}
|
|
969
974
|
|
|
970
|
-
|
|
971
|
-
|
|
975
|
+
// misc functions
|
|
976
|
+
/**
|
|
977
|
+
* @function miscFunctons
|
|
978
|
+
* @async
|
|
979
|
+
* @description Calls any nomad function given URL method and body.
|
|
980
|
+
* @param {string} URL_PATH - The URL path of the function.
|
|
981
|
+
* @param {string} METHOD - The method of the function.
|
|
982
|
+
* @param {JSON | null} BODY - The body of the api call.
|
|
983
|
+
* @param {boolean | null} NOT_API_PATH - If the path has /api.
|
|
984
|
+
* @returns {Promise<JSON>} - A promise that resolves when the function is called.
|
|
985
|
+
* Returns the information of the called function.
|
|
986
|
+
* @throws {Error} - An error is thrown if the function fails to call.
|
|
987
|
+
*/
|
|
988
|
+
|
|
989
|
+
async miscFunctions(URL_PATH, METHOD, BODY, NOT_API_PATH)
|
|
990
|
+
{
|
|
991
|
+
if (this.token === null)
|
|
992
|
+
{
|
|
993
|
+
await this._init();
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
_printDatetime(`Calling function: ${URL_PATH}`);
|
|
997
|
+
|
|
998
|
+
try
|
|
999
|
+
{
|
|
1000
|
+
let API_URL = `${this.config.serviceApiUrl}/${URL_PATH}`;
|
|
1001
|
+
if (NOT_API_PATH) {
|
|
1002
|
+
API_URL = API_URL.replace('/api', '');
|
|
1003
|
+
API_URL = API_URL.replace('app-api.', '');
|
|
1004
|
+
API_URL = API_URL.replace('admin-app.', '');
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
const HEADERS = new Headers();
|
|
1008
|
+
HEADERS.append("Content-Type", "application/json");
|
|
1009
|
+
HEADERS.append("Authorization", `Bearer ${this.token}`);
|
|
1010
|
+
|
|
1011
|
+
if (this.debugMode)
|
|
1012
|
+
{
|
|
1013
|
+
console.log(`URL: ${API_URL}\nMETHOD: ${METHOD}`);
|
|
1014
|
+
if (BODY) console.log(`BODY: ${JSON.stringify(BODY, null, 4 )}`);
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
const REQUEST = {
|
|
1018
|
+
method: METHOD,
|
|
1019
|
+
headers: HEADERS
|
|
1020
|
+
};
|
|
1021
|
+
if (BODY) {
|
|
1022
|
+
REQUEST.body = JSON.stringify(BODY);
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
const RESPONSE = await fetch(API_URL, REQUEST);
|
|
1026
|
+
|
|
1027
|
+
if (!RESPONSE.ok)
|
|
1028
|
+
{
|
|
1029
|
+
throw await RESPONSE.json();
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
try
|
|
1033
|
+
{
|
|
1034
|
+
return await RESPONSE.json();
|
|
1035
|
+
}
|
|
1036
|
+
catch (error)
|
|
1037
|
+
{
|
|
1038
|
+
return RESPONSE.text();
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
catch (error)
|
|
1042
|
+
{
|
|
1043
|
+
_apiExceptionHandler(error, "API call failed");
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
|
|
972
1048
|
export default NomadMediaSDK;
|
|
973
1049
|
|
|
974
1050
|
|
|
975
|
-
|
|
1051
|
+
|
|
1052
|
+
async function _forgotPassword(instance, URL, USERNAME, DEBUG_MODE)
|
|
976
1053
|
{
|
|
977
1054
|
const API_URL = `${URL}/api/account/forgot-password`;
|
|
978
1055
|
|
|
979
|
-
const HEADERS = new Headers();
|
|
980
|
-
HEADERS.append("Content-Type", "application/json");
|
|
981
|
-
|
|
982
1056
|
const BODY = {
|
|
983
1057
|
username: USERNAME
|
|
984
1058
|
};
|
|
985
1059
|
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
try
|
|
989
|
-
{
|
|
990
|
-
const RESPONSE = await fetch(API_URL, {
|
|
991
|
-
method: "POST",
|
|
992
|
-
headers: HEADERS,
|
|
993
|
-
body: JSON.stringify(BODY)
|
|
994
|
-
}).catch((exception) => {
|
|
995
|
-
throw exception;
|
|
996
|
-
});
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
if (!RESPONSE.ok) {
|
|
1000
|
-
throw await RESPONSE.json()
|
|
1001
|
-
}
|
|
1002
|
-
}
|
|
1003
|
-
catch (error)
|
|
1004
|
-
{
|
|
1005
|
-
_apiExceptionHandler(error, "Forgot Password Failed");
|
|
1006
|
-
}
|
|
1060
|
+
return await _sendRequest(instance, null, "Forgot Password", API_URL, "POST", null, BODY, DEBUG_MODE);
|
|
1007
1061
|
}
|
|
1008
1062
|
|
|
1009
1063
|
|
|
1010
1064
|
|
|
1011
1065
|
|
|
1012
|
-
async function _login(USERNAME, PASSWORD, URL, DEBUG_MODE)
|
|
1066
|
+
async function _login(instance, USERNAME, PASSWORD, URL, DEBUG_MODE)
|
|
1013
1067
|
{
|
|
1014
1068
|
const API_URL = `${URL}/api/account/login`;
|
|
1015
1069
|
|
|
1016
|
-
const HEADERS = {
|
|
1017
|
-
"Content-Type": "application/json"
|
|
1018
|
-
};
|
|
1019
|
-
|
|
1020
1070
|
const BODY = {
|
|
1021
1071
|
"userName": USERNAME,
|
|
1022
1072
|
"password": PASSWORD
|
|
1023
1073
|
};
|
|
1024
1074
|
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
try
|
|
1028
|
-
{
|
|
1029
|
-
const RESPONSE = await fetch(API_URL, {
|
|
1030
|
-
method: "POST",
|
|
1031
|
-
headers: HEADERS,
|
|
1032
|
-
body: JSON.stringify(BODY)
|
|
1033
|
-
})
|
|
1034
|
-
|
|
1035
|
-
if (!RESPONSE.ok)
|
|
1036
|
-
{
|
|
1037
|
-
throw await RESPONSE.json()
|
|
1038
|
-
}
|
|
1039
|
-
|
|
1040
|
-
return await RESPONSE.json();
|
|
1041
|
-
}
|
|
1042
|
-
catch (error)
|
|
1043
|
-
{
|
|
1044
|
-
_apiExceptionHandler(error, "Login Failed");
|
|
1045
|
-
}
|
|
1075
|
+
return await _sendRequest(instance, null, "Login", API_URL, "POST", null, BODY, DEBUG_MODE);
|
|
1046
1076
|
}
|
|
1047
1077
|
|
|
1048
1078
|
|
|
@@ -1050,35 +1080,11 @@ async function _login(USERNAME, PASSWORD, URL, DEBUG_MODE)
|
|
|
1050
1080
|
|
|
1051
1081
|
|
|
1052
1082
|
|
|
1053
|
-
async function _logout(AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1083
|
+
async function _logout(instance, AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1054
1084
|
{
|
|
1055
1085
|
const API_URL = `${URL}/api/account/logout`;
|
|
1056
1086
|
|
|
1057
|
-
|
|
1058
|
-
const HEADERS = new Headers();
|
|
1059
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1060
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1061
|
-
|
|
1062
|
-
// Build the POST payload body
|
|
1063
|
-
|
|
1064
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: POST`);
|
|
1065
|
-
|
|
1066
|
-
try
|
|
1067
|
-
{
|
|
1068
|
-
const RESPONSE = await fetch(API_URL, {
|
|
1069
|
-
method: "POST",
|
|
1070
|
-
headers: HEADERS
|
|
1071
|
-
});
|
|
1072
|
-
|
|
1073
|
-
if (!RESPONSE.ok) {
|
|
1074
|
-
throw await RESPONSE.json()
|
|
1075
|
-
}
|
|
1076
|
-
}
|
|
1077
|
-
catch (error)
|
|
1078
|
-
{
|
|
1079
|
-
_apiExceptionHandler(error, "Logout Failed");
|
|
1080
|
-
}
|
|
1081
|
-
|
|
1087
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Logout", API_URL, "POST", null, null, DEBUG_MODE);
|
|
1082
1088
|
}
|
|
1083
1089
|
|
|
1084
1090
|
|
|
@@ -1086,81 +1092,33 @@ async function _logout(AUTH_TOKEN, URL, DEBUG_MODE)
|
|
|
1086
1092
|
|
|
1087
1093
|
|
|
1088
1094
|
|
|
1089
|
-
async function _refreshToken(AUTH_TOKEN, URL, REFRESH_TOKEN, DEBUG_MODE)
|
|
1095
|
+
async function _refreshToken(instance, AUTH_TOKEN, URL, REFRESH_TOKEN, DEBUG_MODE)
|
|
1090
1096
|
{
|
|
1091
1097
|
const API_URL = `${URL}/api/account/refresh-token`;
|
|
1092
1098
|
|
|
1093
|
-
// Create header for the request
|
|
1094
|
-
const HEADERS = new Headers();
|
|
1095
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1096
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1097
|
-
|
|
1098
|
-
// Build the payload body
|
|
1099
1099
|
const BODY = {
|
|
1100
1100
|
refreshToken: REFRESH_TOKEN
|
|
1101
1101
|
};
|
|
1102
1102
|
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
try
|
|
1106
|
-
{
|
|
1107
|
-
const RESPONSE = await fetch(API_URL, {
|
|
1108
|
-
method: "POST",
|
|
1109
|
-
headers: HEADERS,
|
|
1110
|
-
body: JSON.stringify(BODY)
|
|
1111
|
-
});
|
|
1112
|
-
|
|
1113
|
-
if (!RESPONSE.ok) {
|
|
1114
|
-
throw await RESPONSE.json()
|
|
1115
|
-
}
|
|
1116
|
-
|
|
1117
|
-
return await RESPONSE.json();
|
|
1118
|
-
|
|
1119
|
-
}
|
|
1120
|
-
catch (error)
|
|
1121
|
-
{
|
|
1122
|
-
_apiExceptionHandler(error, "Refreshing Token Failed");
|
|
1123
|
-
}
|
|
1103
|
+
const TOKEN_INFO = await _sendRequest(instance, AUTH_TOKEN, "Refreshing Token", API_URL, "POST", null, BODY, DEBUG_MODE);
|
|
1104
|
+
instance.token = TOKEN_INFO.token;
|
|
1124
1105
|
}
|
|
1125
1106
|
|
|
1126
1107
|
|
|
1127
1108
|
|
|
1128
1109
|
|
|
1129
1110
|
|
|
1130
|
-
async function _resetPassword(URL, USERNAME, TOKEN, NEW_PASSWORD, DEBUG_MODE)
|
|
1111
|
+
async function _resetPassword(instance, URL, USERNAME, TOKEN, NEW_PASSWORD, DEBUG_MODE)
|
|
1131
1112
|
{
|
|
1132
1113
|
const API_URL = `${URL}/api/account/reset-password`;
|
|
1133
1114
|
|
|
1134
|
-
// Create header for the request
|
|
1135
|
-
const HEADERS = new Headers();
|
|
1136
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1137
|
-
|
|
1138
1115
|
const BODY = {
|
|
1139
1116
|
userName: USERNAME,
|
|
1140
1117
|
TOKEN: TOKEN,
|
|
1141
1118
|
newPassword: NEW_PASSWORD
|
|
1142
1119
|
};
|
|
1143
1120
|
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
try
|
|
1147
|
-
{
|
|
1148
|
-
const RESPONSE = await fetch(API_URL, {
|
|
1149
|
-
method: "POST",
|
|
1150
|
-
headers: HEADERS,
|
|
1151
|
-
body: JSON.stringify(BODY)
|
|
1152
|
-
});
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
if (!RESPONSE.ok) {
|
|
1156
|
-
throw await RESPONSE.json();
|
|
1157
|
-
}
|
|
1158
|
-
}
|
|
1159
|
-
catch (error)
|
|
1160
|
-
{
|
|
1161
|
-
_apiExceptionHandler(error, "Reset Password Failed");
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1121
|
+
return await _sendRequest(instance, null, "Reset Password", API_URL, "POST", null, BODY, DEBUG_MODE);
|
|
1164
1122
|
}
|
|
1165
1123
|
|
|
1166
1124
|
|
|
@@ -1225,6 +1183,75 @@ function _printDatetime(msg)
|
|
|
1225
1183
|
}
|
|
1226
1184
|
|
|
1227
1185
|
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
import axios from 'axios';
|
|
1191
|
+
|
|
1192
|
+
const MAX_RETRIES = 5;
|
|
1193
|
+
const TIMEOUT = 30000;
|
|
1194
|
+
const SLEEP_TIME = 60000;
|
|
1195
|
+
|
|
1196
|
+
async function _sendRequest(instance, AUTH_TOKEN, FUNCTION_NAME, URL, METHOD_TYPE, PARAMS, BODY, DEBUG)
|
|
1197
|
+
{
|
|
1198
|
+
const HEADERS = {
|
|
1199
|
+
"Content-Type": "application/json"
|
|
1200
|
+
};
|
|
1201
|
+
|
|
1202
|
+
if (AUTH_TOKEN) HEADERS["Authorization"] = `Bearer ${AUTH_TOKEN}`;
|
|
1203
|
+
|
|
1204
|
+
if (DEBUG) console.log(`URL: ${URL}\nMETHOD: ${METHOD_TYPE}` + (PARAMS ? `\nPARAMS: ${JSON.stringify(PARAMS, null, 4)}` : "") + (BODY ? `\nBODY: ${JSON.stringify(BODY, null, 4)}` : ""));
|
|
1205
|
+
|
|
1206
|
+
let retries = 0;
|
|
1207
|
+
let RESPONSE = null;
|
|
1208
|
+
do
|
|
1209
|
+
{
|
|
1210
|
+
try
|
|
1211
|
+
{
|
|
1212
|
+
RESPONSE = await axios({
|
|
1213
|
+
method: METHOD_TYPE,
|
|
1214
|
+
url: URL,
|
|
1215
|
+
headers: HEADERS,
|
|
1216
|
+
params: PARAMS || {},
|
|
1217
|
+
data: BODY || {},
|
|
1218
|
+
timeout: TIMEOUT
|
|
1219
|
+
});
|
|
1220
|
+
|
|
1221
|
+
if (RESPONSE.status >= 200 && RESPONSE.status < 300)
|
|
1222
|
+
{
|
|
1223
|
+
break;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
if (RESPONSE.status === 403 && FUNCTION_NAME !== "Refreshing Token")
|
|
1227
|
+
{
|
|
1228
|
+
await instance.refreshToken();
|
|
1229
|
+
}
|
|
1230
|
+
else
|
|
1231
|
+
{
|
|
1232
|
+
throw new Error();
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
}
|
|
1236
|
+
catch (error)
|
|
1237
|
+
{
|
|
1238
|
+
if (error.code === 'ECONNABORTED' && retries < MAX_RETRIES)
|
|
1239
|
+
{
|
|
1240
|
+
retries++;
|
|
1241
|
+
await _sleep(SLEEP_TIME * 2 ** retries);
|
|
1242
|
+
}
|
|
1243
|
+
else
|
|
1244
|
+
{
|
|
1245
|
+
console.error(`${FUNCTION_NAME} failed`, error);
|
|
1246
|
+
_apiExceptionHandler(error, FUNCTION_NAME);
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
} while (!RESPONSE || RESPONSE.status < 200 || RESPONSE.status >= 300);
|
|
1250
|
+
try { return RESPONSE.data; }
|
|
1251
|
+
catch (error) { return; }
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
|
|
1228
1255
|
async function _sleep(duration) {
|
|
1229
1256
|
// Check for valid duration
|
|
1230
1257
|
if (!duration || duration === 0) {
|
|
@@ -1259,416 +1286,138 @@ function _slugify(text) {
|
|
|
1259
1286
|
|
|
1260
1287
|
|
|
1261
1288
|
|
|
1262
|
-
async function _clearContinueWatching(AUTH_TOKEN, URL, USER_ID, ASSET_ID, DEBUG_MODE)
|
|
1289
|
+
async function _clearContinueWatching(instance, AUTH_TOKEN, URL, USER_ID, ASSET_ID, DEBUG_MODE)
|
|
1263
1290
|
{
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
let params = [];
|
|
1267
|
-
if (USER_ID) params.push(`userId=${USER_ID}`);
|
|
1268
|
-
if (ASSET_ID) params.push(`assetId=${ASSET_ID}`);
|
|
1269
|
-
apiUrl += params.length ? `?${params.join('&')}` : '';
|
|
1291
|
+
const API_URL = `${URL}/api/media/clear-watching`;
|
|
1270
1292
|
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
if (DEBUG_MODE) console.log(`URL: ${apiUrl}\nMETHOD: POST`);
|
|
1277
|
-
|
|
1278
|
-
try
|
|
1279
|
-
{
|
|
1280
|
-
const RESPONSE = await fetch(`${apiUrl}`, {
|
|
1281
|
-
method: "POST",
|
|
1282
|
-
headers: HEADERS
|
|
1283
|
-
});
|
|
1293
|
+
const PARAMS = {
|
|
1294
|
+
userId: USER_ID,
|
|
1295
|
+
assetId: ASSET_ID
|
|
1296
|
+
};
|
|
1284
1297
|
|
|
1285
|
-
|
|
1286
|
-
throw await RESPONSE.json()
|
|
1287
|
-
}
|
|
1288
|
-
}
|
|
1289
|
-
catch (error)
|
|
1290
|
-
{
|
|
1291
|
-
_apiExceptionHandler(error, "Clear Continue Watching Failed");
|
|
1292
|
-
}
|
|
1298
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Clear Continue Watching", API_URL, "POST", PARAMS, null, DEBUG_MODE);
|
|
1293
1299
|
}
|
|
1294
1300
|
|
|
1295
1301
|
|
|
1296
1302
|
|
|
1297
1303
|
|
|
1298
|
-
async function _clearWatchlist(AUTH_TOKEN, URL, USER_ID, DEBUG_MODE)
|
|
1304
|
+
async function _clearWatchlist(instance, AUTH_TOKEN, URL, USER_ID, DEBUG_MODE)
|
|
1299
1305
|
{
|
|
1300
1306
|
const API_URL = `${URL}/api/media/clear-watchlist?userId=${USER_ID}`;
|
|
1301
1307
|
|
|
1302
|
-
|
|
1303
|
-
const HEADERS = new Headers();
|
|
1304
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1305
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1306
|
-
|
|
1307
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: POST`);
|
|
1308
|
-
|
|
1309
|
-
try
|
|
1310
|
-
{
|
|
1311
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1312
|
-
method: "POST",
|
|
1313
|
-
headers: HEADERS
|
|
1314
|
-
});
|
|
1315
|
-
|
|
1316
|
-
if (!RESPONSE.ok) {
|
|
1317
|
-
throw await RESPONSE.json()
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
|
-
catch (error)
|
|
1321
|
-
{
|
|
1322
|
-
_apiExceptionHandler(error, "Clear Watchlist Failed");
|
|
1323
|
-
}
|
|
1308
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Clear Watchlist", API_URL, "POST", null, null, DEBUG_MODE);
|
|
1324
1309
|
}
|
|
1325
1310
|
|
|
1326
1311
|
|
|
1327
1312
|
|
|
1328
1313
|
|
|
1329
|
-
async function _createForm(AUTH_TOKEN, URL, CONTENT_DEFINITION_ID, FORM_INFO, DEBUG_MODE)
|
|
1314
|
+
async function _createForm(instance, AUTH_TOKEN, URL, CONTENT_DEFINITION_ID, FORM_INFO, DEBUG_MODE)
|
|
1330
1315
|
{
|
|
1331
1316
|
const API_URL = `${URL}/api/media/form/${CONTENT_DEFINITION_ID}`;
|
|
1332
1317
|
|
|
1333
|
-
// Create header for the request
|
|
1334
|
-
const HEADERS = new Headers();
|
|
1335
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1336
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1337
|
-
|
|
1338
1318
|
const BODY = FORM_INFO;
|
|
1339
1319
|
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
try
|
|
1343
|
-
{
|
|
1344
|
-
const RESPONSE = await fetch(API_URL, {
|
|
1345
|
-
method: "POST",
|
|
1346
|
-
headers: HEADERS,
|
|
1347
|
-
body: JSON.stringify(BODY)
|
|
1348
|
-
});
|
|
1349
|
-
|
|
1350
|
-
if (!RESPONSE.ok) {
|
|
1351
|
-
throw await RESPONSE.json()
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1354
|
-
return await RESPONSE.json();
|
|
1355
|
-
}
|
|
1356
|
-
catch (error)
|
|
1357
|
-
{
|
|
1358
|
-
_apiExceptionHandler(error, "Creating Form Failed");
|
|
1359
|
-
}
|
|
1320
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Creating Form", API_URL, "POST", null, BODY, DEBUG_MODE);
|
|
1360
1321
|
}
|
|
1361
1322
|
|
|
1362
1323
|
|
|
1363
1324
|
|
|
1364
1325
|
|
|
1365
|
-
async function _getContentCookies(AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1326
|
+
async function _getContentCookies(instance, AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1366
1327
|
{
|
|
1367
1328
|
const API_URL = `${URL}/api/media/set-cookies/${ID}`;
|
|
1368
1329
|
|
|
1369
|
-
|
|
1370
|
-
const HEADERS = new Headers();
|
|
1371
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1372
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1373
|
-
|
|
1374
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1375
|
-
|
|
1376
|
-
try
|
|
1377
|
-
{
|
|
1378
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1379
|
-
method: "GET",
|
|
1380
|
-
headers: HEADERS
|
|
1381
|
-
});
|
|
1382
|
-
|
|
1383
|
-
if (!RESPONSE.ok) {
|
|
1384
|
-
throw await RESPONSE.json()
|
|
1385
|
-
}
|
|
1386
|
-
|
|
1387
|
-
return await RESPONSE.json();
|
|
1388
|
-
}
|
|
1389
|
-
catch (error)
|
|
1390
|
-
{
|
|
1391
|
-
_apiExceptionHandler(error, "Get Content Cookies Failed");
|
|
1392
|
-
}
|
|
1330
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Content Cookies", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1393
1331
|
}
|
|
1394
1332
|
|
|
1395
1333
|
|
|
1396
1334
|
|
|
1397
1335
|
|
|
1398
|
-
async function _getDefaultSiteConfig(AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1336
|
+
async function _getDefaultSiteConfig(instance, AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1399
1337
|
{
|
|
1400
1338
|
const API_URL = `${URL}/api/media/config`;
|
|
1401
1339
|
|
|
1402
|
-
|
|
1403
|
-
const HEADERS = new Headers();
|
|
1404
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1405
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1406
|
-
|
|
1407
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1408
|
-
|
|
1409
|
-
try
|
|
1410
|
-
{
|
|
1411
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1412
|
-
method: "GET",
|
|
1413
|
-
headers: HEADERS
|
|
1414
|
-
});
|
|
1415
|
-
|
|
1416
|
-
if (!RESPONSE.ok) {
|
|
1417
|
-
throw await RESPONSE.json()
|
|
1418
|
-
}
|
|
1419
|
-
|
|
1420
|
-
return await RESPONSE.json();
|
|
1421
|
-
}
|
|
1422
|
-
catch (error)
|
|
1423
|
-
{
|
|
1424
|
-
_apiExceptionHandler(error, "Get Default Site Config Failed");
|
|
1425
|
-
}
|
|
1340
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Default Site Config", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1426
1341
|
}
|
|
1427
1342
|
|
|
1428
1343
|
|
|
1429
1344
|
|
|
1430
1345
|
|
|
1431
|
-
async function _getDynamicContent(AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1346
|
+
async function _getDynamicContent(instance, AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1432
1347
|
{
|
|
1433
1348
|
const API_URL = `${URL}/api/media/content/${ID}`;
|
|
1434
1349
|
|
|
1435
|
-
|
|
1436
|
-
const HEADERS = new Headers();
|
|
1437
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1438
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1439
|
-
|
|
1440
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1441
|
-
|
|
1442
|
-
try
|
|
1443
|
-
{
|
|
1444
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1445
|
-
method: "GET",
|
|
1446
|
-
headers: HEADERS
|
|
1447
|
-
});
|
|
1448
|
-
|
|
1449
|
-
if (!RESPONSE.ok) {
|
|
1450
|
-
throw await RESPONSE.json()
|
|
1451
|
-
}
|
|
1452
|
-
|
|
1453
|
-
return await RESPONSE.json();
|
|
1454
|
-
}
|
|
1455
|
-
catch (error)
|
|
1456
|
-
{
|
|
1457
|
-
_apiExceptionHandler(error, "Get Dynamic Content Failed");
|
|
1458
|
-
}
|
|
1350
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Dynamic Content", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1459
1351
|
}
|
|
1460
1352
|
|
|
1461
1353
|
|
|
1462
1354
|
|
|
1463
1355
|
|
|
1464
|
-
async function _getDynamicContents(AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1356
|
+
async function _getDynamicContents(instance, AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1465
1357
|
{
|
|
1466
1358
|
const API_URL = `${URL}/api/media/content`;
|
|
1467
1359
|
|
|
1468
|
-
|
|
1469
|
-
const HEADERS = new Headers();
|
|
1470
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1471
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1472
|
-
|
|
1473
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1474
|
-
|
|
1475
|
-
try
|
|
1476
|
-
{
|
|
1477
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1478
|
-
method: "GET",
|
|
1479
|
-
headers: HEADERS
|
|
1480
|
-
});
|
|
1481
|
-
|
|
1482
|
-
if (!RESPONSE.ok) {
|
|
1483
|
-
throw await RESPONSE.json()
|
|
1484
|
-
}
|
|
1485
|
-
|
|
1486
|
-
return await RESPONSE.json();
|
|
1487
|
-
}
|
|
1488
|
-
catch (error)
|
|
1489
|
-
{
|
|
1490
|
-
_apiExceptionHandler(error, "Get Dynamic Contents Failed");
|
|
1491
|
-
}
|
|
1360
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Dynamic Contents", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1492
1361
|
}
|
|
1493
1362
|
|
|
1494
1363
|
|
|
1495
1364
|
|
|
1496
1365
|
|
|
1497
|
-
async function _getMediaGroup(AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1366
|
+
async function _getMediaGroup(instance, AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1498
1367
|
{
|
|
1499
1368
|
const API_URL = `${URL}/api/media/group/${ID}`;
|
|
1500
1369
|
|
|
1501
|
-
|
|
1502
|
-
const HEADERS = new Headers();
|
|
1503
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1504
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1505
|
-
|
|
1506
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1507
|
-
|
|
1508
|
-
try
|
|
1509
|
-
{
|
|
1510
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1511
|
-
method: "GET",
|
|
1512
|
-
headers: HEADERS
|
|
1513
|
-
});
|
|
1514
|
-
|
|
1515
|
-
if (!RESPONSE.ok) {
|
|
1516
|
-
throw await RESPONSE.json()
|
|
1517
|
-
}
|
|
1518
|
-
|
|
1519
|
-
return await RESPONSE.json();
|
|
1520
|
-
}
|
|
1521
|
-
catch (error)
|
|
1522
|
-
{
|
|
1523
|
-
_apiExceptionHandler(error, "Get Media Group Failed");
|
|
1524
|
-
}
|
|
1370
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Media Group", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1525
1371
|
}
|
|
1526
1372
|
|
|
1527
1373
|
|
|
1528
1374
|
|
|
1529
1375
|
|
|
1530
|
-
async function _getMediaItem(AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1376
|
+
async function _getMediaItem(instance, AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1531
1377
|
{
|
|
1532
1378
|
const API_URL = `${URL}/api/media/item/${ID}`;
|
|
1533
1379
|
|
|
1534
|
-
|
|
1535
|
-
const HEADERS = new Headers();
|
|
1536
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1537
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1538
|
-
|
|
1539
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1540
|
-
|
|
1541
|
-
try
|
|
1542
|
-
{
|
|
1543
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1544
|
-
method: "GET",
|
|
1545
|
-
headers: HEADERS
|
|
1546
|
-
});
|
|
1547
|
-
|
|
1548
|
-
if (!RESPONSE.ok) {
|
|
1549
|
-
throw await RESPONSE.json()
|
|
1550
|
-
}
|
|
1551
|
-
|
|
1552
|
-
return await RESPONSE.json();
|
|
1553
|
-
}
|
|
1554
|
-
catch (error)
|
|
1555
|
-
{
|
|
1556
|
-
_apiExceptionHandler(error, "Get Media Item Failed");
|
|
1557
|
-
}
|
|
1380
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Media Item", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1558
1381
|
}
|
|
1559
1382
|
|
|
1560
1383
|
|
|
1561
1384
|
|
|
1562
1385
|
|
|
1563
|
-
async function _getMyContent(AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1386
|
+
async function _getMyContent(instance, AUTH_TOKEN, URL, DEBUG_MODE)
|
|
1564
1387
|
{
|
|
1565
1388
|
const API_URL = `${URL}/api/media/my-content`;
|
|
1566
1389
|
|
|
1567
|
-
|
|
1568
|
-
const HEADERS = new Headers();
|
|
1569
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1570
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1571
|
-
|
|
1572
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1573
|
-
|
|
1574
|
-
try
|
|
1575
|
-
{
|
|
1576
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1577
|
-
method: "GET",
|
|
1578
|
-
headers: HEADERS
|
|
1579
|
-
});
|
|
1580
|
-
|
|
1581
|
-
if (!RESPONSE.ok) {
|
|
1582
|
-
throw await RESPONSE.json()
|
|
1583
|
-
}
|
|
1584
|
-
|
|
1585
|
-
return await RESPONSE.json();
|
|
1586
|
-
}
|
|
1587
|
-
catch (error)
|
|
1588
|
-
{
|
|
1589
|
-
_apiExceptionHandler(error, "Get My Content Failed");
|
|
1590
|
-
}
|
|
1390
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get My Content", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1591
1391
|
}
|
|
1592
1392
|
|
|
1593
1393
|
|
|
1594
1394
|
|
|
1595
1395
|
|
|
1596
|
-
async function _getMyGroup(AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1396
|
+
async function _getMyGroup(instance, AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1597
1397
|
{
|
|
1598
1398
|
const API_URL = `${URL}/api/media/my-group/${ID}`;
|
|
1599
1399
|
|
|
1600
|
-
|
|
1601
|
-
const HEADERS = new Headers();
|
|
1602
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1603
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1604
|
-
|
|
1605
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1606
|
-
|
|
1607
|
-
try
|
|
1608
|
-
{
|
|
1609
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1610
|
-
method: "GET",
|
|
1611
|
-
headers: HEADERS
|
|
1612
|
-
});
|
|
1613
|
-
|
|
1614
|
-
if (!RESPONSE.ok) {
|
|
1615
|
-
throw await RESPONSE.json()
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1618
|
-
return await RESPONSE.json();
|
|
1619
|
-
}
|
|
1620
|
-
catch (error)
|
|
1621
|
-
{
|
|
1622
|
-
_apiExceptionHandler(error, "Get My Group Failed");
|
|
1623
|
-
}
|
|
1400
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get My Group", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1624
1401
|
}
|
|
1625
1402
|
|
|
1626
1403
|
|
|
1627
1404
|
|
|
1628
1405
|
|
|
1629
|
-
async function _getSiteConfig(AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1406
|
+
async function _getSiteConfig(instance, AUTH_TOKEN, URL, ID, DEBUG_MODE)
|
|
1630
1407
|
{
|
|
1631
1408
|
const API_URL = `${URL}/api/media/config/${ID}`;
|
|
1632
1409
|
|
|
1633
|
-
|
|
1634
|
-
const HEADERS = new Headers();
|
|
1635
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1636
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1637
|
-
|
|
1638
|
-
if (DEBUG_MODE) console.log(`URL: ${API_URL}\nMETHOD: GET`);
|
|
1639
|
-
|
|
1640
|
-
try
|
|
1641
|
-
{
|
|
1642
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1643
|
-
method: "GET",
|
|
1644
|
-
headers: HEADERS
|
|
1645
|
-
});
|
|
1646
|
-
|
|
1647
|
-
if (!RESPONSE.ok) {
|
|
1648
|
-
throw await RESPONSE.json()
|
|
1649
|
-
}
|
|
1650
|
-
|
|
1651
|
-
return await RESPONSE.json();
|
|
1652
|
-
}
|
|
1653
|
-
catch (error)
|
|
1654
|
-
{
|
|
1655
|
-
_apiExceptionHandler(error, "Get Site Config Failed");
|
|
1656
|
-
}
|
|
1410
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Get Site Config", API_URL, "GET", null, null, DEBUG_MODE);
|
|
1657
1411
|
}
|
|
1658
1412
|
|
|
1659
1413
|
|
|
1660
1414
|
|
|
1661
1415
|
|
|
1662
|
-
async function _mediaSearch(AUTH_TOKEN, URL, SEARCH_QUERY, IDS, SORT_FIELDS,
|
|
1416
|
+
async function _mediaSearch(instance, AUTH_TOKEN, URL, SEARCH_QUERY, IDS, SORT_FIELDS,
|
|
1663
1417
|
PAGE_OFFSET, PAGE_SIZE, DEBUG_MODE)
|
|
1664
1418
|
{
|
|
1665
1419
|
const API_URL = `${URL}/api/media/search`;
|
|
1666
1420
|
|
|
1667
|
-
// Create header for the request
|
|
1668
|
-
const HEADERS = new Headers();
|
|
1669
|
-
HEADERS.append("Content-Type", "application/json");
|
|
1670
|
-
HEADERS.append("Authorization", `Bearer ${AUTH_TOKEN}`);
|
|
1671
|
-
|
|
1672
1421
|
const BODY = {
|
|
1673
1422
|
searchQuery: SEARCH_QUERY,
|
|
1674
1423
|
ids: IDS,
|
|
@@ -1678,25 +1427,6 @@ async function _mediaSearch(AUTH_TOKEN, URL, SEARCH_QUERY, IDS, SORT_FIELDS,
|
|
|
1678
1427
|
PAGE_OFFSET ? BODY["pageOffset"] = PAGE_OFFSET : BODY["pageOffset"] = 0;
|
|
1679
1428
|
PAGE_SIZE ? BODY["pageSize"] = PAGE_SIZE : BODY["pageSize"] = 100;
|
|
1680
1429
|
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
try
|
|
1684
|
-
{
|
|
1685
|
-
const RESPONSE = await fetch(`${API_URL}`, {
|
|
1686
|
-
method: "POST",
|
|
1687
|
-
headers: HEADERS,
|
|
1688
|
-
body: JSON.stringify(BODY)
|
|
1689
|
-
});
|
|
1690
|
-
|
|
1691
|
-
if (!RESPONSE.ok) {
|
|
1692
|
-
throw await RESPONSE.json()
|
|
1693
|
-
}
|
|
1694
|
-
|
|
1695
|
-
return await RESPONSE.json();
|
|
1696
|
-
}
|
|
1697
|
-
catch (error)
|
|
1698
|
-
{
|
|
1699
|
-
_apiExceptionHandler(error, "Media Search Failed");
|
|
1700
|
-
}
|
|
1430
|
+
return await _sendRequest(instance, AUTH_TOKEN, "Media Search", API_URL, "POST", null, BODY, DEBUG_MODE);
|
|
1701
1431
|
}
|
|
1702
1432
|
|
|
@@ -1,25 +1,5 @@
|
|
|
1
|
-
import{promises as fs}from"fs";import path from"path";class NomadMediaSDK{constructor(t={}){return NomadMediaSDK.instance||(this.config=t,this.token=null,this.refreshTokenVal=null,this.expirationSeconds=null,this.userSessionId=null,this.id=null,this.debugMode=t.debugMode||!1,NomadMediaSDK.instance=this)}async _init(){await this.login(),this.__scheduleTokenRefresh()}async login(){_printDatetime("Logging in as "+this.config.username);try{var t=await _login(this.config.username,this.config.password,this.config.serviceApiUrl,this.debugMode);this.token=t.token,this.refreshTokenVal=t.refreshToken,this.expirationSeconds=Date.now()+1e3*t.expirationSeconds,this.userSessionId=t.userSessionId,this.id=t.id,_printDatetime("Login successful")}catch(t){throw _printDatetime("Login failed"),t}}async logout(){null===this.token&&await this._init(),_printDatetime("Logging out");try{await _logout(this.token,this.config.serviceApiUrl,this.debugMode),this.token=null,this.refreshTokenVal=null,this.expirationSeconds=null,this.userSessionId=null,this.id=null,_printDatetime("Logout successful")}catch(t){throw _printDatetime("Loggout failed"),t}}async refreshToken(){_printDatetime("Refreshing token");try{var t=await _refreshToken(this.token,this.config.serviceApiUrl,this.refreshTokenVal,this.debugMode);this.token=t.token,_printDatetime("Token refresh successful")}catch(t){throw _printDatetime("Token refresh failed"),t}}__scheduleTokenRefresh(){var t;this.token&&this.expirationSeconds&&0<(t=this.expirationSeconds-Date.now())&&(this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(async()=>{await this.refreshToken(),this.__scheduleTokenRefresh()},t-5e3))}async forgotPassword(){var e=this.config.username;_printDatetime("Sending code to "+e);try{await _forgotPassword(this.config.serviceApiUrl,e,this.debugMode),_printDatetime("Code sent to "+e)}catch(t){throw _printDatetime("Code failed to send to "+e),t}}async resetPassword(t,e){var i=this.config.username;_printDatetime("Resetting password for "+i);try{await _resetPassword(this.config.serviceApiUrl,i,t,e,this.debugMode),_printDatetime("Password reset for "+i)}catch(t){throw _printDatetime("Password failed to reset for "+i),t}}async clearContinueWatching(t,e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Clearing continue watching");try{await _clearContinueWatching(this.token,this.config.serviceApiUrl,t,e,this.debugMode),_printDatetime("Continue watching cleared")}catch(t){throw _printDatetime("Continue watching failed to clear"),t}}async clearWatchlist(t){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Clearing watchlist");try{t=t||this.id,await _clearWatchlist(this.token,this.config.serviceApiUrl,t,this.debugMode),_printDatetime("Watchlist cleared")}catch(t){throw _printDatetime("Watchlist failed to clear"),t}}async createForm(t,e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Creating form");try{var i=await _createForm(this.token,this.config.serviceApiUrl,t,e,this.debugMode);return _printDatetime("Form created"),i}catch(t){throw _printDatetime("Form failed to create"),t}}async getContentCookies(t){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting content cookies");try{var e=await _getContentCookies(this.token,this.config.serviceApiUrl,t,this.debugMode);return _printDatetime("Content cookies gotten"),e}catch(t){throw _printDatetime("Content cookies failed to get"),t}}async getDefaultSiteConfig(){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting default site config");try{var t=await _getDefaultSiteConfig(this.token,this.config.serviceApiUrl,this.debugMode);return _printDatetime("Default site config gotten"),t}catch(t){throw _printDatetime("Default site config failed to get"),t}}async getDynamicContent(e){null===this.token&&await this._init(),_printDatetime("Getting dynamic content: "+e);try{var t=await _getDynamicContent(this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Dynamic content gotten: "+e),t}catch(t){throw _printDatetime("Dynamic content failed to get: "+e),t}}async getDynamicContents(){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting dynamic contents");try{var t=await _getDynamicContents(this.token,this.config.serviceApiUrl,this.debugMode);return _printDatetime("Dynamic contents gotten"),t}catch(t){throw _printDatetime("Dynamic contents failed to get"),t}}async getMediaGroup(e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting media group: "+e);try{var t=await _getMediaGroup(this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Media group gotten: "+e),t}catch(t){throw _printDatetime("Media group failed to get: "+e),t}}async getMediaItem(e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting media item: "+e);try{var t=await _getMediaItem(this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Media item gotten: "+e),t}catch(t){throw _printDatetime("Media item failed to get: "+e),t}}async getMyContent(){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is not available for portal API type.");_printDatetime("Getting my content");try{var t=await _getMyContent(this.token,this.config.serviceApiUrl,this.debugMode);return _printDatetime("My content gotten"),t}catch(t){throw _printDatetime("My content failed to get"),t}}async getMyGroup(e){null===this.token&&await this._init(),_printDatetime("Getting my group: "+e);try{var t=await _getMyGroup(this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("My group gotten: "+e),t}catch(t){throw _printDatetime("My group failed to get: "+e),t}}async getSiteConfig(e){null===this.token&&await this._init(),_printDatetime("Getting site config: "+e);try{var t=await _getSiteConfig(this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Site config gotten: "+e),t}catch(t){throw _printDatetime("Site config failed to get: "+e),t}}async mediaSearch(t,e,i,
|
|
2
|
-
METHOD: POST
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
BODY: `+JSON.stringify(
|
|
6
|
-
METHOD: POST`);try{var n=await fetch(e,{method:"POST",headers:a});if(!n.ok)throw await n.json()}catch(t){_apiExceptionHandler(t,"Logout Failed")}}async function _refreshToken(t,e,i,a){var e=e+"/api/account/refresh-token",n=new Headers,t=(n.append("Content-Type","application/json"),n.append("Authorization","Bearer "+t),{refreshToken:i});a&&console.log(`URL: ${e}
|
|
7
|
-
METHOD: POST
|
|
8
|
-
BODY: `+JSON.stringify(t,null,4));try{var o=await fetch(e,{method:"POST",headers:n,body:JSON.stringify(t)});if(o.ok)return await o.json();throw await o.json()}catch(t){_apiExceptionHandler(t,"Refreshing Token Failed")}}async function _resetPassword(t,e,i,a,n){var t=t+"/api/account/reset-password",o=new Headers,e=(o.append("Content-Type","application/json"),{userName:e,TOKEN:i,newPassword:a});n&&console.log(`URL: ${t}
|
|
9
|
-
METHOD: POST
|
|
10
|
-
BODY: `+JSON.stringify(e,null,4));try{var r=await fetch(t,{method:"POST",headers:o,body:JSON.stringify(e)});if(!r.ok)throw await r.json()}catch(t){_apiExceptionHandler(t,"Reset Password Failed")}}function _apiExceptionHandler(i,a){if(!i)throw new Error(a);if("string"==typeof i)throw new Error(a+": "+i);if(!i.errors)throw new Error(a+": "+i.message);if(Array.isArray(i.errors)){let e="";for(let t=0;t<i.errors.length;t++)e+=`${i.errors[t].code}: ${i.errors[t].field}: ${i.errors[t].message}\n`;throw new Error(a+": "+e)}if("object"==typeof i.errors){let t="";for(var e in i.errors)Object.prototype.hasOwnProperty.call(i.errors,e)&&(t+=`${e}: ${i.errors[e]}\n`);throw new Error(a+": "+t)}}import{getRandomValues}from"crypto";function _newGuid(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t=>(t^getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}function _printDatetime(t){var e=(new Date).toLocaleTimeString();console.log(e+": "+t)}async function _sleep(e){if(e&&0!==e)return new Promise(t=>{setTimeout(()=>{t()},1e3*e)})}function _slugify(t){return t&&0!==t.trim().length?t.toString().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-"):""}async function _clearContinueWatching(t,e,i,a,n){var e=e+"/api/media/clear-watching",o=[],i=(i&&o.push("userId="+i),a&&o.push("assetId="+a),e+=o.length?"?"+o.join("&"):"",new Headers);i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),n&&console.log(`URL: ${e}
|
|
11
|
-
METHOD: POST`);try{var r=await fetch(e,{method:"POST",headers:i});if(!r.ok)throw await r.json()}catch(t){_apiExceptionHandler(t,"Clear Continue Watching Failed")}}async function _clearWatchlist(t,e,i,a){e=e+"/api/media/clear-watchlist?userId="+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
12
|
-
METHOD: POST`);try{var n=await fetch(e,{method:"POST",headers:i});if(!n.ok)throw await n.json()}catch(t){_apiExceptionHandler(t,"Clear Watchlist Failed")}}async function _createForm(t,e,i,a,n){e=e+"/api/media/form/"+i,i=new Headers,i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),t=a;n&&console.log(`URL: ${e}
|
|
13
|
-
METHOD: POST
|
|
14
|
-
BODY: `+JSON.stringify(t,null,4));try{var o=await fetch(e,{method:"POST",headers:i,body:JSON.stringify(t)});if(o.ok)return await o.json();throw await o.json()}catch(t){_apiExceptionHandler(t,"Creating Form Failed")}}async function _getContentCookies(t,e,i,a){e=e+"/api/media/set-cookies/"+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
15
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:i});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Content Cookies Failed")}}async function _getDefaultSiteConfig(t,e,i){var e=e+"/api/media/config",a=new Headers;a.append("Content-Type","application/json"),a.append("Authorization","Bearer "+t),i&&console.log(`URL: ${e}
|
|
16
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:a});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Default Site Config Failed")}}async function _getDynamicContent(t,e,i,a){e=e+"/api/media/content/"+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
17
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:i});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Dynamic Content Failed")}}async function _getDynamicContents(t,e,i){var e=e+"/api/media/content",a=new Headers;a.append("Content-Type","application/json"),a.append("Authorization","Bearer "+t),i&&console.log(`URL: ${e}
|
|
18
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:a});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Dynamic Contents Failed")}}async function _getMediaGroup(t,e,i,a){e=e+"/api/media/group/"+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
19
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:i});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Media Group Failed")}}async function _getMediaItem(t,e,i,a){e=e+"/api/media/item/"+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
20
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:i});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Media Item Failed")}}async function _getMyContent(t,e,i){var e=e+"/api/media/my-content",a=new Headers;a.append("Content-Type","application/json"),a.append("Authorization","Bearer "+t),i&&console.log(`URL: ${e}
|
|
21
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:a});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get My Content Failed")}}async function _getMyGroup(t,e,i,a){e=e+"/api/media/my-group/"+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
22
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:i});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get My Group Failed")}}async function _getSiteConfig(t,e,i,a){e=e+"/api/media/config/"+i,i=new Headers;i.append("Content-Type","application/json"),i.append("Authorization","Bearer "+t),a&&console.log(`URL: ${e}
|
|
23
|
-
METHOD: GET`);try{var n=await fetch(e,{method:"GET",headers:i});if(n.ok)return await n.json();throw await n.json()}catch(t){_apiExceptionHandler(t,"Get Site Config Failed")}}async function _mediaSearch(t,e,i,a,n,o,r,s){var e=e+"/api/media/search",c=new Headers,t=(c.append("Content-Type","application/json"),c.append("Authorization","Bearer "+t),{searchQuery:i,ids:a,sortFields:n});t.pageOffset=o||0,t.pageSize=r||100,s&&console.log(`URL: ${e}
|
|
24
|
-
METHOD: POST
|
|
25
|
-
BODY: `+JSON.stringify(t,null,4));try{var h=await fetch(e,{method:"POST",headers:c,body:JSON.stringify(t)});if(h.ok)return await h.json();throw await h.json()}catch(t){_apiExceptionHandler(t,"Media Search Failed")}}
|
|
1
|
+
import{promises as fs}from"fs";import path from"path";class NomadMediaSDK{constructor(t={}){return NomadMediaSDK.instance||(this.config=t,this.token=null,this.refreshTokenVal=null,this.expirationSeconds=null,this.userSessionId=null,this.id=null,this.debugMode=t.debugMode||!1,NomadMediaSDK.instance=this)}async _init(){await this.login(),this.__scheduleTokenRefresh()}async login(){_printDatetime("Logging in as "+this.config.username);try{var t=await _login(this,this.config.username,this.config.password,this.config.serviceApiUrl,this.debugMode);this.token=t.token,this.refreshTokenVal=t.refreshToken,this.expirationSeconds=Date.now()+1e3*t.expirationSeconds,this.userSessionId=t.userSessionId,this.id=t.id,_printDatetime("Login successful")}catch(t){throw _printDatetime("Login failed"),t}}async logout(){null===this.token&&await this._init(),_printDatetime("Logging out");try{await _logout(this,this.token,this.config.serviceApiUrl,this.debugMode),this.token=null,this.refreshTokenVal=null,this.expirationSeconds=null,this.userSessionId=null,this.id=null,_printDatetime("Logout successful")}catch(t){throw _printDatetime("Loggout failed"),t}}async refreshToken(){_printDatetime("Refreshing token");try{var t=await _refreshToken(this,this.token,this.config.serviceApiUrl,this.refreshTokenVal,this.debugMode);this.token=t.token,_printDatetime("Token refresh successful")}catch(t){throw _printDatetime("Token refresh failed"),t}}__scheduleTokenRefresh(){var t;this.token&&this.expirationSeconds&&0<(t=this.expirationSeconds-Date.now())&&(this.refreshTimer&&clearTimeout(this.refreshTimer),this.refreshTimer=setTimeout(async()=>{await this.refreshToken(),this.__scheduleTokenRefresh()},t-5e3))}async forgotPassword(){var e=this.config.username;_printDatetime("Sending code to "+e);try{await _forgotPassword(this,this.config.serviceApiUrl,e,this.debugMode),_printDatetime("Code sent to "+e)}catch(t){throw _printDatetime("Code failed to send to "+e),t}}async resetPassword(t,e){var i=this.config.username;_printDatetime("Resetting password for "+i);try{await _resetPassword(this,this.config.serviceApiUrl,i,t,e,this.debugMode),_printDatetime("Password reset for "+i)}catch(t){throw _printDatetime("Password failed to reset for "+i),t}}async clearContinueWatching(t,e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Clearing continue watching");try{await _clearContinueWatching(this,this.token,this.config.serviceApiUrl,t,e,this.debugMode),_printDatetime("Continue watching cleared")}catch(t){throw _printDatetime("Continue watching failed to clear"),t}}async clearWatchlist(t){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Clearing watchlist");try{t=t||this.id,await _clearWatchlist(this,this.token,this.config.serviceApiUrl,t,this.debugMode),_printDatetime("Watchlist cleared")}catch(t){throw _printDatetime("Watchlist failed to clear"),t}}async createForm(t,e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Creating form");try{var i=await _createForm(this,this.token,this.config.serviceApiUrl,t,e,this.debugMode);return _printDatetime("Form created"),i}catch(t){throw _printDatetime("Form failed to create"),t}}async getContentCookies(t){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting content cookies");try{var e=await _getContentCookies(this,this.token,this.config.serviceApiUrl,t,this.debugMode);return _printDatetime("Content cookies gotten"),e}catch(t){throw _printDatetime("Content cookies failed to get"),t}}async getDefaultSiteConfig(){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting default site config");try{var t=await _getDefaultSiteConfig(this,this.token,this.config.serviceApiUrl,this.debugMode);return _printDatetime("Default site config gotten"),t}catch(t){throw _printDatetime("Default site config failed to get"),t}}async getDynamicContent(e){null===this.token&&await this._init(),_printDatetime("Getting dynamic content: "+e);try{var t=await _getDynamicContent(this,this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Dynamic content gotten: "+e),t}catch(t){throw _printDatetime("Dynamic content failed to get: "+e),t}}async getDynamicContents(){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting dynamic contents");try{var t=await _getDynamicContents(this,this.token,this.config.serviceApiUrl,this.debugMode);return _printDatetime("Dynamic contents gotten"),t}catch(t){throw _printDatetime("Dynamic contents failed to get"),t}}async getMediaGroup(e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting media group: "+e);try{var t=await _getMediaGroup(this,this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Media group gotten: "+e),t}catch(t){throw _printDatetime("Media group failed to get: "+e),t}}async getMediaItem(e){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Getting media item: "+e);try{var t=await _getMediaItem(this,this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Media item gotten: "+e),t}catch(t){throw _printDatetime("Media item failed to get: "+e),t}}async getMyContent(){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is not available for portal API type.");_printDatetime("Getting my content");try{var t=await _getMyContent(this,this.token,this.config.serviceApiUrl,this.debugMode);return _printDatetime("My content gotten"),t}catch(t){throw _printDatetime("My content failed to get"),t}}async getMyGroup(e){null===this.token&&await this._init(),_printDatetime("Getting my group: "+e);try{var t=await _getMyGroup(this,this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("My group gotten: "+e),t}catch(t){throw _printDatetime("My group failed to get: "+e),t}}async getSiteConfig(e){null===this.token&&await this._init(),_printDatetime("Getting site config: "+e);try{var t=await _getSiteConfig(this,this.token,this.config.serviceApiUrl,e,this.debugMode);return _printDatetime("Site config gotten: "+e),t}catch(t){throw _printDatetime("Site config failed to get: "+e),t}}async mediaSearch(t,e,i,n,r){if(null===this.token&&await this._init(),"portal"!==this.config.apiType)throw new Error("This function is only available for portal API type.");_printDatetime("Searching media...");try{var a=await _mediaSearch(this,this.token,this.config.serviceApiUrl,t,e,i,n,r,this.debugMode);return _printDatetime("Media search complete"),a}catch(t){throw _printDatetime("Media search failed"),t}}async miscFunctions(e,i,n,r){null===this.token&&await this._init(),_printDatetime("Calling function: "+e);try{let t=this.config.serviceApiUrl+"/"+e;r&&(t=(t=(t=t.replace("/api","")).replace("app-api.","")).replace("admin-app.",""));var a=new Headers,o=(a.append("Content-Type","application/json"),a.append("Authorization","Bearer "+this.token),this.debugMode&&(console.log(`URL: ${t}
|
|
2
|
+
METHOD: `+i),n)&&console.log("BODY: "+JSON.stringify(n,null,4)),{method:i,headers:a}),s=(n&&(o.body=JSON.stringify(n)),await fetch(t,o));if(!s.ok)throw await s.json();try{return await s.json()}catch(t){return s.text()}}catch(t){_apiExceptionHandler(t,"API call failed")}}}export default NomadMediaSDK;async function _forgotPassword(t,e,i,n){return _sendRequest(t,null,"Forgot Password",e+"/api/account/forgot-password","POST",null,{username:i},n)}async function _login(t,e,i,n,r){return _sendRequest(t,null,"Login",n+"/api/account/login","POST",null,{userName:e,password:i},r)}async function _logout(t,e,i,n){return _sendRequest(t,e,"Logout",i+"/api/account/logout","POST",null,null,n)}async function _refreshToken(t,e,i,n,r){e=await _sendRequest(t,e,"Refreshing Token",i+"/api/account/refresh-token","POST",null,{refreshToken:n},r);t.token=e.token}async function _resetPassword(t,e,i,n,r,a){return _sendRequest(t,null,"Reset Password",e+"/api/account/reset-password","POST",null,{userName:i,TOKEN:n,newPassword:r},a)}function _apiExceptionHandler(i,n){if(!i)throw new Error(n);if("string"==typeof i)throw new Error(n+": "+i);if(!i.errors)throw new Error(n+": "+i.message);if(Array.isArray(i.errors)){let e="";for(let t=0;t<i.errors.length;t++)e+=`${i.errors[t].code}: ${i.errors[t].field}: ${i.errors[t].message}\n`;throw new Error(n+": "+e)}if("object"==typeof i.errors){let t="";for(var e in i.errors)Object.prototype.hasOwnProperty.call(i.errors,e)&&(t+=`${e}: ${i.errors[e]}\n`);throw new Error(n+": "+t)}}import{getRandomValues}from"crypto";function _newGuid(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,t=>(t^getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16))}function _printDatetime(t){var e=(new Date).toLocaleTimeString();console.log(e+": "+t)}import axios from"axios";let MAX_RETRIES=5,TIMEOUT=3e4,SLEEP_TIME=6e4;async function _sendRequest(t,e,i,n,r,a,o,s){var c={"Content-Type":"application/json"};e&&(c.Authorization="Bearer "+e),s&&console.log(`URL: ${n}
|
|
3
|
+
METHOD: `+r+(a?`
|
|
4
|
+
PARAMS: `+JSON.stringify(a,null,4):"")+(o?`
|
|
5
|
+
BODY: `+JSON.stringify(o,null,4):""));let l=0,h=null;do{try{if(200<=(h=await axios({method:r,url:n,headers:c,params:a||{},data:o||{},timeout:TIMEOUT})).status&&h.status<300)break;if(403!==h.status||"Refreshing Token"===i)throw new Error;await t.refreshToken()}catch(t){"ECONNABORTED"===t.code&&l<MAX_RETRIES?(l++,await _sleep(SLEEP_TIME*2**l)):(console.error(i+" failed",t),_apiExceptionHandler(t,i))}}while(!h||h.status<200||300<=h.status);try{return h.data}catch(t){}}async function _sleep(e){if(e&&0!==e)return new Promise(t=>{setTimeout(()=>{t()},1e3*e)})}function _slugify(t){return t&&0!==t.trim().length?t.toString().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-"):""}async function _clearContinueWatching(t,e,i,n,r,a){return _sendRequest(t,e,"Clear Continue Watching",i+"/api/media/clear-watching","POST",{userId:n,assetId:r},null,a)}async function _clearWatchlist(t,e,i,n,r){return _sendRequest(t,e,"Clear Watchlist",i+"/api/media/clear-watchlist?userId="+n,"POST",null,null,r)}async function _createForm(t,e,i,n,r,a){return _sendRequest(t,e,"Creating Form",i+"/api/media/form/"+n,"POST",null,r,a)}async function _getContentCookies(t,e,i,n,r){return _sendRequest(t,e,"Get Content Cookies",i+"/api/media/set-cookies/"+n,"GET",null,null,r)}async function _getDefaultSiteConfig(t,e,i,n){return _sendRequest(t,e,"Get Default Site Config",i+"/api/media/config","GET",null,null,n)}async function _getDynamicContent(t,e,i,n,r){return _sendRequest(t,e,"Get Dynamic Content",i+"/api/media/content/"+n,"GET",null,null,r)}async function _getDynamicContents(t,e,i,n){return _sendRequest(t,e,"Get Dynamic Contents",i+"/api/media/content","GET",null,null,n)}async function _getMediaGroup(t,e,i,n,r){return _sendRequest(t,e,"Get Media Group",i+"/api/media/group/"+n,"GET",null,null,r)}async function _getMediaItem(t,e,i,n,r){return _sendRequest(t,e,"Get Media Item",i+"/api/media/item/"+n,"GET",null,null,r)}async function _getMyContent(t,e,i,n){return _sendRequest(t,e,"Get My Content",i+"/api/media/my-content","GET",null,null,n)}async function _getMyGroup(t,e,i,n,r){return _sendRequest(t,e,"Get My Group",i+"/api/media/my-group/"+n,"GET",null,null,r)}async function _getSiteConfig(t,e,i,n,r){return _sendRequest(t,e,"Get Site Config",i+"/api/media/config/"+n,"GET",null,null,r)}async function _mediaSearch(t,e,i,n,r,a,o,s,c){i+="/api/media/search",n={searchQuery:n,ids:r,sortFields:a};return n.pageOffset=o||0,n.pageSize=s||100,_sendRequest(t,e,"Media Search",i,"POST",null,n,c)}
|