refactor: Restructure apps with new data pushing logic
This commit is contained in:
@@ -27,25 +27,25 @@ export default defineAction({
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listRepos'
|
||||
}
|
||||
]
|
||||
}
|
||||
value: 'listRepos',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Title',
|
||||
key: 'title',
|
||||
type: 'string',
|
||||
required: true,
|
||||
variables: true
|
||||
variables: true,
|
||||
},
|
||||
{
|
||||
label: 'Body',
|
||||
key: 'body',
|
||||
type: 'string',
|
||||
required: true,
|
||||
variables: true
|
||||
}
|
||||
variables: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -59,7 +59,7 @@ export default defineAction({
|
||||
const title = $.step.parameters.title as string;
|
||||
const body = $.step.parameters.body as string;
|
||||
|
||||
if (!repoParameter) throw new Error('A repo must be set!')
|
||||
if (!repoParameter) throw new Error('A repo must be set!');
|
||||
if (!title) throw new Error('A title must be set!');
|
||||
|
||||
const { repoOwner, repo } = getRepoOwnerAndRepo(repoParameter);
|
||||
@@ -68,13 +68,6 @@ export default defineAction({
|
||||
body,
|
||||
});
|
||||
|
||||
const issue: IActionOutput = {
|
||||
data: {
|
||||
raw: response.data,
|
||||
},
|
||||
error: response?.integrationError,
|
||||
};
|
||||
|
||||
return issue;
|
||||
$.setActionItem({ raw: response.data });
|
||||
},
|
||||
});
|
||||
|
@@ -9,7 +9,7 @@ export default defineTrigger({
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection'
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
@@ -27,20 +27,20 @@ export default defineTrigger({
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listRepos'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
value: 'listRepos',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger'
|
||||
}
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
return await newPullRequests($);
|
||||
await newPullRequests($);
|
||||
},
|
||||
});
|
||||
|
@@ -1,7 +1,4 @@
|
||||
import {
|
||||
IGlobalVariable,
|
||||
ITriggerOutput,
|
||||
} from '@automatisch/types';
|
||||
import { IGlobalVariable, ITriggerOutput } from '@automatisch/types';
|
||||
import getRepoOwnerAndRepo from '../../common/get-repo-owner-and-repo';
|
||||
import parseLinkHeader from '../../../../helpers/parse-header-link';
|
||||
|
||||
@@ -29,16 +26,15 @@ const fetchPullRequests = async ($: IGlobalVariable) => {
|
||||
const response = await $.http.get(pathname, { params });
|
||||
links = parseLinkHeader(response.headers.link);
|
||||
|
||||
if (response.integrationError) {
|
||||
pullRequests.error = response.integrationError;
|
||||
return pullRequests;
|
||||
}
|
||||
|
||||
if (response.data.length) {
|
||||
for (const pullRequest of response.data) {
|
||||
const pullRequestId = pullRequest.id;
|
||||
|
||||
if (pullRequestId <= Number($.flow.lastInternalId) && !$.execution.testRun) return pullRequests;
|
||||
if (
|
||||
pullRequestId <= Number($.flow.lastInternalId) &&
|
||||
!$.execution.testRun
|
||||
)
|
||||
return pullRequests;
|
||||
|
||||
const dataItem = {
|
||||
raw: pullRequest,
|
||||
@@ -53,7 +49,7 @@ const fetchPullRequests = async ($: IGlobalVariable) => {
|
||||
} while (links.next && !$.execution.testRun);
|
||||
|
||||
return pullRequests;
|
||||
}
|
||||
};
|
||||
|
||||
const newPullRequests = async ($: IGlobalVariable) => {
|
||||
const pullRequests = await fetchPullRequests($);
|
||||
|
@@ -44,11 +44,9 @@ export default defineTrigger({
|
||||
await newStargazers($);
|
||||
},
|
||||
|
||||
sort($) {
|
||||
$.triggerOutput.data.sort((stargazerA, stargazerB) => {
|
||||
return (
|
||||
Number(stargazerA.meta.internalId) - Number(stargazerB.meta.internalId)
|
||||
);
|
||||
});
|
||||
sort(stargazerA, stargazerB) {
|
||||
return (
|
||||
Number(stargazerA.meta.internalId) - Number(stargazerB.meta.internalId)
|
||||
);
|
||||
},
|
||||
});
|
||||
|
@@ -10,7 +10,7 @@ export default defineTrigger({
|
||||
substeps: [
|
||||
{
|
||||
key: 'chooseConnection',
|
||||
name: 'Choose connection'
|
||||
name: 'Choose connection',
|
||||
},
|
||||
{
|
||||
key: 'chooseTrigger',
|
||||
@@ -28,20 +28,24 @@ export default defineTrigger({
|
||||
arguments: [
|
||||
{
|
||||
name: 'key',
|
||||
value: 'listRepos'
|
||||
}
|
||||
]
|
||||
}
|
||||
value: 'listRepos',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'testStep',
|
||||
name: 'Test trigger'
|
||||
}
|
||||
name: 'Test trigger',
|
||||
},
|
||||
],
|
||||
|
||||
async run($) {
|
||||
return await newWatchers($);
|
||||
await newWatchers($);
|
||||
},
|
||||
|
||||
sort() {
|
||||
return -1;
|
||||
},
|
||||
});
|
||||
|
@@ -1,11 +1,8 @@
|
||||
import {
|
||||
IGlobalVariable,
|
||||
ITriggerOutput,
|
||||
} from '@automatisch/types';
|
||||
import { IGlobalVariable, ITriggerOutput } from '@automatisch/types';
|
||||
import getRepoOwnerAndRepo from '../../common/get-repo-owner-and-repo';
|
||||
import parseLinkHeader from '../../../../helpers/parse-header-link';
|
||||
|
||||
const fetchWatchers = async ($: IGlobalVariable) => {
|
||||
const newWatchers = async ($: IGlobalVariable) => {
|
||||
const repoParameter = $.step.parameters.repo as string;
|
||||
|
||||
if (!repoParameter) throw new Error('A repo must be set!');
|
||||
@@ -15,9 +12,9 @@ const fetchWatchers = async ($: IGlobalVariable) => {
|
||||
const firstPagePathname = `/repos/${repoOwner}/${repo}/subscribers`;
|
||||
const requestConfig = {
|
||||
params: {
|
||||
per_page: 100
|
||||
per_page: 100,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
const firstPageResponse = await $.http.get(firstPagePathname, requestConfig);
|
||||
const firstPageLinks = parseLinkHeader(firstPageResponse.headers.link);
|
||||
@@ -25,20 +22,11 @@ const fetchWatchers = async ($: IGlobalVariable) => {
|
||||
// in case there is only single page to fetch
|
||||
let pathname = firstPageLinks.last?.uri || firstPagePathname;
|
||||
|
||||
const watchers: ITriggerOutput = {
|
||||
data: [],
|
||||
};
|
||||
|
||||
do {
|
||||
const response = await $.http.get(pathname, requestConfig);
|
||||
const links = parseLinkHeader(response.headers.link);
|
||||
pathname = links.prev?.uri;
|
||||
|
||||
if (response.integrationError) {
|
||||
watchers.error = response.integrationError;
|
||||
return watchers;
|
||||
}
|
||||
|
||||
if (response.data.length) {
|
||||
// to iterate reverse-chronologically
|
||||
response.data.reverse();
|
||||
@@ -46,7 +34,8 @@ const fetchWatchers = async ($: IGlobalVariable) => {
|
||||
for (const watcher of response.data) {
|
||||
const watcherId = watcher.id.toString();
|
||||
|
||||
if ($.flow.isAlreadyProcessed(watcherId) && !$.execution.testRun) return watchers;
|
||||
if ($.flow.isAlreadyProcessed(watcherId) && !$.execution.testRun)
|
||||
return;
|
||||
|
||||
const dataItem = {
|
||||
raw: watcher,
|
||||
@@ -55,21 +44,10 @@ const fetchWatchers = async ($: IGlobalVariable) => {
|
||||
},
|
||||
};
|
||||
|
||||
watchers.data.push(dataItem);
|
||||
$.pushTriggerItem(dataItem);
|
||||
}
|
||||
}
|
||||
} while (pathname && !$.execution.testRun === false);
|
||||
|
||||
return watchers;
|
||||
}
|
||||
|
||||
const newWatchers = async ($: IGlobalVariable) => {
|
||||
const watchers = await fetchWatchers($);
|
||||
|
||||
// to process chronologically
|
||||
watchers.data.reverse();
|
||||
|
||||
return watchers;
|
||||
};
|
||||
|
||||
export default newWatchers;
|
||||
|
@@ -1,8 +1,4 @@
|
||||
import {
|
||||
IGlobalVariable,
|
||||
IJSONObject,
|
||||
ITriggerOutput,
|
||||
} from '@automatisch/types';
|
||||
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
|
||||
import { URLSearchParams } from 'url';
|
||||
import { omitBy, isEmpty } from 'lodash';
|
||||
|
||||
@@ -16,10 +12,6 @@ const getUserFollowers = async (
|
||||
) => {
|
||||
let response;
|
||||
|
||||
const followers: ITriggerOutput = {
|
||||
data: [],
|
||||
};
|
||||
|
||||
do {
|
||||
const params: IJSONObject = {
|
||||
pagination_token: response?.data?.meta?.next_token,
|
||||
@@ -40,18 +32,16 @@ const getUserFollowers = async (
|
||||
if (response.data.meta.result_count > 0) {
|
||||
for (const follower of response.data.data) {
|
||||
if ($.flow.isAlreadyProcessed(follower.id as string)) {
|
||||
return followers;
|
||||
return;
|
||||
}
|
||||
|
||||
followers.data.push({
|
||||
$.pushTriggerItem({
|
||||
raw: follower,
|
||||
meta: { internalId: follower.id as string },
|
||||
});
|
||||
}
|
||||
}
|
||||
} while (response.data.meta.next_token && !$.execution.testRun);
|
||||
|
||||
return followers;
|
||||
};
|
||||
|
||||
export default getUserFollowers;
|
||||
|
@@ -21,9 +21,7 @@ export default defineTrigger({
|
||||
await getUserTweets($, { currentUser: true });
|
||||
},
|
||||
|
||||
sort($) {
|
||||
$.triggerOutput.data.sort((tweet, nextTweet) => {
|
||||
return Number(nextTweet.meta.internalId) - Number(tweet.meta.internalId);
|
||||
});
|
||||
sort(tweet, nextTweet) {
|
||||
return Number(nextTweet.meta.internalId) - Number(tweet.meta.internalId);
|
||||
},
|
||||
});
|
||||
|
@@ -19,6 +19,6 @@ export default defineTrigger({
|
||||
],
|
||||
|
||||
async run($) {
|
||||
return await myFollowers($);
|
||||
await myFollowers($);
|
||||
},
|
||||
});
|
||||
|
@@ -34,9 +34,7 @@ export default defineTrigger({
|
||||
await searchTweets($);
|
||||
},
|
||||
|
||||
sort($) {
|
||||
$.triggerOutput.data.sort((tweet, nextTweet) => {
|
||||
return Number(nextTweet.meta.internalId) - Number(tweet.meta.internalId);
|
||||
});
|
||||
sort(tweet, nextTweet) {
|
||||
return Number(nextTweet.meta.internalId) - Number(tweet.meta.internalId);
|
||||
},
|
||||
});
|
||||
|
@@ -33,9 +33,7 @@ export default defineTrigger({
|
||||
await getUserTweets($, { currentUser: false });
|
||||
},
|
||||
|
||||
sort($) {
|
||||
$.triggerOutput.data.sort((tweet, nextTweet) => {
|
||||
return Number(nextTweet.meta.internalId) - Number(tweet.meta.internalId);
|
||||
});
|
||||
sort(tweet, nextTweet) {
|
||||
return Number(nextTweet.meta.internalId) - Number(tweet.meta.internalId);
|
||||
},
|
||||
});
|
||||
|
Reference in New Issue
Block a user