rettiwt-api 1.0.6 → 1.0.8
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/{queries → graphql/queries}/RootQuery.d.ts +0 -0
- package/dist/{queries → graphql/queries}/RootQuery.js +4 -3
- package/dist/graphql/queries/RootQuery.js.map +1 -0
- package/dist/{resolvers → graphql/resolvers}/AccountResolver.d.ts +1 -1
- package/dist/{resolvers → graphql/resolvers}/AccountResolver.js +0 -0
- package/dist/graphql/resolvers/AccountResolver.js.map +1 -0
- package/dist/{resolvers → graphql/resolvers}/ResolverBase.d.ts +1 -1
- package/dist/{resolvers → graphql/resolvers}/ResolverBase.js +0 -0
- package/dist/graphql/resolvers/ResolverBase.js.map +1 -0
- package/dist/{resolvers → graphql/resolvers}/TweetResolver.d.ts +10 -18
- package/dist/{resolvers → graphql/resolvers}/TweetResolver.js +51 -83
- package/dist/graphql/resolvers/TweetResolver.js.map +1 -0
- package/dist/{resolvers → graphql/resolvers}/UserResolver.d.ts +5 -4
- package/dist/{resolvers → graphql/resolvers}/UserResolver.js +51 -35
- package/dist/graphql/resolvers/UserResolver.js.map +1 -0
- package/dist/{models/graphql → graphql/types}/Global.d.ts +0 -0
- package/dist/{models/graphql → graphql/types}/Global.js +0 -0
- package/dist/graphql/types/Global.js.map +1 -0
- package/dist/graphql/types/TweetTypes.d.ts +4 -0
- package/dist/{models/graphql → graphql/types}/TweetTypes.js +17 -13
- package/dist/graphql/types/TweetTypes.js.map +1 -0
- package/dist/graphql/types/UserTypes.d.ts +3 -0
- package/dist/{models/graphql → graphql/types}/UserTypes.js +9 -11
- package/dist/graphql/types/UserTypes.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/server.js +3 -3
- package/dist/server.js.map +1 -1
- package/dist/services/AuthService.js +2 -2
- package/dist/services/AuthService.js.map +1 -1
- package/dist/services/CacheService.d.ts +3 -3
- package/dist/services/CacheService.js +22 -75
- package/dist/services/CacheService.js.map +1 -1
- package/dist/services/FetcherService.d.ts +3 -2
- package/dist/services/FetcherService.js +11 -29
- package/dist/services/FetcherService.js.map +1 -1
- package/dist/services/data/TweetService.d.ts +15 -16
- package/dist/services/data/TweetService.js +71 -50
- package/dist/services/data/TweetService.js.map +1 -1
- package/dist/services/data/UserAccountService.d.ts +3 -3
- package/dist/services/data/UserAccountService.js +22 -8
- package/dist/services/data/UserAccountService.js.map +1 -1
- package/dist/services/data/UserService.d.ts +42 -0
- package/dist/services/data/UserService.js +255 -0
- package/dist/services/data/UserService.js.map +1 -0
- package/dist/services/helper/Extractors.js +1 -1
- package/dist/services/helper/Extractors.js.map +1 -1
- package/dist/services/helper/Parser.d.ts +1 -1
- package/dist/services/helper/Parser.js +4 -3
- package/dist/services/helper/Parser.js.map +1 -1
- package/dist/services/helper/Urls.d.ts +2 -2
- package/dist/services/helper/Urls.js +19 -3
- package/dist/services/helper/Urls.js.map +1 -1
- package/dist/services/helper/deserializers/Tweets.d.ts +12 -0
- package/dist/services/helper/deserializers/Tweets.js +92 -0
- package/dist/services/helper/deserializers/Tweets.js.map +1 -0
- package/dist/services/{accounting/Flows.d.ts → helper/deserializers/User.d.ts} +0 -0
- package/dist/services/helper/deserializers/User.js +2 -0
- package/dist/services/helper/deserializers/User.js.map +1 -0
- package/dist/services/helper/deserializers/Users.d.ts +7 -0
- package/dist/services/helper/deserializers/Users.js +27 -0
- package/dist/services/helper/deserializers/Users.js.map +1 -0
- package/dist/services/helper/extractors/TweetExtractors.d.ts +0 -0
- package/dist/services/helper/extractors/TweetExtractors.js +2 -0
- package/dist/services/helper/extractors/TweetExtractors.js.map +1 -0
- package/dist/services/helper/extractors/Tweets.d.ts +34 -0
- package/dist/services/helper/extractors/Tweets.js +266 -0
- package/dist/services/helper/extractors/Tweets.js.map +1 -0
- package/dist/services/helper/extractors/UserExtractors.d.ts +45 -0
- package/dist/services/helper/extractors/UserExtractors.js +176 -0
- package/dist/services/helper/extractors/UserExtractors.js.map +1 -0
- package/dist/services/helper/extractors/Users.d.ts +23 -0
- package/dist/services/helper/extractors/Users.js +154 -0
- package/dist/services/helper/extractors/Users.js.map +1 -0
- package/dist/services/helper/urls/Authentication.d.ts +4 -0
- package/dist/services/helper/urls/Authentication.js +11 -0
- package/dist/services/helper/urls/Authentication.js.map +1 -0
- package/dist/services/helper/urls/Tweets.d.ts +32 -0
- package/dist/services/helper/urls/Tweets.js +51 -0
- package/dist/services/helper/urls/Tweets.js.map +1 -0
- package/dist/services/helper/urls/Urls.d.ts +4 -0
- package/dist/services/helper/urls/Urls.js +11 -0
- package/dist/services/helper/urls/Urls.js.map +1 -0
- package/dist/services/helper/urls/Users.d.ts +31 -0
- package/dist/services/helper/urls/Users.js +66 -0
- package/dist/services/helper/urls/Users.js.map +1 -0
- package/dist/types/{graphql/Errors.d.ts → Errors.d.ts} +0 -0
- package/dist/types/{graphql/Errors.js → Errors.js} +0 -0
- package/dist/types/Errors.js.map +1 -0
- package/dist/types/Resolvers.d.ts +9 -0
- package/dist/types/Resolvers.js +3 -0
- package/dist/types/Resolvers.js.map +1 -0
- package/dist/types/Tweet.d.ts +1 -0
- package/dist/types/Tweet.js.map +1 -1
- package/dist/types/User.d.ts +19 -0
- package/dist/types/User.js +4 -0
- package/dist/types/User.js.map +1 -0
- package/dist/types/data/Errors.d.ts +27 -0
- package/dist/types/data/Errors.js +35 -0
- package/dist/types/data/Errors.js.map +1 -0
- package/dist/types/data/Service.d.ts +29 -0
- package/dist/types/data/Service.js +19 -0
- package/dist/types/data/Service.js.map +1 -0
- package/dist/types/data/Tweet.d.ts +41 -0
- package/dist/types/data/Tweet.js +5 -0
- package/dist/types/data/Tweet.js.map +1 -0
- package/dist/types/data/User.d.ts +19 -0
- package/dist/types/data/User.js +4 -0
- package/dist/types/data/User.js.map +1 -0
- package/dist/types/raw/http/Error.d.ts +34 -0
- package/dist/types/raw/{user/Users.js → http/Error.js} +1 -1
- package/dist/types/raw/http/Error.js.map +1 -0
- package/dist/types/raw/http/Response.d.ts +34 -0
- package/dist/types/raw/http/Response.js +3 -0
- package/dist/types/raw/http/Response.js.map +1 -0
- package/package.json +1 -1
- package/src/{queries → graphql/queries}/RootQuery.ts +5 -4
- package/src/{resolvers → graphql/resolvers}/AccountResolver.ts +21 -21
- package/src/{resolvers → graphql/resolvers}/ResolverBase.ts +1 -1
- package/src/{resolvers → graphql/resolvers}/TweetResolver.ts +48 -30
- package/src/{resolvers → graphql/resolvers}/UserResolver.ts +41 -27
- package/src/{models/graphql → graphql/types}/Global.ts +0 -0
- package/src/{models/graphql → graphql/types}/TweetTypes.ts +16 -12
- package/src/{models/graphql → graphql/types}/UserTypes.ts +13 -15
- package/src/index.ts +2 -2
- package/src/server.ts +3 -3
- package/src/services/AuthService.ts +1 -1
- package/src/services/CacheService.ts +6 -8
- package/src/services/FetcherService.ts +11 -14
- package/src/services/data/TweetService.ts +58 -37
- package/src/services/data/UserService.ts +187 -0
- package/src/services/helper/Parser.ts +6 -4
- package/src/services/helper/{Deserializers.ts → deserializers/Tweets.ts} +3 -28
- package/src/services/helper/deserializers/Users.ts +26 -0
- package/src/services/helper/extractors/Tweets.ts +252 -0
- package/src/services/helper/extractors/Users.ts +137 -0
- package/src/services/helper/urls/Authentication.ts +6 -0
- package/src/services/helper/urls/Tweets.ts +46 -0
- package/src/services/helper/urls/Users.ts +62 -0
- package/src/types/Resolvers.ts +9 -0
- package/src/types/data/Errors.ts +28 -0
- package/src/types/{Service.ts → data/Service.ts} +4 -5
- package/src/types/{Tweet.ts → data/Tweet.ts} +1 -0
- package/src/types/{UserAccount.ts → data/User.ts} +0 -0
- package/tsconfig.json +2 -2
- package/dist/models/graphql/Global.js.map +0 -1
- package/dist/models/graphql/TweetTypes.d.ts +0 -6
- package/dist/models/graphql/TweetTypes.js.map +0 -1
- package/dist/models/graphql/UserTypes.d.ts +0 -3
- package/dist/models/graphql/UserTypes.js.map +0 -1
- package/dist/queries/RootQuery.js.map +0 -1
- package/dist/resolvers/AccountResolver.js.map +0 -1
- package/dist/resolvers/ResolverBase.js.map +0 -1
- package/dist/resolvers/TweetResolver.js.map +0 -1
- package/dist/resolvers/UserResolver.js.map +0 -1
- package/dist/services/AccountsService.d.ts +0 -17
- package/dist/services/AccountsService.js +0 -171
- package/dist/services/AccountsService.js.map +0 -1
- package/dist/services/accounting/AccountsService.d.ts +0 -20
- package/dist/services/accounting/AccountsService.js +0 -147
- package/dist/services/accounting/AccountsService.js.map +0 -1
- package/dist/services/accounting/Flows.js +0 -2
- package/dist/services/accounting/Flows.js.map +0 -1
- package/dist/services/accounting/LoginFlows.d.ts +0 -20
- package/dist/services/accounting/LoginFlows.js +0 -70
- package/dist/services/accounting/LoginFlows.js.map +0 -1
- package/dist/test/Test.js +0 -2
- package/dist/test/Test.js.map +0 -1
- package/dist/types/graphql/Errors.js.map +0 -1
- package/dist/types/raw/user/Users.d.ts +0 -120
- package/dist/types/raw/user/Users.js.map +0 -1
- package/src/services/data/UserAccountService.ts +0 -176
- package/src/services/helper/Extractors.ts +0 -455
- package/src/services/helper/Urls.ts +0 -109
- package/src/types/graphql/Errors.ts +0 -16
- package/src/types/raw/user/Tweets.ts +0 -2847
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
export default interface Root {
|
|
2
|
-
data: Data;
|
|
3
|
-
}
|
|
4
|
-
export interface Data {
|
|
5
|
-
users: User[];
|
|
6
|
-
}
|
|
7
|
-
export interface User {
|
|
8
|
-
result: Result;
|
|
9
|
-
}
|
|
10
|
-
export interface Result {
|
|
11
|
-
__typename: string;
|
|
12
|
-
id: string;
|
|
13
|
-
rest_id: string;
|
|
14
|
-
affiliates_highlighted_label: AffiliatesHighlightedLabel;
|
|
15
|
-
has_graduated_access: boolean;
|
|
16
|
-
has_nft_avatar: boolean;
|
|
17
|
-
is_blue_verified: boolean;
|
|
18
|
-
legacy: Legacy;
|
|
19
|
-
smart_blocked_by: boolean;
|
|
20
|
-
smart_blocking: boolean;
|
|
21
|
-
super_follow_eligible: boolean;
|
|
22
|
-
super_followed_by: boolean;
|
|
23
|
-
super_following: boolean;
|
|
24
|
-
verified_phone_status: boolean;
|
|
25
|
-
legacy_extended_profile: LegacyExtendedProfile;
|
|
26
|
-
is_profile_translatable: boolean;
|
|
27
|
-
}
|
|
28
|
-
export interface AffiliatesHighlightedLabel {
|
|
29
|
-
}
|
|
30
|
-
export interface Legacy {
|
|
31
|
-
blocked_by: boolean;
|
|
32
|
-
blocking: boolean;
|
|
33
|
-
can_dm: boolean;
|
|
34
|
-
can_media_tag: boolean;
|
|
35
|
-
created_at: string;
|
|
36
|
-
default_profile: boolean;
|
|
37
|
-
default_profile_image: boolean;
|
|
38
|
-
description: string;
|
|
39
|
-
entities: Entities;
|
|
40
|
-
fast_followers_count: number;
|
|
41
|
-
favourites_count: number;
|
|
42
|
-
follow_request_sent: boolean;
|
|
43
|
-
followed_by: boolean;
|
|
44
|
-
followers_count: number;
|
|
45
|
-
following: boolean;
|
|
46
|
-
friends_count: number;
|
|
47
|
-
has_custom_timelines: boolean;
|
|
48
|
-
is_translator: boolean;
|
|
49
|
-
listed_count: number;
|
|
50
|
-
location: string;
|
|
51
|
-
media_count: number;
|
|
52
|
-
muting: boolean;
|
|
53
|
-
name: string;
|
|
54
|
-
normal_followers_count: number;
|
|
55
|
-
notifications: boolean;
|
|
56
|
-
pinned_tweet_ids_str: string[];
|
|
57
|
-
possibly_sensitive: boolean;
|
|
58
|
-
profile_banner_extensions: ProfileBannerExtensions;
|
|
59
|
-
profile_banner_url: string;
|
|
60
|
-
profile_image_extensions: ProfileImageExtensions;
|
|
61
|
-
profile_image_url_https: string;
|
|
62
|
-
profile_interstitial_type: string;
|
|
63
|
-
protected: boolean;
|
|
64
|
-
screen_name: string;
|
|
65
|
-
statuses_count: number;
|
|
66
|
-
translator_type: string;
|
|
67
|
-
verified: boolean;
|
|
68
|
-
want_retweets: boolean;
|
|
69
|
-
withheld_in_countries: any[];
|
|
70
|
-
}
|
|
71
|
-
export interface Entities {
|
|
72
|
-
description: Description;
|
|
73
|
-
}
|
|
74
|
-
export interface Description {
|
|
75
|
-
urls: any[];
|
|
76
|
-
}
|
|
77
|
-
export interface ProfileBannerExtensions {
|
|
78
|
-
mediaColor: MediaColor;
|
|
79
|
-
}
|
|
80
|
-
export interface MediaColor {
|
|
81
|
-
r: R;
|
|
82
|
-
}
|
|
83
|
-
export interface R {
|
|
84
|
-
ok: Ok;
|
|
85
|
-
}
|
|
86
|
-
export interface Ok {
|
|
87
|
-
palette: Palette[];
|
|
88
|
-
}
|
|
89
|
-
export interface Palette {
|
|
90
|
-
percentage: number;
|
|
91
|
-
rgb: Rgb;
|
|
92
|
-
}
|
|
93
|
-
export interface Rgb {
|
|
94
|
-
blue: number;
|
|
95
|
-
green: number;
|
|
96
|
-
red: number;
|
|
97
|
-
}
|
|
98
|
-
export interface ProfileImageExtensions {
|
|
99
|
-
mediaColor: MediaColor2;
|
|
100
|
-
}
|
|
101
|
-
export interface MediaColor2 {
|
|
102
|
-
r: R2;
|
|
103
|
-
}
|
|
104
|
-
export interface R2 {
|
|
105
|
-
ok: Ok2;
|
|
106
|
-
}
|
|
107
|
-
export interface Ok2 {
|
|
108
|
-
palette: Palette2[];
|
|
109
|
-
}
|
|
110
|
-
export interface Palette2 {
|
|
111
|
-
percentage: number;
|
|
112
|
-
rgb: Rgb2;
|
|
113
|
-
}
|
|
114
|
-
export interface Rgb2 {
|
|
115
|
-
blue: number;
|
|
116
|
-
green: number;
|
|
117
|
-
red: number;
|
|
118
|
-
}
|
|
119
|
-
export interface LegacyExtendedProfile {
|
|
120
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/types/raw/user/Users.ts"],"names":[],"mappings":""}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
// SERVICES
|
|
2
|
-
import { FetcherService } from '../FetcherService';
|
|
3
|
-
import { AuthService } from '../AuthService';
|
|
4
|
-
|
|
5
|
-
// TYPES
|
|
6
|
-
import { User } from '../../types/UserAccount';
|
|
7
|
-
import { Tweet } from '../../types/Tweet';
|
|
8
|
-
import { CursoredData } from '../../types/Service';
|
|
9
|
-
import RawUser from '../../types/raw/user/User';
|
|
10
|
-
import RawUserFollowers from '../../types/raw/user/Followers';
|
|
11
|
-
import RawUserFollowing from '../../types/raw/user/Following';
|
|
12
|
-
import RawUserLikes from '../../types/raw/user/Likes';
|
|
13
|
-
|
|
14
|
-
// URLS
|
|
15
|
-
import * as Urls from '../helper/Urls';
|
|
16
|
-
|
|
17
|
-
// EXTRACTORS
|
|
18
|
-
import * as Extractors from '../helper/Extractors';
|
|
19
|
-
|
|
20
|
-
// DESERIALIZERS
|
|
21
|
-
import * as Deserializers from '../helper/Deserializers';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* A service that deals with fetching of data related to user account
|
|
25
|
-
*/
|
|
26
|
-
export class UserAccountService extends FetcherService {
|
|
27
|
-
// MEMBER METHODS
|
|
28
|
-
constructor(auth: AuthService) {
|
|
29
|
-
super(auth);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @returns The user account details of the given user
|
|
34
|
-
* @param screenName The screen name of the target user.
|
|
35
|
-
*/
|
|
36
|
-
async getUserAccountDetails(screenName: string): Promise<User> {
|
|
37
|
-
// Fetching the raw data
|
|
38
|
-
let res: RawUser = await this.request<RawUser>(Urls.userAccountUrl(screenName), false).then(res => res.data);
|
|
39
|
-
|
|
40
|
-
// Extracting data
|
|
41
|
-
let data = Extractors.extractUserAccountDetails(res);
|
|
42
|
-
|
|
43
|
-
// Caching data
|
|
44
|
-
this.cacheData(data);
|
|
45
|
-
|
|
46
|
-
// Parsing data
|
|
47
|
-
let user = Deserializers.toUser(data.required[0]);
|
|
48
|
-
|
|
49
|
-
return user;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* @returns The user account details of the user with given rest id
|
|
54
|
-
* @param restId The screen name of the target user.
|
|
55
|
-
*/
|
|
56
|
-
async getUserAccountDetailsById(restId: string): Promise<User> {
|
|
57
|
-
// Getting data from cache
|
|
58
|
-
let cachedData = await this.readData(restId);
|
|
59
|
-
|
|
60
|
-
// If data exists in cache
|
|
61
|
-
if(cachedData) {
|
|
62
|
-
return cachedData;
|
|
63
|
-
}
|
|
64
|
-
// If data does not exist in cache
|
|
65
|
-
else {
|
|
66
|
-
// Fetchin the raw data
|
|
67
|
-
let res = await this.request<RawUser>(Urls.userAccountByIdUrl(restId), false).then(res => res.data);
|
|
68
|
-
|
|
69
|
-
// Extracting data
|
|
70
|
-
let data = Extractors.extractUserAccountDetails(res);
|
|
71
|
-
|
|
72
|
-
// Caching data
|
|
73
|
-
this.cacheData(data);
|
|
74
|
-
|
|
75
|
-
// Parsing data
|
|
76
|
-
let user = Deserializers.toUser(data.required[0]);
|
|
77
|
-
|
|
78
|
-
return user;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* @returns The list of users followed by the target user
|
|
84
|
-
* @param userId The rest id of the target user
|
|
85
|
-
* @param count The batch size of the list
|
|
86
|
-
* @param cursor The cursor to next batch. If blank, first batch is fetched
|
|
87
|
-
*/
|
|
88
|
-
async getUserFollowing(userId: string, count: number, cursor: string): Promise<CursoredData<User>> {
|
|
89
|
-
// If user is not authenticated, abort
|
|
90
|
-
if(!this.isAuthenticated) {
|
|
91
|
-
return { error: new Error('Cannot fetch user following without authentication!') };
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Fetchin the raw data
|
|
95
|
-
let res = await this.request<RawUserFollowing>(Urls.userFollowingUrl(userId, count, cursor)).then(res => res.data);
|
|
96
|
-
|
|
97
|
-
// Extracting data
|
|
98
|
-
let data = Extractors.extractUserFollow(res);
|
|
99
|
-
|
|
100
|
-
// Caching data
|
|
101
|
-
this.cacheData(data);
|
|
102
|
-
|
|
103
|
-
// Parsing data
|
|
104
|
-
let users = data.required.map(item => Deserializers.toUser(item));
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
list: users,
|
|
108
|
-
next: { value: data.cursor }
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* @returns The list of users following the target user
|
|
114
|
-
* @param userId The rest id of the target user
|
|
115
|
-
* @param count The batch size of the list
|
|
116
|
-
* @param cursor The cursor to next batch. If blank, first batch is fetched
|
|
117
|
-
*/
|
|
118
|
-
async getUserFollowers(userId: string, count: number, cursor: string): Promise<CursoredData<User>> {
|
|
119
|
-
// If user is not authenticated, abort
|
|
120
|
-
if(!this.isAuthenticated) {
|
|
121
|
-
return { error: new Error('Cannot fetch user followers without authentication!') };
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* When fetching list of followers, the official Twitter API seems to be fetching n + 20 followers,
|
|
126
|
-
* where n is the actual required number of followers.
|
|
127
|
-
* So changing count to count - 20, fixes fetching more than required number of follower
|
|
128
|
-
*/
|
|
129
|
-
// Fetching the raw data
|
|
130
|
-
let res = await this.request<RawUserFollowers>(Urls.userFollowersUrl(userId, (count > 20) ? (count - 20) : count, cursor)).then(res => res.data);
|
|
131
|
-
|
|
132
|
-
// Extracting data
|
|
133
|
-
let data = Extractors.extractUserFollow(res);
|
|
134
|
-
|
|
135
|
-
// Caching data
|
|
136
|
-
this.cacheData(data);
|
|
137
|
-
|
|
138
|
-
// Parsing data
|
|
139
|
-
let users = data.required.map(item => Deserializers.toUser(item));
|
|
140
|
-
|
|
141
|
-
return {
|
|
142
|
-
list: users,
|
|
143
|
-
next: { value: data.cursor }
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* @returns The list of tweets liked by the target user
|
|
149
|
-
* @param userId The rest id of the target user
|
|
150
|
-
* @param count The batch size of the list
|
|
151
|
-
* @param cursor The cursor to next batch. If blank, first batch is fetched
|
|
152
|
-
*/
|
|
153
|
-
async getUserLikes(userId: string, count: number, cursor: string): Promise<CursoredData<Tweet>> {
|
|
154
|
-
// If user is not authenticated, abort
|
|
155
|
-
if(!this.isAuthenticated) {
|
|
156
|
-
return { error: new Error('Cannot fetch user likes without authentication!') };
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Fetching the raw data
|
|
160
|
-
let res = await this.request<RawUserLikes>(Urls.userLikesUrl(userId, count, cursor)).then(res => res.data);
|
|
161
|
-
|
|
162
|
-
// Extracting data
|
|
163
|
-
let data = Extractors.extractUserLikes(res);
|
|
164
|
-
|
|
165
|
-
// Caching data
|
|
166
|
-
this.cacheData(data);
|
|
167
|
-
|
|
168
|
-
// Parsing data
|
|
169
|
-
let tweets = data.required.map(item => Deserializers.toTweet(item));
|
|
170
|
-
|
|
171
|
-
return {
|
|
172
|
-
list: tweets,
|
|
173
|
-
next: { value: data.cursor }
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
};
|