|
@@ -0,0 +1,77 @@
|
|
|
+import { Request, RequestHandler, NextFunction, Router } from 'express'
|
|
|
+import { Controller } from '../types'
|
|
|
+import NotFoundException from '../../exceptions/NotFoundException'
|
|
|
+import jsonResponseMiddleware, {
|
|
|
+ JsonResponse,
|
|
|
+} from '../../middleware/jsonResponse.middleware'
|
|
|
+import { PaginationConnection } from 'sequelize-cursor-pagination'
|
|
|
+import { MODIFY_TOKEN } from '../../constants'
|
|
|
+import artistService, { GenerateArtResult } from '../../services/artistService'
|
|
|
+import { ArtData } from '../../db/models/Art'
|
|
|
+// import apiKeyMiddleware from '../../middleware/apikey.middleware'
|
|
|
+
|
|
|
+interface ImportPayload {
|
|
|
+ token: string
|
|
|
+ urls: string[]
|
|
|
+}
|
|
|
+
|
|
|
+export default class ArtistController implements Controller {
|
|
|
+ public path = '/api/v1/artist'
|
|
|
+ public router = Router()
|
|
|
+
|
|
|
+ constructor() {
|
|
|
+ this.initializeRoutes()
|
|
|
+ }
|
|
|
+
|
|
|
+ private initializeRoutes(): void {
|
|
|
+ this.router.get(
|
|
|
+ '/list',
|
|
|
+ // apiKeyMiddleware(),
|
|
|
+ jsonResponseMiddleware,
|
|
|
+ this.list as RequestHandler
|
|
|
+ )
|
|
|
+ this.router.post(
|
|
|
+ '/import',
|
|
|
+ // apiKeyMiddleware(),
|
|
|
+ jsonResponseMiddleware,
|
|
|
+ this.import as RequestHandler
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ private list(
|
|
|
+ request: Request<any, any, any, { after?: string }>,
|
|
|
+ response: JsonResponse<PaginationConnection<ArtData>>,
|
|
|
+ next: NextFunction
|
|
|
+ ): void {
|
|
|
+ const after = request.query.after
|
|
|
+ artistService
|
|
|
+ .paginateArtByOrder(after)
|
|
|
+ .then((art) => {
|
|
|
+ response.jsonSuccess(art)
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ response.status(500).jsonError('Server Error', 1010)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ private import(
|
|
|
+ request: Request<any, any, ImportPayload>,
|
|
|
+ response: JsonResponse<GenerateArtResult[]>,
|
|
|
+ next: NextFunction
|
|
|
+ ): void {
|
|
|
+ const { urls, token } = request.body
|
|
|
+ if (token !== MODIFY_TOKEN) {
|
|
|
+ response.status(401).jsonError('Unauthorized', 1012)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ artistService
|
|
|
+ .bulkImportShot(urls)
|
|
|
+ .then((tweets) => {
|
|
|
+ response.jsonSuccess(tweets)
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ response.status(500).jsonError('Server Error', 1011)
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|