Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions character.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const isValidData = data => {
};


const extractClassOptions = (cobaltId, optionIds=[], campaignId=null) => {
const extractClassOptions = (cobaltId, optionIds = [], campaignId = null) => {
console.log(optionIds);

return new Promise((resolve, reject) => {
Expand Down Expand Up @@ -55,7 +55,7 @@ const extractClassOptions = (cobaltId, optionIds=[], campaignId=null) => {
};


const extractRacialTraitsOptions = (cobaltId, optionIds=[], campaignId=null) => {
const extractRacialTraitsOptions = (cobaltId, optionIds = [], campaignId = null) => {
console.log(optionIds);

return new Promise((resolve, reject) => {
Expand Down Expand Up @@ -111,12 +111,35 @@ const checkStatus = res => {
}
};

const getRawCharacter = (characterId) => {
return new Promise((resolve, reject) => {
console.log(`Retrieving character id ${characterId}`);

const headers = {};
const characterUrl = CONFIG.urls.characterUrl(characterId);
fetch(characterUrl, headers)
.then(checkStatus)
.then(res => res.json())
.then(json => {
if (isValidData(json)) {
resolve(json);
} else {
reject(json.message);
}
})
.catch(error => {
console.log(`loadCharacterData(${characterId}): ${error}`);
reject(error);
});;
});
};

const extractCharacterData = (cobaltId, characterId) => {
return new Promise((resolve, reject) => {
console.log(`Retrieving character id ${characterId}`);

const auth = authentication.CACHE_AUTH.exists(cobaltId);
const headers = (auth) ? {headers: {"Authorization": `Bearer ${auth.data}`}} : {};
const headers = (auth) ? { headers: { "Authorization": `Bearer ${auth.data}` } } : {};
const characterUrl = CONFIG.urls.characterUrl(characterId);
fetch(characterUrl, headers)
.then(checkStatus)
Expand Down Expand Up @@ -173,6 +196,7 @@ const getOptionalOrigins = (data, optionIds, campaignId, cobaltId) => {


exports.extractClassOptions = extractClassOptions;
exports.getRawCharacter = getRawCharacter;
exports.extractCharacterData = extractCharacterData;
exports.getOptionalClassFeatures = getOptionalClassFeatures;
exports.getOptionalOrigins = getOptionalOrigins;
10 changes: 5 additions & 5 deletions docker/dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
FROM node:16-alpine AS build
FROM node:18-alpine AS build

RUN ["apk", "add", "--no-cache", "yarn", "git"]
RUN apk add --no-cache yarn git
WORKDIR /srv
RUN ["git", "clone", "https://github.com/MrPrimate/ddb-proxy", ".", "--depth", "1" ]
RUN ["yarn", "install", "--production"]
RUN git clone --single-branch https://github.com/MrPrimate/ddb-proxy . --depth 1
RUN yarn install --production

FROM node:16-alpine AS ddb-proxy
FROM node:18-alpine AS ddb-proxy

EXPOSE 3000

Expand Down
30 changes: 30 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,36 @@ app.post(["/proxy/character", "/proxy/v5/character"], cors(), express.json(), (r
});
});

app.options(["/proxy/character", "/proxy/v5/character"], cors(), (req, res) => res.status(200).send());
app.get(["/proxy/character", "/proxy/v5/character"], cors(), (req, res) => {
// Get character ID from query parameter
let characterId = 0;
try {
const characterIdString = req.query.character;
if (!characterIdString) {
return res.status(400).json({ message: "Missing character parameter" });
}
// characterId = parseInt(characterIdString);
characterId = 5634490;
console.log("CHARACTER ID: ", characterId);
if (isNaN(characterId)) {
return res.status(400).json({ message: "Invalid character ID" });
}
} catch (exception) {
return res.status(400).json({ message: "Invalid query" });
}

// Since this is a GET request without authentication, we'll proceed without cobalt token
// No update ID for GET requests

character
.getRawCharacter(characterId)
.then((data) => {
console.log(`Name: ${data.data.name}, URL: ${CONFIG.urls.baseUrl}/character/${data.id}`);
return res.json(data);
});
});

/**
* Return RAW monster data from DDB
*/
Expand Down
Loading