From ced8f5aecb989e0e8d6e05361b8b81104718345c Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Wed, 11 Aug 2021 16:23:26 -0700 Subject: [PATCH 1/2] WIP --- services/import.service.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/import.service.ts b/services/import.service.ts index 4baa4a0..d6bc99f 100644 --- a/services/import.service.ts +++ b/services/import.service.ts @@ -81,16 +81,15 @@ export default class ProductsService extends Service { applyComicVineMetadata: { rest: "POST /applyComicVineMetadata", params: {}, - async handler(ctx: Context<{ match: { volume: { api_detail_url: string}, volumeInformation: object}, comicObjectId: string }>) { + async handler(ctx: Context<{ match: { volume: { api_detail_url: string }, volumeInformation: object }, comicObjectId: string }>) { // 1. find mongo object by id // 2. import payload into sourcedMetadata.comicvine const comicObjectId = new ObjectId(ctx.params.comicObjectId); const matchedResult = ctx.params.match; - console.log(matchedResult.volume.api_detail_url); let volumeDetailsPromise; if (!isNil(matchedResult.volume)) { volumeDetailsPromise = new Promise((resolve, reject) => { - return https.get(`${matchedResult.volume.api_detail_url}?api_key=a5fa0663683df8145a85d694b5da4b87e1c92c69&format=json&limit=1&offset=0&field_list=id,name,deck,image,first_issue,last_issue,publisher,count_of_issues`, (resp) => { + return https.get(`${matchedResult.volume.api_detail_url}?api_key=a5fa0663683df8145a85d694b5da4b87e1c92c69&format=json&limit=1&offset=0&field_list=id,name,description,image,first_issue,last_issue,publisher,count_of_issues,character_credits,person_credits,aliases`, (resp) => { let data = ''; resp.on('data', (chunk) => { @@ -110,7 +109,7 @@ export default class ProductsService extends Service { } return new Promise(async (resolve, reject) => { const volumeDetails = await volumeDetailsPromise; - matchedResult.volumeInformation = volumeDetails.results; + matchedResult.volumeInformation = volumeDetails.results; Comic.findByIdAndUpdate(comicObjectId, { sourcedMetadata: { comicvine: matchedResult } }, { new: true }, (err, result) => { if (err) { console.log(err); From 34518a54fc3693d6a7f7c26000d4ab15870f17dd Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Fri, 20 Aug 2021 15:20:12 -0700 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=94=A7=20Refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/import.service.ts | 56 +++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/services/import.service.ts b/services/import.service.ts index d6bc99f..a0d2231 100644 --- a/services/import.service.ts +++ b/services/import.service.ts @@ -60,8 +60,16 @@ export default class ProductsService extends Service { }, rawImportToDB: { rest: "POST /rawImportToDB", - params: {}, - async handler(ctx: Context<{ payload: object }>) { + params: { + }, + async handler(ctx: Context<{ sourcedMetadata: { comicvine: { volume: { api_detail_url: string}, volumeInformation: {}}}}>) { + console.log("ASDASD", ctx.params); + let volumeDetails; + const comicMetadata = ctx.params; + if (!isNil(comicMetadata.sourcedMetadata.comicvine.volume)) { + volumeDetails = await this.getComicVineVolumeMetadata(comicMetadata.sourcedMetadata.comicvine.volume.api_detail_url); + comicMetadata.sourcedMetadata.comicvine.volumeInformation = volumeDetails; + } return new Promise((resolve, reject) => { Comic.create(ctx.params, (error, data) => { if (data) { @@ -88,28 +96,11 @@ export default class ProductsService extends Service { const matchedResult = ctx.params.match; let volumeDetailsPromise; if (!isNil(matchedResult.volume)) { - volumeDetailsPromise = new Promise((resolve, reject) => { - return https.get(`${matchedResult.volume.api_detail_url}?api_key=a5fa0663683df8145a85d694b5da4b87e1c92c69&format=json&limit=1&offset=0&field_list=id,name,description,image,first_issue,last_issue,publisher,count_of_issues,character_credits,person_credits,aliases`, (resp) => { - - let data = ''; - resp.on('data', (chunk) => { - data += chunk; - }); - - resp.on('end', () => { - const volumeInformation = JSON.parse(data); - resolve(volumeInformation); - }); - - }).on("error", (err) => { - console.log("Error: " + err.message); - reject(err); - }); - }); + volumeDetailsPromise = this.getComicVineVolumeMetadata(matchedResult.volume.api_detail_url) } return new Promise(async (resolve, reject) => { const volumeDetails = await volumeDetailsPromise; - matchedResult.volumeInformation = volumeDetails.results; + matchedResult.volumeInformation = volumeDetails; Comic.findByIdAndUpdate(comicObjectId, { sourcedMetadata: { comicvine: matchedResult } }, { new: true }, (err, result) => { if (err) { console.log(err); @@ -144,7 +135,28 @@ export default class ProductsService extends Service { }, }, }, - methods: {}, + methods: { + getComicVineVolumeMetadata: apiDetailURL => { + return new Promise((resolve, reject) => { + return https.get(`${apiDetailURL}?api_key=a5fa0663683df8145a85d694b5da4b87e1c92c69&format=json&limit=1&offset=0&field_list=id,name,description,image,first_issue,last_issue,publisher,count_of_issues,character_credits,person_credits,aliases`, (resp) => { + + let data = ''; + resp.on('data', (chunk) => { + data += chunk; + }); + + resp.on('end', () => { + const volumeInformation = JSON.parse(data); + resolve(volumeInformation.results); + }); + + }).on("error", (err) => { + console.log("Error: " + err.message); + reject(err); + }); + }); + } + }, }, schema )