triangle-utils 1.4.23 → 1.4.25

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.
@@ -1,6 +1,7 @@
1
1
  export declare class UtilsCognito {
2
2
  private readonly cognito;
3
3
  constructor(region: string);
4
+ get_username(token: string): Promise<string | undefined>;
4
5
  admin_get_user(user_pool_id: string, username: string): Promise<import("@aws-sdk/client-cognito-identity-provider").AdminGetUserCommandOutput | undefined>;
5
6
  admin_create_user(user_pool_id: string, username: string, user_id: string): Promise<Error | import("@aws-sdk/client-cognito-identity-provider").AdminCreateUserCommandOutput>;
6
7
  admin_reset_password(user_pool_id: string, username: string): Promise<Error | import("@aws-sdk/client-cognito-identity-provider").AdminCreateUserCommandOutput>;
@@ -4,6 +4,18 @@ export class UtilsCognito {
4
4
  constructor(region) {
5
5
  this.cognito = new CognitoIdentityProvider({ region: region });
6
6
  }
7
+ async get_username(token) {
8
+ try {
9
+ const user_info = await this.cognito.getUser({
10
+ AccessToken: token
11
+ });
12
+ const username = user_info.Username;
13
+ return username;
14
+ }
15
+ catch (error) {
16
+ return undefined;
17
+ }
18
+ }
7
19
  async admin_get_user(user_pool_id, username) {
8
20
  try {
9
21
  return await this.cognito.adminGetUser({
@@ -62,6 +74,19 @@ export class UtilsCognito {
62
74
  return undefined;
63
75
  }
64
76
  const user_attribute = user_attributes.filter(attribute => attribute.Name === "preferred_username")[0];
77
+ if (user_attribute === undefined) {
78
+ const user_id = crypto.randomUUID();
79
+ await this.cognito.updateUserAttributes({
80
+ AccessToken: token,
81
+ UserAttributes: [
82
+ {
83
+ Name: "preferred_username",
84
+ Value: user_id
85
+ }
86
+ ]
87
+ });
88
+ return user_id;
89
+ }
65
90
  const user_id = user_attribute.Value;
66
91
  return user_id;
67
92
  }
@@ -17,4 +17,8 @@ export declare class UtilsNitter extends UtilsBee {
17
17
  min_tweet_id?: string;
18
18
  min_tweet_time?: string;
19
19
  }): Promise<Tweet[]>;
20
+ search(query: string, options?: {
21
+ min_tweet_id?: string;
22
+ min_tweet_time?: string;
23
+ }): Promise<Tweet[]>;
20
24
  }
@@ -133,4 +133,40 @@ export class UtilsNitter extends UtilsBee {
133
133
  }
134
134
  return tweets;
135
135
  }
136
+ async search(query, options) {
137
+ const min_tweet_id = options !== undefined ? options.min_tweet_id : undefined;
138
+ const min_tweet_time = options !== undefined ? options.min_tweet_time : undefined;
139
+ console.log("Querying Twitter:", query, "min_tweet_id:", min_tweet_id, "min_tweet_time:", min_tweet_time);
140
+ let nitter_query = "?f=tweets&q=" + query + "&e-nativeretweets=on";
141
+ const tweets = [];
142
+ while (nitter_query !== undefined) {
143
+ const nitter_url = "https://nitter.net/search" + nitter_query;
144
+ console.log(nitter_url);
145
+ let nitter_html = undefined;
146
+ for (let i = 0; i < 10; i++) {
147
+ nitter_html = await this.get(nitter_url, { render_js: false });
148
+ if (nitter_html !== undefined && nitter_html !== "") {
149
+ break;
150
+ }
151
+ console.log("Failed to query Nitter, trying again.");
152
+ await UtilsMisc.wait((2 + 2 * i) * 1000);
153
+ }
154
+ if (nitter_html === undefined || nitter_html === "") {
155
+ console.log("Nitter failed for query", query);
156
+ return [];
157
+ }
158
+ const nitter_data = parse_nitter_html(nitter_html);
159
+ nitter_query = nitter_data.next_nitter_query;
160
+ for (const tweet of nitter_data.tweets) {
161
+ if (min_tweet_id !== undefined && tweet.tweet_id.localeCompare(min_tweet_id) < 0) {
162
+ nitter_query = undefined;
163
+ }
164
+ if (min_tweet_time !== undefined && tweet.tweet_time.localeCompare(min_tweet_time) < 0) {
165
+ nitter_query = undefined;
166
+ }
167
+ tweets.push(tweet);
168
+ }
169
+ }
170
+ return tweets;
171
+ }
136
172
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "triangle-utils",
3
- "version": "1.4.23",
3
+ "version": "1.4.25",
4
4
  "main": "dist/src/index.js",
5
5
  "types": "dist/src/index.d.ts",
6
6
  "directories": {
@@ -8,6 +8,18 @@ export class UtilsCognito {
8
8
  this.cognito = new CognitoIdentityProvider({ region : region })
9
9
  }
10
10
 
11
+ async get_username(token : string) {
12
+ try {
13
+ const user_info = await this.cognito.getUser({
14
+ AccessToken : token
15
+ })
16
+ const username = user_info.Username
17
+ return username
18
+ } catch (error) {
19
+ return undefined
20
+ }
21
+ }
22
+
11
23
  async admin_get_user(user_pool_id : string, username : string) {
12
24
  try {
13
25
  return await this.cognito.adminGetUser({
@@ -66,6 +78,19 @@ export class UtilsCognito {
66
78
  return undefined
67
79
  }
68
80
  const user_attribute = user_attributes.filter(attribute => attribute.Name === "preferred_username")[0]
81
+ if (user_attribute === undefined) {
82
+ const user_id = crypto.randomUUID()
83
+ await this.cognito.updateUserAttributes({
84
+ AccessToken : token,
85
+ UserAttributes : [
86
+ {
87
+ Name : "preferred_username",
88
+ Value : user_id
89
+ }
90
+ ]
91
+ })
92
+ return user_id
93
+ }
69
94
  const user_id = user_attribute.Value
70
95
  return user_id
71
96
  } catch (error) {
@@ -145,4 +145,42 @@ export class UtilsNitter extends UtilsBee {
145
145
  }
146
146
  return tweets
147
147
  }
148
+
149
+ async search(query : string, options? : { min_tweet_id? : string, min_tweet_time? : string }) : Promise<Tweet[]> {
150
+ const min_tweet_id = options !== undefined ? options.min_tweet_id : undefined
151
+ const min_tweet_time = options !== undefined ? options.min_tweet_time : undefined
152
+
153
+ console.log("Querying Twitter:", query, "min_tweet_id:", min_tweet_id, "min_tweet_time:", min_tweet_time)
154
+ let nitter_query : string | undefined = "?f=tweets&q=" + query + "&e-nativeretweets=on"
155
+ const tweets = []
156
+ while (nitter_query !== undefined) {
157
+ const nitter_url = "https://nitter.net/search" + nitter_query
158
+ console.log(nitter_url)
159
+ let nitter_html = undefined
160
+ for (let i = 0; i < 10; i++) {
161
+ nitter_html = await this.get(nitter_url, { render_js : false })
162
+ if (nitter_html !== undefined && nitter_html !== "") {
163
+ break
164
+ }
165
+ console.log("Failed to query Nitter, trying again.")
166
+ await UtilsMisc.wait((2 + 2 * i) * 1000)
167
+ }
168
+ if (nitter_html === undefined || nitter_html === "") {
169
+ console.log("Nitter failed for query", query)
170
+ return []
171
+ }
172
+ const nitter_data = parse_nitter_html(nitter_html)
173
+ nitter_query = nitter_data.next_nitter_query
174
+ for (const tweet of nitter_data.tweets) {
175
+ if (min_tweet_id !== undefined && tweet.tweet_id.localeCompare(min_tweet_id) < 0) {
176
+ nitter_query = undefined
177
+ }
178
+ if (min_tweet_time !== undefined && tweet.tweet_time.localeCompare(min_tweet_time) < 0) {
179
+ nitter_query = undefined
180
+ }
181
+ tweets.push(tweet)
182
+ }
183
+ }
184
+ return tweets
185
+ }
148
186
  }