44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { checkTwitter } from "services/oauth.svr";
|
|
import { ITask } from "./base/ITask";
|
|
import { ActivityUser, TaskStatusEnum } from "models/ActivityUser";
|
|
import { ZError } from "common/ZError";
|
|
import { TaskCfg } from "models/ActivityInfo";
|
|
|
|
export default class TwitterConnect extends ITask {
|
|
static desc = 'twitter connect'
|
|
static show: boolean = true
|
|
|
|
async execute(data: any) {
|
|
let { address } = this.params.user
|
|
let res = await checkTwitter(address)
|
|
if (res.status !== 200) {
|
|
throw new ZError(11, 'twitter check failed')
|
|
}
|
|
if (res.data.errcode) {
|
|
throw new ZError(res.data.errcode, res.data.errmsg)
|
|
}
|
|
const { task } = data
|
|
if (res.data.data.userid && task.status === TaskStatusEnum.RUNNING) {
|
|
task.status = TaskStatusEnum.SUCCESS
|
|
task.timeFinish = Date.now()
|
|
task.data = res.data.data
|
|
task.twitterId = res.data.data.userid
|
|
try {
|
|
await this.params.user.save()
|
|
} catch(err) {
|
|
throw new ZError(100, 'twitter already binded')
|
|
}
|
|
let cfg = this.params.activity.tasks.find((t: TaskCfg) => t.id === this.constructor.name)
|
|
if (cfg.autoclaim) {
|
|
try {
|
|
await this.claimReward(task);
|
|
} catch(err) {
|
|
console.log(err)
|
|
}
|
|
}
|
|
|
|
}
|
|
return true
|
|
}
|
|
|
|
} |