rettiwt-api 1.4.0 → 2.0.0
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/.eslintignore +3 -0
- package/.eslintrc.js +54 -0
- package/.github/workflows/documentation.yml +29 -9
- package/.github/workflows/publish.yml +8 -3
- package/.prettierignore +3 -0
- package/.prettierrc +13 -0
- package/README.md +59 -61
- package/dist/Rettiwt.d.ts +19 -0
- package/dist/Rettiwt.js +30 -0
- package/dist/Rettiwt.js.map +1 -0
- package/dist/enums/ApiErrors.d.ts +30 -0
- package/dist/enums/ApiErrors.js +35 -0
- package/dist/enums/ApiErrors.js.map +1 -0
- package/dist/enums/HTTP.d.ts +11 -11
- package/dist/enums/HTTP.js +15 -16
- package/dist/enums/HTTP.js.map +1 -1
- package/dist/helper/JsonUtils.d.ts +26 -0
- package/dist/helper/JsonUtils.js +88 -0
- package/dist/helper/JsonUtils.js.map +1 -0
- package/dist/index.d.ts +10 -43
- package/dist/index.js +16 -55
- package/dist/index.js.map +1 -1
- package/dist/models/CursoredData.d.ts +37 -0
- package/dist/models/CursoredData.js +59 -0
- package/dist/models/CursoredData.js.map +1 -0
- package/dist/models/{data/Tweet.d.ts → Tweet.d.ts} +4 -4
- package/dist/models/{data/Tweet.js → Tweet.js} +7 -32
- package/dist/models/Tweet.js.map +1 -0
- package/dist/models/{data/User.d.ts → User.d.ts} +3 -3
- package/dist/models/{data/User.js → User.js} +3 -3
- package/dist/models/User.js.map +1 -0
- package/dist/services/FetcherService.d.ts +66 -0
- package/dist/services/FetcherService.js +207 -0
- package/dist/services/FetcherService.js.map +1 -0
- package/dist/services/TweetService.d.ts +88 -0
- package/dist/services/TweetService.js +244 -0
- package/dist/services/TweetService.js.map +1 -0
- package/dist/services/UserService.d.ts +60 -0
- package/dist/services/UserService.js +188 -0
- package/dist/services/UserService.js.map +1 -0
- package/dist/types/{Service.d.ts → CursoredData.d.ts} +3 -3
- package/dist/types/CursoredData.js +3 -0
- package/dist/types/CursoredData.js.map +1 -0
- package/dist/types/Tweet.js +1 -1
- package/dist/types/User.js +1 -1
- package/package.json +15 -19
- package/src/Rettiwt.ts +33 -0
- package/src/enums/ApiErrors.ts +30 -0
- package/src/enums/HTTP.ts +12 -12
- package/src/helper/JsonUtils.ts +86 -0
- package/src/index.ts +14 -57
- package/src/models/CursoredData.ts +64 -0
- package/src/models/Tweet.ts +116 -0
- package/src/models/User.ts +72 -0
- package/src/services/FetcherService.ts +183 -0
- package/src/services/TweetService.ts +153 -0
- package/src/services/UserService.ts +117 -0
- package/src/types/CursoredData.ts +24 -0
- package/src/types/Tweet.ts +35 -35
- package/src/types/User.ts +30 -30
- package/tsconfig.json +9 -9
- package/dist/config/env.d.ts +0 -5
- package/dist/config/env.js +0 -9
- package/dist/config/env.js.map +0 -1
- package/dist/enums/Errors.d.ts +0 -21
- package/dist/enums/Errors.js +0 -29
- package/dist/enums/Errors.js.map +0 -1
- package/dist/graphql/enums/Errors.d.ts +0 -21
- package/dist/graphql/enums/Errors.js +0 -29
- package/dist/graphql/enums/Errors.js.map +0 -1
- package/dist/graphql/queries/RootQuery.d.ts +0 -4
- package/dist/graphql/queries/RootQuery.js +0 -83
- package/dist/graphql/queries/RootQuery.js.map +0 -1
- package/dist/graphql/resolvers/AccountResolver.d.ts +0 -12
- package/dist/graphql/resolvers/AccountResolver.js +0 -84
- package/dist/graphql/resolvers/AccountResolver.js.map +0 -1
- package/dist/graphql/resolvers/ResolverBase.d.ts +0 -16
- package/dist/graphql/resolvers/ResolverBase.js +0 -23
- package/dist/graphql/resolvers/ResolverBase.js.map +0 -1
- package/dist/graphql/resolvers/TweetResolver.d.ts +0 -46
- package/dist/graphql/resolvers/TweetResolver.js +0 -302
- package/dist/graphql/resolvers/TweetResolver.js.map +0 -1
- package/dist/graphql/resolvers/UserResolver.d.ts +0 -48
- package/dist/graphql/resolvers/UserResolver.js +0 -334
- package/dist/graphql/resolvers/UserResolver.js.map +0 -1
- package/dist/graphql/types/Global.d.ts +0 -4
- package/dist/graphql/types/Global.js +0 -13
- package/dist/graphql/types/Global.js.map +0 -1
- package/dist/graphql/types/TweetTypes.d.ts +0 -4
- package/dist/graphql/types/TweetTypes.js +0 -160
- package/dist/graphql/types/TweetTypes.js.map +0 -1
- package/dist/graphql/types/UserTypes.d.ts +0 -3
- package/dist/graphql/types/UserTypes.js +0 -137
- package/dist/graphql/types/UserTypes.js.map +0 -1
- package/dist/models/args/TweetListArgs.d.ts +0 -21
- package/dist/models/args/TweetListArgs.js +0 -54
- package/dist/models/args/TweetListArgs.js.map +0 -1
- package/dist/models/args/UserListArgs.d.ts +0 -21
- package/dist/models/args/UserListArgs.js +0 -54
- package/dist/models/args/UserListArgs.js.map +0 -1
- package/dist/models/auth/AuthCookie.d.ts +0 -21
- package/dist/models/auth/AuthCookie.js +0 -33
- package/dist/models/auth/AuthCookie.js.map +0 -1
- package/dist/models/data/CursoredData.d.ts +0 -34
- package/dist/models/data/CursoredData.js +0 -42
- package/dist/models/data/CursoredData.js.map +0 -1
- package/dist/models/data/Tweet.js.map +0 -1
- package/dist/models/data/User.js.map +0 -1
- package/dist/server.d.ts +0 -1
- package/dist/server.js +0 -76
- package/dist/server.js.map +0 -1
- package/dist/services/auth/AccountService.d.ts +0 -83
- package/dist/services/auth/AccountService.js +0 -412
- package/dist/services/auth/AccountService.js.map +0 -1
- package/dist/services/auth/AuthService.d.ts +0 -31
- package/dist/services/auth/AuthService.js +0 -118
- package/dist/services/auth/AuthService.js.map +0 -1
- package/dist/services/data/TweetService.d.ts +0 -60
- package/dist/services/data/TweetService.js +0 -250
- package/dist/services/data/TweetService.js.map +0 -1
- package/dist/services/data/UserService.d.ts +0 -71
- package/dist/services/data/UserService.js +0 -278
- package/dist/services/data/UserService.js.map +0 -1
- package/dist/services/helper/Headers.d.ts +0 -19
- package/dist/services/helper/Headers.js +0 -62
- package/dist/services/helper/Headers.js.map +0 -1
- package/dist/services/helper/Parser.d.ts +0 -22
- package/dist/services/helper/Parser.js +0 -84
- package/dist/services/helper/Parser.js.map +0 -1
- package/dist/services/helper/extractors/Tweets.d.ts +0 -23
- package/dist/services/helper/extractors/Tweets.js +0 -200
- package/dist/services/helper/extractors/Tweets.js.map +0 -1
- package/dist/services/helper/extractors/Users.d.ts +0 -17
- package/dist/services/helper/extractors/Users.js +0 -151
- package/dist/services/helper/extractors/Users.js.map +0 -1
- package/dist/services/helper/payloads/LoginFlows.d.ts +0 -77
- package/dist/services/helper/payloads/LoginFlows.js +0 -92
- package/dist/services/helper/payloads/LoginFlows.js.map +0 -1
- package/dist/services/helper/urls/Authentication.d.ts +0 -4
- package/dist/services/helper/urls/Authentication.js +0 -11
- package/dist/services/helper/urls/Authentication.js.map +0 -1
- package/dist/services/util/CacheService.d.ts +0 -33
- package/dist/services/util/CacheService.js +0 -96
- package/dist/services/util/CacheService.js.map +0 -1
- package/dist/services/util/FetcherService.d.ts +0 -65
- package/dist/services/util/FetcherService.js +0 -202
- package/dist/services/util/FetcherService.js.map +0 -1
- package/dist/types/Args.d.ts +0 -11
- package/dist/types/Args.js +0 -4
- package/dist/types/Args.js.map +0 -1
- package/dist/types/Authentication.d.ts +0 -55
- package/dist/types/Authentication.js +0 -6
- package/dist/types/Authentication.js.map +0 -1
- package/dist/types/Resolvers.d.ts +0 -15
- package/dist/types/Resolvers.js +0 -3
- package/dist/types/Resolvers.js.map +0 -1
- package/dist/types/Rettiwt.d.ts +0 -16
- package/dist/types/Rettiwt.js +0 -3
- package/dist/types/Rettiwt.js.map +0 -1
- package/dist/types/Service.js +0 -5
- package/dist/types/Service.js.map +0 -1
- package/docs/.nojekyll +0 -1
- package/docs/assets/highlight.css +0 -64
- package/docs/assets/main.js +0 -58
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1280
- package/docs/classes/AccountService.html +0 -286
- package/docs/classes/AuthCookie.html +0 -146
- package/docs/classes/AuthService.html +0 -147
- package/docs/classes/CacheService.html +0 -157
- package/docs/classes/Cursor.html +0 -102
- package/docs/classes/CursoredData.html +0 -126
- package/docs/classes/DataValidationError.html +0 -120
- package/docs/classes/FetcherService.html +0 -225
- package/docs/classes/Tweet.html +0 -210
- package/docs/classes/TweetEntities.html +0 -128
- package/docs/classes/TweetFilter.html +0 -233
- package/docs/classes/TweetListArgs.html +0 -118
- package/docs/classes/TweetService.html +0 -319
- package/docs/classes/User.html +0 -230
- package/docs/classes/UserListArgs.html +0 -118
- package/docs/classes/UserService.html +0 -355
- package/docs/enums/HttpMethods.html +0 -74
- package/docs/functions/Rettiwt.html +0 -100
- package/docs/index.html +0 -159
- package/docs/interfaces/IAuthCookie.html +0 -104
- package/docs/interfaces/ICursor.html +0 -77
- package/docs/interfaces/ICursoredData.html +0 -93
- package/docs/interfaces/IDataContext.html +0 -91
- package/docs/interfaces/IDataValidationError.html +0 -109
- package/docs/interfaces/IListArgs.html +0 -87
- package/docs/interfaces/ITweet.html +0 -176
- package/docs/interfaces/ITweetEntities.html +0 -104
- package/docs/interfaces/ITweetFilter.html +0 -158
- package/docs/interfaces/IUser.html +0 -194
- package/docs/modules.html +0 -111
- package/environment.d.ts +0 -11
- package/src/config/env.ts +0 -5
- package/src/enums/Errors.ts +0 -22
- package/src/graphql/enums/Errors.ts +0 -22
- package/src/graphql/queries/RootQuery.ts +0 -81
- package/src/graphql/resolvers/AccountResolver.ts +0 -22
- package/src/graphql/resolvers/ResolverBase.ts +0 -26
- package/src/graphql/resolvers/TweetResolver.ts +0 -225
- package/src/graphql/resolvers/UserResolver.ts +0 -257
- package/src/graphql/types/Global.ts +0 -10
- package/src/graphql/types/TweetTypes.ts +0 -158
- package/src/graphql/types/UserTypes.ts +0 -134
- package/src/models/args/TweetListArgs.ts +0 -47
- package/src/models/args/UserListArgs.ts +0 -47
- package/src/models/auth/AuthCookie.ts +0 -43
- package/src/models/data/CursoredData.ts +0 -45
- package/src/models/data/Tweet.ts +0 -118
- package/src/models/data/User.ts +0 -72
- package/src/server.ts +0 -37
- package/src/services/auth/AccountService.ts +0 -283
- package/src/services/auth/AuthService.ts +0 -81
- package/src/services/data/TweetService.ts +0 -197
- package/src/services/data/UserService.ts +0 -221
- package/src/services/helper/Headers.ts +0 -60
- package/src/services/helper/Parser.ts +0 -89
- package/src/services/helper/extractors/Tweets.ts +0 -190
- package/src/services/helper/extractors/Users.ts +0 -141
- package/src/services/helper/payloads/LoginFlows.ts +0 -90
- package/src/services/helper/urls/Authentication.ts +0 -6
- package/src/services/util/CacheService.ts +0 -76
- package/src/services/util/FetcherService.ts +0 -143
- package/src/types/Args.ts +0 -12
- package/src/types/Authentication.ts +0 -63
- package/src/types/Resolvers.ts +0 -18
- package/src/types/Rettiwt.ts +0 -20
- package/src/types/Service.ts +0 -24
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports.__esModule = true;
|
|
3
|
-
exports.loginHeader = exports.guestHeader = exports.authorizedHeader = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @param authToken The authentication token received from Twitter
|
|
6
|
-
* @param csrfToken The csrf token received from Twitter
|
|
7
|
-
* @param cookie The cookie associated with the logged in account
|
|
8
|
-
* @returns The header required for making authorized HTTP requests
|
|
9
|
-
*/
|
|
10
|
-
function authorizedHeader(authCred) {
|
|
11
|
-
return {
|
|
12
|
-
'sec-ch-ua': '"Not_A Brand";v="99", "Microsoft Edge";v="109", "Chromium";v="109"',
|
|
13
|
-
'x-twitter-client-language': 'en',
|
|
14
|
-
'x-csrf-token': authCred.csrfToken,
|
|
15
|
-
'sec-ch-ua-mobile': '?0',
|
|
16
|
-
'authorization': authCred.authToken,
|
|
17
|
-
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.61',
|
|
18
|
-
'x-twitter-auth-type': 'OAuth2Session',
|
|
19
|
-
'x-twitter-active-user': 'yes',
|
|
20
|
-
'sec-ch-ua-platform': '"Windows"',
|
|
21
|
-
'Accept': '*/*',
|
|
22
|
-
'host': 'twitter.com',
|
|
23
|
-
'Cookie': authCred.cookie
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
exports.authorizedHeader = authorizedHeader;
|
|
27
|
-
/**
|
|
28
|
-
* @param guestCred The guest credentials to use
|
|
29
|
-
* @returns The header requred for making guest HTTP requests
|
|
30
|
-
*/
|
|
31
|
-
function guestHeader(guestCred) {
|
|
32
|
-
return {
|
|
33
|
-
'Accept': '*/*',
|
|
34
|
-
'authorization': guestCred.authToken,
|
|
35
|
-
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.70',
|
|
36
|
-
'x-guest-token': guestCred.guestToken
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
exports.guestHeader = guestHeader;
|
|
40
|
-
/**
|
|
41
|
-
* @param guestCred The guest credentials to use for making the login requests
|
|
42
|
-
* @param cookie The cookie to be used
|
|
43
|
-
* @returns The header for making HTTP request for logging in
|
|
44
|
-
*/
|
|
45
|
-
function loginHeader(guestCred, cookie) {
|
|
46
|
-
return [
|
|
47
|
-
"sec-ch-ua: \"Not_A Brand\";v=\"99\", \"Microsoft Edge\";v=\"109\", \"Chromium\";v=\"109\"",
|
|
48
|
-
"x-twitter-client-language: en",
|
|
49
|
-
"sec-ch-ua-mobile: ?0",
|
|
50
|
-
"authorization: ".concat(guestCred.authToken),
|
|
51
|
-
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.78",
|
|
52
|
-
"content-type: application/json",
|
|
53
|
-
"x-guest-token: ".concat(guestCred.guestToken),
|
|
54
|
-
"x-twitter-active-user: yes",
|
|
55
|
-
"sec-ch-ua-platform: \"Windows\"",
|
|
56
|
-
"Accept: */*",
|
|
57
|
-
"host: api.twitter.com",
|
|
58
|
-
"Cookie: ".concat(cookie)
|
|
59
|
-
];
|
|
60
|
-
}
|
|
61
|
-
exports.loginHeader = loginHeader;
|
|
62
|
-
//# sourceMappingURL=Headers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/services/helper/Headers.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,QAA0B;IACvD,OAAO;QACH,WAAW,EAAE,oEAAoE;QACjF,2BAA2B,EAAE,IAAI;QACjC,cAAc,EAAE,QAAQ,CAAC,SAAS;QAClC,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,QAAQ,CAAC,SAAS;QACnC,YAAY,EAAE,mIAAmI;QACjJ,qBAAqB,EAAE,eAAe;QACtC,uBAAuB,EAAE,KAAK;QAC9B,oBAAoB,EAAE,WAAW;QACjC,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM;KAC5B,CAAC;AACN,CAAC;AAfD,4CAeC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,SAA4B;IACpD,OAAO;QACH,QAAQ,EAAE,KAAK;QACf,eAAe,EAAE,SAAS,CAAC,SAAS;QACpC,YAAY,EAAE,mIAAmI;QACjJ,eAAe,EAAE,SAAS,CAAC,UAAU;KACxC,CAAC;AACN,CAAC;AAPD,kCAOC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,SAA4B,EAAE,MAAc;IACpE,OAAO;QACH,2FAA+E;QAC/E,+BAA+B;QAC/B,sBAAsB;QACtB,yBAAkB,SAAS,CAAC,SAAS,CAAE;QACvC,+IAA+I;QAC/I,gCAAgC;QAChC,yBAAkB,SAAS,CAAC,UAAU,CAAE;QACxC,4BAA4B;QAC5B,iCAA+B;QAC/B,aAAa;QACb,uBAAuB;QACvB,kBAAW,MAAM,CAAE;KACtB,CAAC;AACN,CAAC;AAfD,kCAeC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @returns Whether the given json object is empty or not
|
|
3
|
-
* @param data The input JSON object which needs to be checked
|
|
4
|
-
*/
|
|
5
|
-
export declare function isJSONEmpty(data: any): boolean;
|
|
6
|
-
/**
|
|
7
|
-
* @returns The value associated with the given key inside the given json
|
|
8
|
-
* @param data The json data within which to search for the value
|
|
9
|
-
* @param key The key to search for
|
|
10
|
-
* @param last Whether to begin searching from the end
|
|
11
|
-
*/
|
|
12
|
-
export declare function findJSONKey(data: any, key: string, last?: boolean): any;
|
|
13
|
-
/**
|
|
14
|
-
* @returns A list of data from a singleton data
|
|
15
|
-
* @param data The data to be converted to a list
|
|
16
|
-
*/
|
|
17
|
-
export declare function dataToList(data: any | any[]): any[];
|
|
18
|
-
/**
|
|
19
|
-
* @param text The text to be normalized
|
|
20
|
-
* @returns The text after being formatted to remove unnecessary characters
|
|
21
|
-
*/
|
|
22
|
-
export declare function normalizeText(text: string): string;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports.__esModule = true;
|
|
3
|
-
exports.normalizeText = exports.dataToList = exports.findJSONKey = exports.isJSONEmpty = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @returns Whether the given json object is empty or not
|
|
6
|
-
* @param data The input JSON object which needs to be checked
|
|
7
|
-
*/
|
|
8
|
-
function isJSONEmpty(data) {
|
|
9
|
-
// If the JSON has any keys, it's not empty
|
|
10
|
-
if (Object.keys(data).length == 0) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
// Else, it's empty
|
|
14
|
-
else {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.isJSONEmpty = isJSONEmpty;
|
|
19
|
-
/**
|
|
20
|
-
* @returns The value associated with the given key inside the given json
|
|
21
|
-
* @param data The json data within which to search for the value
|
|
22
|
-
* @param key The key to search for
|
|
23
|
-
* @param last Whether to begin searching from the end
|
|
24
|
-
*/
|
|
25
|
-
function findJSONKey(data, key, last) {
|
|
26
|
-
if (last === void 0) { last = false; }
|
|
27
|
-
var jsonStr = JSON.stringify(data); // To store the input data as string
|
|
28
|
-
var extStr = ''; // To store the extracted string
|
|
29
|
-
var len = jsonStr.length; // To store length of input data
|
|
30
|
-
/**
|
|
31
|
-
* Getting the position to start extracting data from
|
|
32
|
-
* This the position just after the key plus ":"
|
|
33
|
-
* */
|
|
34
|
-
var start = !last ? (jsonStr.indexOf("\"".concat(key, "\"")) + "\"".concat(key, "\":").length) : (jsonStr.lastIndexOf("\"".concat(key, "\"")) + "\"".concat(key, "\":").length);
|
|
35
|
-
for (var i = start; i < len; i++) {
|
|
36
|
-
// Getting each character
|
|
37
|
-
var char = jsonStr[i];
|
|
38
|
-
// If not ending of value
|
|
39
|
-
if (char != ',' && char != '\n') {
|
|
40
|
-
extStr += char;
|
|
41
|
-
}
|
|
42
|
-
// If ending of value
|
|
43
|
-
else {
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Removing begginning and ending quotes from string
|
|
48
|
-
/**
|
|
49
|
-
* I don't know how this regex I used works. I just copied it from StackOverflow
|
|
50
|
-
* Here is the link to the thread: https://stackoverflow.com/q/19156148
|
|
51
|
-
*/
|
|
52
|
-
extStr = extStr.replace(/^"|"$/g, '');
|
|
53
|
-
return extStr;
|
|
54
|
-
}
|
|
55
|
-
exports.findJSONKey = findJSONKey;
|
|
56
|
-
/**
|
|
57
|
-
* @returns A list of data from a singleton data
|
|
58
|
-
* @param data The data to be converted to a list
|
|
59
|
-
*/
|
|
60
|
-
function dataToList(data) {
|
|
61
|
-
// If data is already a list
|
|
62
|
-
if (Array.isArray(data)) {
|
|
63
|
-
return data;
|
|
64
|
-
}
|
|
65
|
-
// If data is not array
|
|
66
|
-
else {
|
|
67
|
-
return [data];
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.dataToList = dataToList;
|
|
71
|
-
/**
|
|
72
|
-
* @param text The text to be normalized
|
|
73
|
-
* @returns The text after being formatted to remove unnecessary characters
|
|
74
|
-
*/
|
|
75
|
-
function normalizeText(text) {
|
|
76
|
-
var normalizedText = ''; // To store the normalized text
|
|
77
|
-
// Removing unnecessary full stops, and other characters
|
|
78
|
-
normalizedText = text.replace(/\n/g, '.').replace(/[.]+[\s+.\s+]+/g, '. ');
|
|
79
|
-
// Adding full-stop to the end if does not exist already
|
|
80
|
-
normalizedText = normalizedText.endsWith('.') ? normalizedText : (normalizedText + '.');
|
|
81
|
-
return normalizedText;
|
|
82
|
-
}
|
|
83
|
-
exports.normalizeText = normalizeText;
|
|
84
|
-
//# sourceMappingURL=Parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../../src/services/helper/Parser.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,SAAgB,WAAW,CAAC,IAAS;IACjC,2CAA2C;IAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;QAC/B,OAAO,IAAI,CAAC;KACf;IACD,mBAAmB;SACd;QACD,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AATD,kCASC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,IAAS,EAAE,GAAW,EAAE,IAAqB;IAArB,qBAAA,EAAA,YAAqB;IACrE,IAAI,OAAO,GAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAiC,oCAAoC;IAChH,IAAI,MAAM,GAAW,EAAE,CAAC,CAAoD,gCAAgC;IAC5G,IAAI,GAAG,GAAW,OAAO,CAAC,MAAM,CAAC,CAA2C,gCAAgC;IAE5G;;;SAGK;IACL,IAAI,KAAK,GAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAI,GAAG,OAAG,CAAC,GAAG,YAAI,GAAG,QAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,YAAI,GAAG,OAAG,CAAC,GAAG,YAAI,GAAG,QAAI,CAAC,MAAM,CAAC,CAAC;IAExI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC9B,yBAAyB;QACzB,IAAI,IAAI,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC;QAE9B,yBAAyB;QACzB,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;YAC7B,MAAM,IAAI,IAAI,CAAC;SAClB;QACD,qBAAqB;aAChB;YACD,MAAM;SACT;KACJ;IAED,oDAAoD;IACpD;;;OAGG;IACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAClB,CAAC;AAjCD,kCAiCC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,IAAiB;IACxC,4BAA4B;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IACD,uBAAuB;SAClB;QACD,OAAO,CAAC,IAAI,CAAC,CAAC;KACjB;AACL,CAAC;AATD,gCASC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAY;IACtC,IAAI,cAAc,GAAW,EAAE,CAAC,CAAgD,+BAA+B;IAE/G,wDAAwD;IACxD,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAE3E,wDAAwD;IACxD,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;IAExF,OAAO,cAAc,CAAC;AAC1B,CAAC;AAVD,sCAUC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ITweetSearchResponse, ITweetDetailsResponse, ITweetFavoritersResponse, ITweetRetweetersResponse } from 'rettiwt-core';
|
|
2
|
-
import { IDataExtract } from '../../../types/Resolvers';
|
|
3
|
-
/**
|
|
4
|
-
* @returns The raw tweets data formatted and sorted into required and additional data
|
|
5
|
-
* @param res The raw response received from TwitterAPI
|
|
6
|
-
*/
|
|
7
|
-
export declare function extractTweets(res: ITweetSearchResponse): IDataExtract;
|
|
8
|
-
/**
|
|
9
|
-
* @returns The raw tweet data formatted and sorted into required and additional data
|
|
10
|
-
* @param res The raw response received from TwitterAPI
|
|
11
|
-
* @param tweetId The rest id of the tweet to fetch
|
|
12
|
-
*/
|
|
13
|
-
export declare function extractTweet(res: ITweetDetailsResponse, tweetId: string): IDataExtract;
|
|
14
|
-
/**
|
|
15
|
-
* @returns The raw tweet likers data formatted and sorted into required and additional data
|
|
16
|
-
* @param res The raw response received from TwitterAPI
|
|
17
|
-
*/
|
|
18
|
-
export declare function extractTweetLikers(res: ITweetFavoritersResponse): IDataExtract;
|
|
19
|
-
/**
|
|
20
|
-
* @returns The raw tweet retweeters data formatted and sorted into required and additional data
|
|
21
|
-
* @param res The raw response received from TwitterAPI
|
|
22
|
-
*/
|
|
23
|
-
export declare function extractTweetRetweeters(res: ITweetRetweetersResponse): IDataExtract;
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
exports.__esModule = true;
|
|
26
|
-
exports.extractTweetRetweeters = exports.extractTweetLikers = exports.extractTweet = exports.extractTweets = void 0;
|
|
27
|
-
var Errors_1 = require("../../../enums/Errors");
|
|
28
|
-
// PARSERS
|
|
29
|
-
var Parsers = __importStar(require("../Parser"));
|
|
30
|
-
/**
|
|
31
|
-
* @returns The raw tweets data formatted and sorted into required and additional data
|
|
32
|
-
* @param res The raw response received from TwitterAPI
|
|
33
|
-
*/
|
|
34
|
-
function extractTweets(res) {
|
|
35
|
-
var _a, _b, _c;
|
|
36
|
-
var required = []; // To store the reqruied raw data
|
|
37
|
-
var cursor = ''; // To store the cursor to next batch
|
|
38
|
-
var users = []; // To store additional user data
|
|
39
|
-
var tweets = []; // To store additional tweet data
|
|
40
|
-
// If tweet does not exist
|
|
41
|
-
if (Parsers.isJSONEmpty(res.data.search_by_raw_query)) {
|
|
42
|
-
throw new Error(Errors_1.DataErrors.NoMatchingTweetsFound);
|
|
43
|
-
}
|
|
44
|
-
// If tweets
|
|
45
|
-
if (res.data.search_by_raw_query.search_timeline.timeline.instructions.length) {
|
|
46
|
-
// Destructuring raw list of tweets
|
|
47
|
-
(_a = res.data.search_by_raw_query.search_timeline.timeline.instructions.filter(function (item) { return item.type === 'TimelineAddEntries'; })[0].entries) === null || _a === void 0 ? void 0 : _a.forEach(function (entry) {
|
|
48
|
-
var _a, _b, _c;
|
|
49
|
-
// If entry is of type tweet and tweet exists
|
|
50
|
-
if (entry.entryId.includes('tweet') && ((_a = entry.content.itemContent) === null || _a === void 0 ? void 0 : _a.tweet_results.result.__typename) === 'Tweet') {
|
|
51
|
-
required.push(entry.content.itemContent.tweet_results.result);
|
|
52
|
-
users.push((_b = entry.content.itemContent.tweet_results.result.core) === null || _b === void 0 ? void 0 : _b.user_results.result);
|
|
53
|
-
tweets.push(entry.content.itemContent.tweet_results.result);
|
|
54
|
-
}
|
|
55
|
-
// If entry is of type cursor and cursor exists
|
|
56
|
-
else if (entry.entryId.includes('cursor-bottom')) {
|
|
57
|
-
cursor = (_c = entry.content.value) !== null && _c !== void 0 ? _c : '';
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
// If cursor not found in 'TimelineAddEntries', getting cursor from 'TimlineReplaceEntry'
|
|
61
|
-
if (!cursor) {
|
|
62
|
-
cursor = (_c = (_b = res.data.search_by_raw_query.search_timeline.timeline.instructions.filter(function (item) { var _a; return (_a = item.entry_id_to_replace) === null || _a === void 0 ? void 0 : _a.includes('cursor-bottom'); })[0].entry) === null || _b === void 0 ? void 0 : _b.content.value) !== null && _c !== void 0 ? _c : '';
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// Returning the data
|
|
66
|
-
return {
|
|
67
|
-
required: required,
|
|
68
|
-
cursor: cursor,
|
|
69
|
-
users: users,
|
|
70
|
-
tweets: tweets
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
exports.extractTweets = extractTweets;
|
|
74
|
-
/**
|
|
75
|
-
* @returns The raw tweet data formatted and sorted into required and additional data
|
|
76
|
-
* @param res The raw response received from TwitterAPI
|
|
77
|
-
* @param tweetId The rest id of the tweet to fetch
|
|
78
|
-
*/
|
|
79
|
-
function extractTweet(res, tweetId) {
|
|
80
|
-
var _a;
|
|
81
|
-
var required = []; // To store the reqruied raw data
|
|
82
|
-
var cursor = ''; // To store the cursor to next batch
|
|
83
|
-
var users = []; // To store additional user data
|
|
84
|
-
var tweets = []; // To store additional tweet data
|
|
85
|
-
// If tweet does not exist
|
|
86
|
-
if (Parsers.isJSONEmpty(res.data)) {
|
|
87
|
-
throw new Error(Errors_1.DataErrors.TweetNotFound);
|
|
88
|
-
}
|
|
89
|
-
// Destructuring the received raw data
|
|
90
|
-
(_a = res.data.threaded_conversation_with_injections_v2.instructions.filter(function (item) { return item['type'] === 'TimelineAddEntries'; })[0].entries) === null || _a === void 0 ? void 0 : _a.forEach(function (entry) {
|
|
91
|
-
var _a, _b, _c;
|
|
92
|
-
// If entry is of type tweet and tweet exists
|
|
93
|
-
if (entry.entryId.indexOf('tweet') != -1 && ((_b = (_a = entry.content.itemContent) === null || _a === void 0 ? void 0 : _a.tweet_results) === null || _b === void 0 ? void 0 : _b.result.__typename) === 'Tweet') {
|
|
94
|
-
// If this is the required tweet
|
|
95
|
-
if (entry.entryId.indexOf(tweetId) != -1) {
|
|
96
|
-
required.push(entry.content.itemContent.tweet_results.result);
|
|
97
|
-
}
|
|
98
|
-
tweets.push(entry.content.itemContent.tweet_results.result);
|
|
99
|
-
users.push(entry.content.itemContent.tweet_results.result.core.user_results.result);
|
|
100
|
-
}
|
|
101
|
-
// If entry if of type conversation
|
|
102
|
-
else if (entry.entryId.indexOf('conversationthread') != -1) {
|
|
103
|
-
// Iterating over the conversation
|
|
104
|
-
(_c = entry.content.items) === null || _c === void 0 ? void 0 : _c.forEach(function (item) {
|
|
105
|
-
var _a;
|
|
106
|
-
// If item is of type tweet and tweet exists
|
|
107
|
-
if (item.entryId.indexOf('tweet') != -1 && ((_a = item.item.itemContent.tweet_results) === null || _a === void 0 ? void 0 : _a.result.__typename) === 'Tweet') {
|
|
108
|
-
required.push(item.item.itemContent.tweet_results.result);
|
|
109
|
-
tweets.push(item.item.itemContent.tweet_results.result);
|
|
110
|
-
users.push(item.item.itemContent.tweet_results.result.core.user_results.result);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
// Returning the data
|
|
116
|
-
return {
|
|
117
|
-
required: required,
|
|
118
|
-
cursor: cursor,
|
|
119
|
-
users: users,
|
|
120
|
-
tweets: tweets
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
exports.extractTweet = extractTweet;
|
|
124
|
-
/**
|
|
125
|
-
* @returns The raw tweet likers data formatted and sorted into required and additional data
|
|
126
|
-
* @param res The raw response received from TwitterAPI
|
|
127
|
-
*/
|
|
128
|
-
function extractTweetLikers(res) {
|
|
129
|
-
var required = []; // To store the reqruied raw data
|
|
130
|
-
var cursor = ''; // To store the cursor to next batch
|
|
131
|
-
var users = []; // To store additional user data
|
|
132
|
-
var tweets = []; // To store additional tweet data
|
|
133
|
-
// If tweet does not exist
|
|
134
|
-
if (Parsers.isJSONEmpty(res.data.favoriters_timeline)) {
|
|
135
|
-
throw new Error(Errors_1.DataErrors.TweetNotFound);
|
|
136
|
-
}
|
|
137
|
-
// If likes found
|
|
138
|
-
if (res.data.favoriters_timeline.timeline.instructions.length) {
|
|
139
|
-
// Destructuring raw list of likers
|
|
140
|
-
res.data.favoriters_timeline.timeline.instructions.filter(function (item) { return item.type === 'TimelineAddEntries'; })[0].entries.forEach(function (entry) {
|
|
141
|
-
var _a, _b;
|
|
142
|
-
// If entry is of type user and user exists
|
|
143
|
-
if (entry.entryId.indexOf('user') != -1 && ((_a = entry.content.itemContent) === null || _a === void 0 ? void 0 : _a.user_results.result.__typename) === 'User') {
|
|
144
|
-
required.push(entry.content.itemContent.user_results.result);
|
|
145
|
-
users.push(entry.content.itemContent.user_results.result);
|
|
146
|
-
}
|
|
147
|
-
// If entry is of type cursor
|
|
148
|
-
else if (entry.entryId.indexOf('cursor-bottom') != -1) {
|
|
149
|
-
cursor = (_b = entry.content.value) !== null && _b !== void 0 ? _b : '';
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
// Returning the data
|
|
154
|
-
return {
|
|
155
|
-
required: required,
|
|
156
|
-
cursor: cursor,
|
|
157
|
-
users: users,
|
|
158
|
-
tweets: tweets
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
exports.extractTweetLikers = extractTweetLikers;
|
|
162
|
-
/**
|
|
163
|
-
* @returns The raw tweet retweeters data formatted and sorted into required and additional data
|
|
164
|
-
* @param res The raw response received from TwitterAPI
|
|
165
|
-
*/
|
|
166
|
-
function extractTweetRetweeters(res) {
|
|
167
|
-
var required = []; // To store the reqruied raw data
|
|
168
|
-
var cursor = ''; // To store the cursor to next batch
|
|
169
|
-
var users = []; // To store additional user data
|
|
170
|
-
var tweets = []; // To store additional tweet data
|
|
171
|
-
// If tweet does not exist
|
|
172
|
-
if (Parsers.isJSONEmpty(res.data.retweeters_timeline)) {
|
|
173
|
-
throw new Error(Errors_1.DataErrors.TweetNotFound);
|
|
174
|
-
}
|
|
175
|
-
// If retweeters found
|
|
176
|
-
if (res.data.retweeters_timeline.timeline.instructions.length) {
|
|
177
|
-
// Destructuring raw list of retweeters
|
|
178
|
-
res.data.retweeters_timeline.timeline.instructions.filter(function (item) { return item.type === 'TimelineAddEntries'; })[0].entries.forEach(function (entry) {
|
|
179
|
-
var _a, _b;
|
|
180
|
-
// If entry is of type user and user exists
|
|
181
|
-
if (entry.entryId.indexOf('user') != -1 && ((_a = entry.content.itemContent) === null || _a === void 0 ? void 0 : _a.user_results.result.__typename) === 'User') {
|
|
182
|
-
required.push(entry.content.itemContent.user_results.result);
|
|
183
|
-
users.push(entry.content.itemContent.user_results.result);
|
|
184
|
-
}
|
|
185
|
-
// If entry is of type cursor
|
|
186
|
-
else if (entry.entryId.indexOf('cursor-bottom') != -1) {
|
|
187
|
-
cursor = (_b = entry.content.value) !== null && _b !== void 0 ? _b : '';
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
// Returning the data
|
|
192
|
-
return {
|
|
193
|
-
required: required,
|
|
194
|
-
cursor: cursor,
|
|
195
|
-
users: users,
|
|
196
|
-
tweets: tweets
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
exports.extractTweetRetweeters = extractTweetRetweeters;
|
|
200
|
-
//# sourceMappingURL=Tweets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tweets.js","sourceRoot":"","sources":["../../../../src/services/helper/extractors/Tweets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IUserDetailsResponse, IUserFollowersResponse, IUserFollowingResponse, IUserLikesResponse } from 'rettiwt-core';
|
|
2
|
-
import { IDataExtract } from '../../../types/Resolvers';
|
|
3
|
-
/**
|
|
4
|
-
* @returns The raw user account data formatted and sorted into required and additional data
|
|
5
|
-
* @param res The raw response received from Twitter
|
|
6
|
-
*/
|
|
7
|
-
export declare function extractUserDetails(res: IUserDetailsResponse): IDataExtract;
|
|
8
|
-
/**
|
|
9
|
-
* @returns The raw user following/followers data formatted and sorted into required and additional data
|
|
10
|
-
* @param res The raw response received from TwitterAPI
|
|
11
|
-
*/
|
|
12
|
-
export declare function extractUserFollow(res: IUserFollowersResponse | IUserFollowingResponse): IDataExtract;
|
|
13
|
-
/**
|
|
14
|
-
* @returns The raw user likes data formatted and sorted into required and additional data
|
|
15
|
-
* @param res The raw response received from TwitterAPI
|
|
16
|
-
*/
|
|
17
|
-
export declare function extractUserLikes(res: IUserLikesResponse): IDataExtract;
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
exports.__esModule = true;
|
|
26
|
-
exports.extractUserLikes = exports.extractUserFollow = exports.extractUserDetails = void 0;
|
|
27
|
-
var Errors_1 = require("../../../enums/Errors");
|
|
28
|
-
// PARSERS
|
|
29
|
-
var Parsers = __importStar(require("../Parser"));
|
|
30
|
-
/**
|
|
31
|
-
* @returns The raw user account data formatted and sorted into required and additional data
|
|
32
|
-
* @param res The raw response received from Twitter
|
|
33
|
-
*/
|
|
34
|
-
function extractUserDetails(res) {
|
|
35
|
-
var _a, _b, _c;
|
|
36
|
-
var required = []; // To store the reqruied raw data
|
|
37
|
-
var cursor = ''; // To store the cursor to next batch
|
|
38
|
-
var users = []; // To store additional user data
|
|
39
|
-
var tweets = []; // To store additional tweet data
|
|
40
|
-
// If user not found or account suspended
|
|
41
|
-
if (((_c = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.result) === null || _c === void 0 ? void 0 : _c.__typename) !== 'User') {
|
|
42
|
-
throw new Error(Errors_1.DataErrors.UserNotFound);
|
|
43
|
-
}
|
|
44
|
-
// Destructuring user account data
|
|
45
|
-
required.push(res.data.user.result);
|
|
46
|
-
users.push(res.data.user.result);
|
|
47
|
-
// Returning the data
|
|
48
|
-
return {
|
|
49
|
-
required: required,
|
|
50
|
-
cursor: cursor,
|
|
51
|
-
users: users,
|
|
52
|
-
tweets: tweets
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
exports.extractUserDetails = extractUserDetails;
|
|
56
|
-
/**
|
|
57
|
-
* @returns The raw user following/followers data formatted and sorted into required and additional data
|
|
58
|
-
* @param res The raw response received from TwitterAPI
|
|
59
|
-
*/
|
|
60
|
-
function extractUserFollow(res) {
|
|
61
|
-
var required = []; // To store the reqruied raw data
|
|
62
|
-
var cursor = ''; // To store the cursor to next batch
|
|
63
|
-
var users = []; // To store additional user data
|
|
64
|
-
var tweets = []; // To store additional tweet data
|
|
65
|
-
// If user does not exist
|
|
66
|
-
if (Parsers.isJSONEmpty(res.data.user)) {
|
|
67
|
-
throw new Error(Errors_1.DataErrors.UserNotFound);
|
|
68
|
-
}
|
|
69
|
-
// Extracting the raw list
|
|
70
|
-
res.data.user.result.timeline.timeline.instructions.forEach(function (item) {
|
|
71
|
-
var _a, _b;
|
|
72
|
-
if (item.type === 'TimelineAddEntries') {
|
|
73
|
-
// If no follow found
|
|
74
|
-
if (((_a = item.entries) === null || _a === void 0 ? void 0 : _a.length) == 2) {
|
|
75
|
-
// Returning the data
|
|
76
|
-
return {
|
|
77
|
-
required: required,
|
|
78
|
-
cursor: cursor,
|
|
79
|
-
users: users,
|
|
80
|
-
tweets: tweets
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
// Destructuring data
|
|
84
|
-
(_b = item.entries) === null || _b === void 0 ? void 0 : _b.forEach(function (entry) {
|
|
85
|
-
var _a, _b;
|
|
86
|
-
// If entry is of type user and user account exists
|
|
87
|
-
if (entry.entryId.indexOf('user') != -1 && ((_a = entry.content.itemContent) === null || _a === void 0 ? void 0 : _a.user_results.result.__typename) === 'User') {
|
|
88
|
-
required.push(entry.content.itemContent.user_results.result);
|
|
89
|
-
users.push(entry.content.itemContent.user_results.result);
|
|
90
|
-
}
|
|
91
|
-
// If entry is of type cursor
|
|
92
|
-
else if (entry.entryId.indexOf('cursor-bottom') != -1) {
|
|
93
|
-
cursor = (_b = entry.content.value) !== null && _b !== void 0 ? _b : '';
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
// Returning the data
|
|
99
|
-
return {
|
|
100
|
-
required: required,
|
|
101
|
-
cursor: cursor,
|
|
102
|
-
users: users,
|
|
103
|
-
tweets: tweets
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
exports.extractUserFollow = extractUserFollow;
|
|
107
|
-
/**
|
|
108
|
-
* @returns The raw user likes data formatted and sorted into required and additional data
|
|
109
|
-
* @param res The raw response received from TwitterAPI
|
|
110
|
-
*/
|
|
111
|
-
function extractUserLikes(res) {
|
|
112
|
-
var required = []; // To store the reqruied raw data
|
|
113
|
-
var cursor = ''; // To store the cursor to next batch
|
|
114
|
-
var users = []; // To store additional user data
|
|
115
|
-
var tweets = []; // To store additional tweet data
|
|
116
|
-
// If user does not exist
|
|
117
|
-
if (Parsers.isJSONEmpty(res.data.user)) {
|
|
118
|
-
throw new Error(Errors_1.DataErrors.UserNotFound);
|
|
119
|
-
}
|
|
120
|
-
// If user likes found
|
|
121
|
-
if (res.data.user.result.timeline_v2.timeline.instructions.length) {
|
|
122
|
-
// Extracting the raw list
|
|
123
|
-
res.data.user.result.timeline_v2.timeline.instructions.forEach(function (item) {
|
|
124
|
-
if (item.type === 'TimelineAddEntries') {
|
|
125
|
-
// Destructuring data
|
|
126
|
-
item.entries.forEach(function (entry) {
|
|
127
|
-
var _a, _b;
|
|
128
|
-
// If entry is of type tweet and tweet exists
|
|
129
|
-
if (entry.entryId.indexOf('tweet') != -1 && ((_a = entry.content.itemContent) === null || _a === void 0 ? void 0 : _a.tweet_results.result.__typename) === 'Tweet') {
|
|
130
|
-
required.push(entry.content.itemContent.tweet_results.result);
|
|
131
|
-
users.push(entry.content.itemContent.tweet_results.result.core.user_results.result);
|
|
132
|
-
tweets.push(entry.content.itemContent.tweet_results.result);
|
|
133
|
-
}
|
|
134
|
-
// If entry is of type cursor
|
|
135
|
-
else if (entry.entryId.indexOf('cursor-bottom') != -1) {
|
|
136
|
-
cursor = (_b = entry.content.value) !== null && _b !== void 0 ? _b : '';
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
// Returning the data
|
|
143
|
-
return {
|
|
144
|
-
required: required,
|
|
145
|
-
cursor: cursor,
|
|
146
|
-
users: users,
|
|
147
|
-
tweets: tweets
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
exports.extractUserLikes = extractUserLikes;
|
|
151
|
-
//# sourceMappingURL=Users.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/services/helper/extractors/Users.ts"],"names":[],"mappings":"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"}
|