From f8069677477484c87abe0a7ca5618fbb5257b074 Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Sun, 8 Aug 2021 13:12:12 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=99=20Volume=20information=20fetched?= =?UTF-8?q?=20and=20added=20to=20the=20comic=20model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/import.service.ts | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/services/import.service.ts b/services/import.service.ts index c6c5ef2..88f5ece 100644 --- a/services/import.service.ts +++ b/services/import.service.ts @@ -1,4 +1,5 @@ "use strict"; +import { isNil } from "lodash"; import { Context, Service, @@ -10,8 +11,10 @@ import { DbMixin } from "../mixins/db.mixin"; import Comic from "../models/comic.model"; import { walkFolder } from "../utils/file.utils"; import { convertXMLToJSON } from "../utils/xml.utils"; +import https from "https"; const ObjectId = require("mongoose").Types.ObjectId; + export default class ProductsService extends Service { public constructor( public broker: ServiceBroker, @@ -83,13 +86,31 @@ export default class ProductsService extends Service { // 2. import payload into sourcedMetadata.comicvine const comicObjectId = new ObjectId(ctx.params.comicObjectId); return new Promise((resolve, reject) => { - Comic.findByIdAndUpdate(comicObjectId, { sourcedMetadata: { comicvine: ctx.params.match } }, { new: true}, (err, result) => { + Comic.findByIdAndUpdate(comicObjectId, { sourcedMetadata: { comicvine: ctx.params.match } }, { new: true }, (err, result) => { if (err) { console.log(err); reject(err); } else { - console.log("RES", result); - resolve(result); + // 3. Fetch and append volume information + if (!isNil(result.sourcedMetadata.comicvine)) { + https.get('https://comicvine.gamespot.com/api/volume/4050-50171/?api_key=a5fa0663683df8145a85d694b5da4b87e1c92c69&format=json&limit=1&offset=0&field_list=id,name,deck,image,first_issue,last_issue,publisher,count_of_issues', (resp) => { + + let data = ''; + resp.on('data', (chunk) => { + data += chunk; + }); + + resp.on('end', () => { + const volumeInformation = JSON.parse(data); + result.sourcedMetadata.comicvine.volumeInformation = volumeInformation.results; + resolve(result); + }); + + }).on("error", (err) => { + console.log("Error: " + err.message); + }); + } + } }) });