From 9e99b0650b3bfaeef00a16469c1e6268d6026ead Mon Sep 17 00:00:00 2001 From: Alejo Thomas Ortega Date: Wed, 17 Apr 2024 13:02:55 -0300 Subject: [PATCH] refactor: apply PR feedback --- .../CheckScenes/task/taskRunnerSqs.ts | 55 +------------------ src/entities/CheckScenes/utils.ts | 55 ++++++++++++++++++- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/entities/CheckScenes/task/taskRunnerSqs.ts b/src/entities/CheckScenes/task/taskRunnerSqs.ts index 08f15b9f..98d9d165 100644 --- a/src/entities/CheckScenes/task/taskRunnerSqs.ts +++ b/src/entities/CheckScenes/task/taskRunnerSqs.ts @@ -1,10 +1,4 @@ import { randomUUID } from "crypto" -import { Readable } from "stream" - -import AWS from "aws-sdk" -import env from "decentraland-gatsby/dist/utils/env" -import fetch from "node-fetch" -import { retry } from "radash" import CategoryModel from "../../Category/model" import { DecentralandCategories } from "../../Category/types" @@ -20,7 +14,7 @@ import { } from "../../Slack/utils" import CheckScenesModel from "../model" import { CheckSceneLogsTypes } from "../types" -import { calculateGenesisCityManifestPositions, getWorldAbout } from "../utils" +import { getWorldAbout, updateGenesisCityManifest } from "../utils" import { DeploymentToSqs } from "./consumer" import { ProcessEntitySceneResult, @@ -49,53 +43,6 @@ const placesAttributes: Array = [ "textsearch", ] -const ACCESS_KEY = env("AWS_ACCESS_KEY") -const ACCESS_SECRET = env("AWS_ACCESS_SECRET") -const BUCKET_HOSTNAME = env("BUCKET_HOSTNAME") -const BUCKET_NAME = env("AWS_BUCKET_NAME", "") - -async function updateGenesisCityManifest() { - const s3 = new AWS.S3({ - accessKeyId: ACCESS_KEY, - secretAccessKey: ACCESS_SECRET, - signatureVersion: "v4", - }) - - const signedUrl = await retry({ times: 10, delay: 100 }, async () => { - const responseUrl = s3.getSignedUrl("putObject", { - Bucket: BUCKET_NAME, - Key: `WorldManifest.json`, - Expires: 60 * 1000, - ContentType: "application/json", - ACL: "public-read", - CacheControl: "no-store, no-cache, must-revalidate, proxy-revalidate", - }) - - const url = new URL(responseUrl) - if (url.searchParams.size === 0) { - throw new Error("Invalid AWS response") - } - - if (BUCKET_HOSTNAME) { - url.hostname = BUCKET_HOSTNAME - } - - return url.toString() - }) - - const genesisCityManifestPositions = - await calculateGenesisCityManifestPositions() - - const stream = Readable.from([JSON.stringify(genesisCityManifestPositions)]) - await fetch(signedUrl, { - method: "PUT", - headers: { - "Content-Type": "application/json", - }, - body: stream, - }) -} - export async function taskRunnerSqs(job: DeploymentToSqs) { const contentEntityScene = await processEntityId(job) diff --git a/src/entities/CheckScenes/utils.ts b/src/entities/CheckScenes/utils.ts index 8fbbc03a..874077ab 100644 --- a/src/entities/CheckScenes/utils.ts +++ b/src/entities/CheckScenes/utils.ts @@ -1,4 +1,7 @@ +import { Readable } from "stream" + import { EntityType } from "@dcl/schemas/dist/platform/entity" +import AWS from "aws-sdk" import Catalyst from "decentraland-gatsby/dist/utils/api/Catalyst" import { ContentDeploymentScene, @@ -7,6 +10,9 @@ import { ContentEntityScene, } from "decentraland-gatsby/dist/utils/api/Catalyst.types" import ContentServer from "decentraland-gatsby/dist/utils/api/ContentServer" +import env from "decentraland-gatsby/dist/utils/env" +import fetch from "node-fetch" +import { retry } from "radash" import allCoordinates from "../../__data__/AllCoordinates.json" import roadCoordinates from "../../__data__/RoadCoordinates.json" @@ -15,6 +21,53 @@ import { PlaceAttributes } from "../Place/types" import PlacePositionModel from "../PlacePosition/model" import { DeploymentTrackAttributes, WorldAbout } from "./types" +const ACCESS_KEY = env("AWS_ACCESS_KEY") +const ACCESS_SECRET = env("AWS_ACCESS_SECRET") +const BUCKET_HOSTNAME = env("BUCKET_HOSTNAME") +const BUCKET_NAME = env("AWS_BUCKET_NAME", "") + +export async function updateGenesisCityManifest() { + const s3 = new AWS.S3({ + accessKeyId: ACCESS_KEY, + secretAccessKey: ACCESS_SECRET, + signatureVersion: "v4", + }) + + const signedUrl = await retry({ times: 10, delay: 100 }, async () => { + const responseUrl = s3.getSignedUrl("putObject", { + Bucket: BUCKET_NAME, + Key: `WorldManifest.json`, + Expires: 60 * 1000, + ContentType: "application/json", + ACL: "public-read", + CacheControl: "no-store, no-cache, must-revalidate, proxy-revalidate", + }) + + const url = new URL(responseUrl) + if (url.searchParams.size === 0) { + throw new Error("Invalid AWS response") + } + + if (BUCKET_HOSTNAME) { + url.hostname = BUCKET_HOSTNAME + } + + return url.toString() + }) + + const genesisCityManifestPositions = + await calculateGenesisCityManifestPositions() + + const stream = Readable.from(JSON.stringify(genesisCityManifestPositions)) + await fetch(signedUrl, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: stream, + }) +} + /** @deprecated */ export async function fetchDeployments(catalyst: DeploymentTrackAttributes) { const contentDeploymentsResponse = await Catalyst.getInstanceFrom( @@ -100,7 +153,7 @@ export async function getWorldAbout( return worldContentServer.fetch(`/world/${worldName}/about`) } -export async function calculateGenesisCityManifestPositions(): Promise { +async function calculateGenesisCityManifestPositions(): Promise { const occupiedPositions = (await PlacePositionModel.find()).map( (place) => place.position )