@auxiora/connector-social 1.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/LICENSE +191 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/instagram.d.ts +2 -0
- package/dist/instagram.d.ts.map +1 -0
- package/dist/instagram.js +205 -0
- package/dist/instagram.js.map +1 -0
- package/dist/linkedin.d.ts +2 -0
- package/dist/linkedin.d.ts.map +1 -0
- package/dist/linkedin.js +239 -0
- package/dist/linkedin.js.map +1 -0
- package/dist/reddit.d.ts +2 -0
- package/dist/reddit.d.ts.map +1 -0
- package/dist/reddit.js +259 -0
- package/dist/reddit.js.map +1 -0
- package/dist/twitter.d.ts +2 -0
- package/dist/twitter.d.ts.map +1 -0
- package/dist/twitter.js +245 -0
- package/dist/twitter.js.map +1 -0
- package/package.json +25 -0
- package/src/index.ts +4 -0
- package/src/instagram.ts +212 -0
- package/src/linkedin.ts +243 -0
- package/src/reddit.ts +268 -0
- package/src/twitter.ts +253 -0
- package/tests/instagram.test.ts +108 -0
- package/tests/linkedin.test.ts +104 -0
- package/tests/reddit.test.ts +127 -0
- package/tests/twitter.test.ts +120 -0
- package/tsconfig.json +11 -0
- package/tsconfig.tsbuildinfo +1 -0
package/dist/linkedin.js
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { defineConnector } from '@auxiora/connectors';
|
|
2
|
+
async function linkedinFetch(token, path, options) {
|
|
3
|
+
const res = await fetch(`https://api.linkedin.com/v2${path}`, {
|
|
4
|
+
method: options?.method ?? 'GET',
|
|
5
|
+
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
|
|
6
|
+
body: options?.body ? JSON.stringify(options.body) : undefined,
|
|
7
|
+
});
|
|
8
|
+
if (!res.ok)
|
|
9
|
+
throw new Error(`LinkedIn API error: ${res.status} ${await res.text().catch(() => res.statusText)}`);
|
|
10
|
+
return res.json();
|
|
11
|
+
}
|
|
12
|
+
export const linkedinConnector = defineConnector({
|
|
13
|
+
id: 'linkedin',
|
|
14
|
+
name: 'LinkedIn',
|
|
15
|
+
description: 'Integration with LinkedIn for posts, connections, and messaging',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
category: 'social',
|
|
18
|
+
icon: 'linkedin',
|
|
19
|
+
auth: {
|
|
20
|
+
type: 'oauth2',
|
|
21
|
+
oauth2: {
|
|
22
|
+
authUrl: 'https://www.linkedin.com/oauth/v2/authorization',
|
|
23
|
+
tokenUrl: 'https://www.linkedin.com/oauth/v2/accessToken',
|
|
24
|
+
scopes: ['r_liteprofile', 'r_emailaddress', 'w_member_social', 'r_basicprofile'],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
actions: [
|
|
28
|
+
{
|
|
29
|
+
id: 'feed-read',
|
|
30
|
+
name: 'Read Feed',
|
|
31
|
+
description: 'Read the LinkedIn news feed',
|
|
32
|
+
trustMinimum: 1,
|
|
33
|
+
trustDomain: 'integrations',
|
|
34
|
+
reversible: false,
|
|
35
|
+
sideEffects: false,
|
|
36
|
+
params: {},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'post-update',
|
|
40
|
+
name: 'Post Update',
|
|
41
|
+
description: 'Post a status update on LinkedIn',
|
|
42
|
+
trustMinimum: 3,
|
|
43
|
+
trustDomain: 'integrations',
|
|
44
|
+
reversible: false,
|
|
45
|
+
sideEffects: true,
|
|
46
|
+
params: {
|
|
47
|
+
text: { type: 'string', description: 'Post text', required: true },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: 'post-article',
|
|
52
|
+
name: 'Post Article',
|
|
53
|
+
description: 'Share an article on LinkedIn',
|
|
54
|
+
trustMinimum: 3,
|
|
55
|
+
trustDomain: 'integrations',
|
|
56
|
+
reversible: false,
|
|
57
|
+
sideEffects: true,
|
|
58
|
+
params: {
|
|
59
|
+
title: { type: 'string', description: 'Article title', required: true },
|
|
60
|
+
url: { type: 'string', description: 'Article URL', required: true },
|
|
61
|
+
commentary: { type: 'string', description: 'Commentary text' },
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 'connections-list',
|
|
66
|
+
name: 'List Connections',
|
|
67
|
+
description: 'List LinkedIn connections',
|
|
68
|
+
trustMinimum: 1,
|
|
69
|
+
trustDomain: 'integrations',
|
|
70
|
+
reversible: false,
|
|
71
|
+
sideEffects: false,
|
|
72
|
+
params: {},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'messages-list',
|
|
76
|
+
name: 'List Messages',
|
|
77
|
+
description: 'List LinkedIn messages',
|
|
78
|
+
trustMinimum: 1,
|
|
79
|
+
trustDomain: 'messaging',
|
|
80
|
+
reversible: false,
|
|
81
|
+
sideEffects: false,
|
|
82
|
+
params: {},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'message-send',
|
|
86
|
+
name: 'Send Message',
|
|
87
|
+
description: 'Send a message on LinkedIn',
|
|
88
|
+
trustMinimum: 3,
|
|
89
|
+
trustDomain: 'messaging',
|
|
90
|
+
reversible: false,
|
|
91
|
+
sideEffects: true,
|
|
92
|
+
params: {
|
|
93
|
+
recipientId: { type: 'string', description: 'Recipient profile ID', required: true },
|
|
94
|
+
text: { type: 'string', description: 'Message text', required: true },
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: 'profile-get',
|
|
99
|
+
name: 'Get Profile',
|
|
100
|
+
description: 'Get a LinkedIn profile',
|
|
101
|
+
trustMinimum: 1,
|
|
102
|
+
trustDomain: 'integrations',
|
|
103
|
+
reversible: false,
|
|
104
|
+
sideEffects: false,
|
|
105
|
+
params: {
|
|
106
|
+
profileId: { type: 'string', description: 'Profile ID (default: authenticated user)' },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
triggers: [
|
|
111
|
+
{
|
|
112
|
+
id: 'new-message',
|
|
113
|
+
name: 'New Message',
|
|
114
|
+
description: 'Triggered when a new LinkedIn message is received',
|
|
115
|
+
type: 'poll',
|
|
116
|
+
pollIntervalMs: 120_000,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 'post-engagement',
|
|
120
|
+
name: 'Post Engagement',
|
|
121
|
+
description: 'Triggered when a post receives engagement',
|
|
122
|
+
type: 'poll',
|
|
123
|
+
pollIntervalMs: 300_000,
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
entities: [
|
|
127
|
+
{
|
|
128
|
+
id: 'post',
|
|
129
|
+
name: 'Post',
|
|
130
|
+
description: 'A LinkedIn post',
|
|
131
|
+
fields: { id: 'string', text: 'string', authorName: 'string', likes: 'number', comments: 'number', shares: 'number' },
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: 'connection',
|
|
135
|
+
name: 'Connection',
|
|
136
|
+
description: 'A LinkedIn connection',
|
|
137
|
+
fields: { id: 'string', name: 'string', headline: 'string', company: 'string' },
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
async executeAction(actionId, params, token) {
|
|
141
|
+
switch (actionId) {
|
|
142
|
+
case 'feed-read': {
|
|
143
|
+
const me = await linkedinFetch(token, '/me');
|
|
144
|
+
const urn = `urn:li:person:${me.id}`;
|
|
145
|
+
try {
|
|
146
|
+
const posts = await linkedinFetch(token, `/ugcPosts?q=authors&authors=List(${encodeURIComponent(urn)})&count=10`);
|
|
147
|
+
return { posts: posts.elements };
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
return { posts: [], error: `Feed access restricted: ${err.message}` };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
case 'post-update': {
|
|
154
|
+
const me = await linkedinFetch(token, '/me');
|
|
155
|
+
const authorUrn = `urn:li:person:${me.id}`;
|
|
156
|
+
const res = await linkedinFetch(token, '/ugcPosts', {
|
|
157
|
+
method: 'POST',
|
|
158
|
+
body: {
|
|
159
|
+
author: authorUrn,
|
|
160
|
+
lifecycleState: 'PUBLISHED',
|
|
161
|
+
specificContent: {
|
|
162
|
+
'com.linkedin.ugc.ShareContent': {
|
|
163
|
+
shareCommentary: { text: params.text },
|
|
164
|
+
shareMediaCategory: 'NONE',
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
visibility: { 'com.linkedin.ugc.MemberNetworkVisibility': 'PUBLIC' },
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
return { postId: res.id, status: 'posted' };
|
|
171
|
+
}
|
|
172
|
+
case 'post-article': {
|
|
173
|
+
const me = await linkedinFetch(token, '/me');
|
|
174
|
+
const authorUrn = `urn:li:person:${me.id}`;
|
|
175
|
+
const res = await linkedinFetch(token, '/ugcPosts', {
|
|
176
|
+
method: 'POST',
|
|
177
|
+
body: {
|
|
178
|
+
author: authorUrn,
|
|
179
|
+
lifecycleState: 'PUBLISHED',
|
|
180
|
+
specificContent: {
|
|
181
|
+
'com.linkedin.ugc.ShareContent': {
|
|
182
|
+
shareCommentary: { text: params.commentary ?? '' },
|
|
183
|
+
shareMediaCategory: 'ARTICLE',
|
|
184
|
+
media: [{
|
|
185
|
+
status: 'READY',
|
|
186
|
+
originalUrl: params.url,
|
|
187
|
+
title: { text: params.title },
|
|
188
|
+
}],
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
visibility: { 'com.linkedin.ugc.MemberNetworkVisibility': 'PUBLIC' },
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
return { postId: res.id, status: 'shared' };
|
|
195
|
+
}
|
|
196
|
+
case 'connections-list': {
|
|
197
|
+
try {
|
|
198
|
+
const res = await linkedinFetch(token, '/connections?q=viewer&count=50');
|
|
199
|
+
return { connections: res.elements };
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
return { connections: [], error: `Connections access restricted: ${err.message}` };
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
case 'messages-list': {
|
|
206
|
+
try {
|
|
207
|
+
const res = await linkedinFetch(token, '/messages');
|
|
208
|
+
return { messages: res.elements };
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
return { messages: [], error: `Messages access restricted: ${err.message}` };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
case 'message-send': {
|
|
215
|
+
const res = await linkedinFetch(token, '/messages', {
|
|
216
|
+
method: 'POST',
|
|
217
|
+
body: {
|
|
218
|
+
recipients: [`urn:li:person:${params.recipientId}`],
|
|
219
|
+
body: params.text,
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
return { messageId: res.id, status: 'sent' };
|
|
223
|
+
}
|
|
224
|
+
case 'profile-get': {
|
|
225
|
+
const profileId = params.profileId;
|
|
226
|
+
const path = profileId ? `/people/(id:${profileId})` : '/me';
|
|
227
|
+
const profile = await linkedinFetch(token, path);
|
|
228
|
+
return profile;
|
|
229
|
+
}
|
|
230
|
+
default:
|
|
231
|
+
throw new Error(`Unknown action: ${actionId}`);
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
// LinkedIn doesn't support efficient polling for triggers
|
|
235
|
+
async pollTrigger(_triggerId, _token, _lastPollAt) {
|
|
236
|
+
return [];
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
//# sourceMappingURL=linkedin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkedin.js","sourceRoot":"","sources":["../src/linkedin.ts"],"names":[],"mappings":"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"}
|
package/dist/reddit.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reddit.d.ts","sourceRoot":"","sources":["../src/reddit.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,eAAe,yCAsO1B,CAAC"}
|
package/dist/reddit.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { defineConnector } from '@auxiora/connectors';
|
|
2
|
+
const REDDIT_BASE = 'https://oauth.reddit.com';
|
|
3
|
+
const REDDIT_UA = 'auxiora:v1.0.0 (by /u/auxiora)';
|
|
4
|
+
async function redditGet(token, path) {
|
|
5
|
+
const res = await fetch(`${REDDIT_BASE}${path}`, {
|
|
6
|
+
headers: {
|
|
7
|
+
'Authorization': `Bearer ${token}`,
|
|
8
|
+
'User-Agent': REDDIT_UA,
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
if (!res.ok)
|
|
12
|
+
throw new Error(`Reddit API error: ${res.status} ${await res.text().catch(() => res.statusText)}`);
|
|
13
|
+
return res.json();
|
|
14
|
+
}
|
|
15
|
+
async function redditPost(token, path, body) {
|
|
16
|
+
const res = await fetch(`${REDDIT_BASE}${path}`, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: {
|
|
19
|
+
'Authorization': `Bearer ${token}`,
|
|
20
|
+
'User-Agent': REDDIT_UA,
|
|
21
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
22
|
+
},
|
|
23
|
+
body: new URLSearchParams(body).toString(),
|
|
24
|
+
});
|
|
25
|
+
if (!res.ok)
|
|
26
|
+
throw new Error(`Reddit API error: ${res.status} ${await res.text().catch(() => res.statusText)}`);
|
|
27
|
+
return res.json();
|
|
28
|
+
}
|
|
29
|
+
function extractPosts(listing) {
|
|
30
|
+
const data = listing.data;
|
|
31
|
+
const children = (data?.children ?? []);
|
|
32
|
+
return children.map((c) => c.data);
|
|
33
|
+
}
|
|
34
|
+
export const redditConnector = defineConnector({
|
|
35
|
+
id: 'reddit',
|
|
36
|
+
name: 'Reddit',
|
|
37
|
+
description: 'Integration with Reddit for browsing, posting, and messaging',
|
|
38
|
+
version: '1.0.0',
|
|
39
|
+
category: 'social',
|
|
40
|
+
icon: 'reddit',
|
|
41
|
+
auth: {
|
|
42
|
+
type: 'oauth2',
|
|
43
|
+
oauth2: {
|
|
44
|
+
authUrl: 'https://www.reddit.com/api/v1/authorize',
|
|
45
|
+
tokenUrl: 'https://www.reddit.com/api/v1/access_token',
|
|
46
|
+
scopes: ['read', 'submit', 'privatemessages', 'vote', 'save', 'identity'],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
actions: [
|
|
50
|
+
{
|
|
51
|
+
id: 'front-page',
|
|
52
|
+
name: 'Read Front Page',
|
|
53
|
+
description: 'Read posts from the Reddit front page',
|
|
54
|
+
trustMinimum: 1,
|
|
55
|
+
trustDomain: 'messaging',
|
|
56
|
+
reversible: false,
|
|
57
|
+
sideEffects: false,
|
|
58
|
+
params: {},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'subreddit-read',
|
|
62
|
+
name: 'Read Subreddit',
|
|
63
|
+
description: 'Read posts from a specific subreddit',
|
|
64
|
+
trustMinimum: 1,
|
|
65
|
+
trustDomain: 'messaging',
|
|
66
|
+
reversible: false,
|
|
67
|
+
sideEffects: false,
|
|
68
|
+
params: {
|
|
69
|
+
subreddit: { type: 'string', description: 'Subreddit name', required: true },
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'post-submit',
|
|
74
|
+
name: 'Submit Post',
|
|
75
|
+
description: 'Submit a new post to a subreddit',
|
|
76
|
+
trustMinimum: 3,
|
|
77
|
+
trustDomain: 'messaging',
|
|
78
|
+
reversible: false,
|
|
79
|
+
sideEffects: true,
|
|
80
|
+
params: {
|
|
81
|
+
subreddit: { type: 'string', description: 'Subreddit name', required: true },
|
|
82
|
+
title: { type: 'string', description: 'Post title', required: true },
|
|
83
|
+
body: { type: 'string', description: 'Post body', required: true },
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 'comment',
|
|
88
|
+
name: 'Post Comment',
|
|
89
|
+
description: 'Post a comment on a Reddit post',
|
|
90
|
+
trustMinimum: 3,
|
|
91
|
+
trustDomain: 'messaging',
|
|
92
|
+
reversible: false,
|
|
93
|
+
sideEffects: true,
|
|
94
|
+
params: {
|
|
95
|
+
postId: { type: 'string', description: 'Post ID to comment on', required: true },
|
|
96
|
+
body: { type: 'string', description: 'Comment body', required: true },
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 'inbox-read',
|
|
101
|
+
name: 'Read Inbox',
|
|
102
|
+
description: 'Read Reddit inbox messages',
|
|
103
|
+
trustMinimum: 1,
|
|
104
|
+
trustDomain: 'messaging',
|
|
105
|
+
reversible: false,
|
|
106
|
+
sideEffects: false,
|
|
107
|
+
params: {},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: 'search',
|
|
111
|
+
name: 'Search Reddit',
|
|
112
|
+
description: 'Search across Reddit',
|
|
113
|
+
trustMinimum: 1,
|
|
114
|
+
trustDomain: 'messaging',
|
|
115
|
+
reversible: false,
|
|
116
|
+
sideEffects: false,
|
|
117
|
+
params: {
|
|
118
|
+
query: { type: 'string', description: 'Search query', required: true },
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: 'save-post',
|
|
123
|
+
name: 'Save Post',
|
|
124
|
+
description: 'Save a Reddit post',
|
|
125
|
+
trustMinimum: 1,
|
|
126
|
+
trustDomain: 'messaging',
|
|
127
|
+
reversible: true,
|
|
128
|
+
sideEffects: true,
|
|
129
|
+
params: {
|
|
130
|
+
postId: { type: 'string', description: 'Post ID to save', required: true },
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: 'upvote',
|
|
135
|
+
name: 'Upvote',
|
|
136
|
+
description: 'Upvote or downvote a post',
|
|
137
|
+
trustMinimum: 2,
|
|
138
|
+
trustDomain: 'messaging',
|
|
139
|
+
reversible: true,
|
|
140
|
+
sideEffects: true,
|
|
141
|
+
params: {
|
|
142
|
+
postId: { type: 'string', description: 'Post ID to vote on', required: true },
|
|
143
|
+
direction: { type: 'string', description: 'Vote direction (up or down)', default: 'up' },
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
triggers: [
|
|
148
|
+
{
|
|
149
|
+
id: 'new-inbox',
|
|
150
|
+
name: 'New Inbox Message',
|
|
151
|
+
description: 'Triggered when a new inbox message is received',
|
|
152
|
+
type: 'poll',
|
|
153
|
+
pollIntervalMs: 120_000,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: 'subreddit-new',
|
|
157
|
+
name: 'New Subreddit Post',
|
|
158
|
+
description: 'Triggered when a new post appears in a monitored subreddit',
|
|
159
|
+
type: 'poll',
|
|
160
|
+
pollIntervalMs: 300_000,
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
entities: [
|
|
164
|
+
{
|
|
165
|
+
id: 'post',
|
|
166
|
+
name: 'Post',
|
|
167
|
+
description: 'A Reddit post',
|
|
168
|
+
fields: { id: 'string', title: 'string', subreddit: 'string', author: 'string', score: 'number', commentCount: 'number' },
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
id: 'comment',
|
|
172
|
+
name: 'Comment',
|
|
173
|
+
description: 'A Reddit comment',
|
|
174
|
+
fields: { id: 'string', body: 'string', author: 'string', score: 'number', postId: 'string' },
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
async executeAction(actionId, params, token) {
|
|
178
|
+
switch (actionId) {
|
|
179
|
+
case 'front-page': {
|
|
180
|
+
const res = await redditGet(token, '/best?limit=25');
|
|
181
|
+
return { posts: extractPosts(res) };
|
|
182
|
+
}
|
|
183
|
+
case 'subreddit-read': {
|
|
184
|
+
const sub = params.subreddit;
|
|
185
|
+
const res = await redditGet(token, `/r/${sub}/hot?limit=25`);
|
|
186
|
+
return { posts: extractPosts(res) };
|
|
187
|
+
}
|
|
188
|
+
case 'post-submit': {
|
|
189
|
+
const res = await redditPost(token, '/api/submit', {
|
|
190
|
+
sr: params.subreddit,
|
|
191
|
+
kind: 'self',
|
|
192
|
+
title: params.title,
|
|
193
|
+
text: params.body,
|
|
194
|
+
});
|
|
195
|
+
const json = res.json;
|
|
196
|
+
const data = json?.data;
|
|
197
|
+
return { postId: data?.id ?? data?.name, status: 'submitted' };
|
|
198
|
+
}
|
|
199
|
+
case 'comment': {
|
|
200
|
+
const postId = params.postId;
|
|
201
|
+
const thingId = postId.startsWith('t3_') ? postId : `t3_${postId}`;
|
|
202
|
+
const res = await redditPost(token, '/api/comment', {
|
|
203
|
+
thing_id: thingId,
|
|
204
|
+
text: params.body,
|
|
205
|
+
});
|
|
206
|
+
const json = res.json;
|
|
207
|
+
const data = json?.data;
|
|
208
|
+
const things = data?.things;
|
|
209
|
+
const commentData = things?.[0]?.data;
|
|
210
|
+
return { commentId: commentData?.id ?? commentData?.name, status: 'posted' };
|
|
211
|
+
}
|
|
212
|
+
case 'inbox-read': {
|
|
213
|
+
const res = await redditGet(token, '/message/inbox?limit=25');
|
|
214
|
+
return { messages: extractPosts(res) };
|
|
215
|
+
}
|
|
216
|
+
case 'search': {
|
|
217
|
+
const query = encodeURIComponent(params.query);
|
|
218
|
+
const res = await redditGet(token, `/search?q=${query}&limit=25`);
|
|
219
|
+
return { posts: extractPosts(res) };
|
|
220
|
+
}
|
|
221
|
+
case 'save-post': {
|
|
222
|
+
const postId = params.postId;
|
|
223
|
+
const fullId = postId.startsWith('t3_') ? postId : `t3_${postId}`;
|
|
224
|
+
await redditPost(token, '/api/save', { id: fullId });
|
|
225
|
+
return { postId: params.postId, status: 'saved' };
|
|
226
|
+
}
|
|
227
|
+
case 'upvote': {
|
|
228
|
+
const postId = params.postId;
|
|
229
|
+
const fullId = postId.startsWith('t3_') ? postId : `t3_${postId}`;
|
|
230
|
+
const direction = params.direction ?? 'up';
|
|
231
|
+
const dir = direction === 'up' ? '1' : '-1';
|
|
232
|
+
await redditPost(token, '/api/vote', { id: fullId, dir });
|
|
233
|
+
return { postId: params.postId, status: 'voted' };
|
|
234
|
+
}
|
|
235
|
+
default:
|
|
236
|
+
throw new Error(`Unknown action: ${actionId}`);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
async pollTrigger(triggerId, token, _lastPollAt) {
|
|
240
|
+
switch (triggerId) {
|
|
241
|
+
case 'new-inbox': {
|
|
242
|
+
const res = await redditGet(token, '/message/unread?limit=25');
|
|
243
|
+
const messages = extractPosts(res);
|
|
244
|
+
return messages.map((m) => ({
|
|
245
|
+
triggerId: 'new-inbox',
|
|
246
|
+
connectorId: 'reddit',
|
|
247
|
+
data: m,
|
|
248
|
+
timestamp: typeof m.created_utc === 'number' ? m.created_utc * 1000 : Date.now(),
|
|
249
|
+
}));
|
|
250
|
+
}
|
|
251
|
+
case 'subreddit-new':
|
|
252
|
+
// Cannot poll specific subreddit without config
|
|
253
|
+
return [];
|
|
254
|
+
default:
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
//# sourceMappingURL=reddit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reddit.js","sourceRoot":"","sources":["../src/reddit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitter.d.ts","sourceRoot":"","sources":["../src/twitter.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,gBAAgB,yCAyO3B,CAAC"}
|