From 7c0770b330eb64cb7b2b9820953562b5ed995f8b Mon Sep 17 00:00:00 2001 From: EpicUsername12 <39063367+EpicUsername12@users.noreply.github.com> Date: Thu, 20 Apr 2023 03:21:34 +0200 Subject: [PATCH] Early version of `/v1/communities` --- src/database.js | 8 ++++++ .../miiverse-api/routes/communities.js | 13 ++++++++++ src/util/xmlResponseGenerator.js | 25 +++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/src/database.js b/src/database.js index 87ad0ad..68611f4 100644 --- a/src/database.js +++ b/src/database.js @@ -65,6 +65,13 @@ async function getCommunityByTitleID(title_id) { }); } +async function getCommunityByTitleIDs(title_ids) { + verifyConnected(); + return COMMUNITY.findOne({ + title_ids: {$in: title_ids} + }); +} + async function getCommunityByID(community_id) { verifyConnected(); return COMMUNITY.findOne({ @@ -490,6 +497,7 @@ module.exports = { getNewCommunities, getSubCommunities, getCommunityByTitleID, + getCommunityByTitleIDs, getCommunityByID, getTotalPostsByCommunity, getPostsByCommunity, diff --git a/src/services/miiverse-api/routes/communities.js b/src/services/miiverse-api/routes/communities.js index 90fdfd6..98de55e 100644 --- a/src/services/miiverse-api/routes/communities.js +++ b/src/services/miiverse-api/routes/communities.js @@ -87,4 +87,17 @@ router.get('/:appID/posts', async function (req, res) { res.send(await comPostGen.PostsResponse(posts, community, options)); }); +// Handler for POST on '/v1/communities' +router.post('/', async function (req, res) { + console.error("AM I HERE ?.?.????"); + console.log(req.body); + const paramPack = util.decodeParamPack(req.headers["x-nintendo-parampack"]); + console.log(paramPack); + let community = await database.getCommunityByTitleIDs(paramPack.title_id); + if(!community) res.sendStatus(404); + let response = await comPostGen.Community(community); + res.contentType("application/xml"); + res.send(response); +}); + module.exports = router; diff --git a/src/util/xmlResponseGenerator.js b/src/util/xmlResponseGenerator.js index 8a51d5f..fe1fe09 100644 --- a/src/util/xmlResponseGenerator.js +++ b/src/util/xmlResponseGenerator.js @@ -86,6 +86,31 @@ class XmlResponseGenerator { return xml.up().end({ pretty: true, allowEmpty: true}); } + /** + * Generates response to a acommunity request + * @param communities + * @returns xml + * @constructor + */ + static async Community(community) { + let xml = xmlbuilder.create("result", { encoding: 'UTF-8' }) + .e("has_error", "0").up() + .e("version", "1").up() + .e("request_name", "community").up() + .e("community") + .e('community_id', community.community_id).up() + .e("name", community.name).up() + .e("description", community.description).up() + .e("icon").up() + .e("icon_3ds").up() + .e("pid").up() + .e("app_data", community.app_data).up() + .e("is_user_community", 0) + .up() + + return xml.up().end({ pretty: true, allowEmpty: true}); + } + /** * Generate response to request for single post * @param post