mongoose + tests
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
const CONFIG = {
|
||||
CLIENT_ID: 'kD2JXj1faSCYAWdT4B069wQAx89CZAkXmzTinRvH',
|
||||
CLIENT_SECRET: 'bJq7Uiwua52tHiLP80N60hALNtQX2wcE4Mj6yNA9OzG2iZbgHuqyeAs6WSWX6MNJdfv0Nqzb7OHta8qPZr4zxWBLTauleaMfraln3xFEvbXLDpi1Lcrwe7DxfgsQQ1E4',
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = CONFIG;
|
||||
module.exports = CONFIG
|
||||
@@ -1,14 +1,14 @@
|
||||
const express = require ('express');
|
||||
const axios = require ('axios');
|
||||
const plantsRouter = express.Router ();
|
||||
const CONFIG = require ('./config');
|
||||
const express = require ('express')
|
||||
const axios = require ('axios')
|
||||
const plantsRouter = express.Router ()
|
||||
const CONFIG = require ('./config')
|
||||
|
||||
|
||||
async function getAccessToken () {
|
||||
const formData = new FormData ();
|
||||
formData.append ('grant_type', 'client_credentials');
|
||||
formData.append ('client_id', CONFIG.CLIENT_ID);
|
||||
formData.append ('client_secret', CONFIG.CLIENT_SECRET);
|
||||
const formData = new FormData ()
|
||||
formData.append ('grant_type', 'client_credentials')
|
||||
formData.append ('client_id', CONFIG.CLIENT_ID)
|
||||
formData.append ('client_secret', CONFIG.CLIENT_SECRET)
|
||||
|
||||
try {
|
||||
const response = await axios.post (
|
||||
@@ -17,27 +17,27 @@ async function getAccessToken () {
|
||||
{
|
||||
headers: {'Content-Type': 'multipart/form-data'},
|
||||
}
|
||||
);
|
||||
)
|
||||
if (response.data && response.data.access_token) {
|
||||
console.log ('Access token retrieved:', response.data.access_token);
|
||||
return response.data.access_token;
|
||||
console.log ('Access token retrieved:', response.data.access_token)
|
||||
return response.data.access_token
|
||||
} else {
|
||||
console.error ('Error: access_token not found in response');
|
||||
return null;
|
||||
console.error ('Error: access_token not found in response')
|
||||
return null
|
||||
}
|
||||
} catch (error) {
|
||||
console.error (
|
||||
'Error fetching access token:',
|
||||
error.response ? error.response.data : error.message
|
||||
);
|
||||
return null;
|
||||
)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchPlantData (plantId) {
|
||||
const accessToken = await getAccessToken ();
|
||||
const accessToken = await getAccessToken ()
|
||||
if (!accessToken) {
|
||||
return null;
|
||||
return null
|
||||
}
|
||||
try {
|
||||
const response = await axios.get (
|
||||
@@ -47,25 +47,25 @@ async function fetchPlantData (plantId) {
|
||||
Authorization: `Bearer ${accessToken}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
return response.data;
|
||||
)
|
||||
return response.data
|
||||
} catch (error) {
|
||||
console.error (
|
||||
'Error fetching plant data:',
|
||||
error.response ? error.response.data : error.message
|
||||
);
|
||||
return null;
|
||||
)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
plantsRouter.get ('/list', async (req, res) => {
|
||||
const accessToken = await getAccessToken ();
|
||||
const accessToken = await getAccessToken ()
|
||||
if (!accessToken) {
|
||||
res.status (500).send ({message: 'Error obtaining access token'});
|
||||
return;
|
||||
res.status (500).send ({message: 'Error obtaining access token'})
|
||||
return
|
||||
}
|
||||
try {
|
||||
const alias = req.query.alias || 'monstera';
|
||||
const alias = req.query.alias || 'monstera'
|
||||
const response = await axios.get (
|
||||
'https://open.plantbook.io/api/v1/plant/search',
|
||||
{
|
||||
@@ -76,13 +76,13 @@ plantsRouter.get ('/list', async (req, res) => {
|
||||
alias: alias,
|
||||
},
|
||||
}
|
||||
);
|
||||
)
|
||||
|
||||
const plantsList = response.data.results;
|
||||
const plantsList = response.data.results
|
||||
|
||||
const plants = await Promise.all (
|
||||
plantsList.map (async plant => {
|
||||
const plantDetails = await fetchPlantData (plant.pid);
|
||||
const plantDetails = await fetchPlantData (plant.pid)
|
||||
return {
|
||||
id: plant.pid,
|
||||
alias: plant.alias,
|
||||
@@ -98,23 +98,23 @@ plantsRouter.get ('/list', async (req, res) => {
|
||||
min_soil_moist: plantDetails ? plantDetails.min_soil_moist : null,
|
||||
max_soil_ec: plantDetails ? plantDetails.max_soil_ec : null,
|
||||
min_soil_ec: plantDetails ? plantDetails.min_soil_ec : null,
|
||||
};
|
||||
}
|
||||
})
|
||||
);
|
||||
)
|
||||
|
||||
res.send ({results: plants});
|
||||
res.send ({results: plants})
|
||||
} catch (error) {
|
||||
console.error (
|
||||
'Error fetching plant list:',
|
||||
error.response ? error.response.data : error.message
|
||||
);
|
||||
res.status (500).send ({message: 'Error fetching plant list'});
|
||||
)
|
||||
res.status (500).send ({message: 'Error fetching plant list'})
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
plantsRouter.get ('/:id', async (req, res) => {
|
||||
const plantId = req.params.id;
|
||||
const plantData = await fetchPlantData (plantId);
|
||||
const plantId = req.params.id
|
||||
const plantData = await fetchPlantData (plantId)
|
||||
|
||||
if (plantData) {
|
||||
const detailedPlantData = {
|
||||
@@ -132,12 +132,12 @@ plantsRouter.get ('/:id', async (req, res) => {
|
||||
max_soil_ec: plantData.max_soil_ec,
|
||||
min_soil_ec: plantData.min_soil_ec,
|
||||
image_url: plantData.image_url,
|
||||
};
|
||||
}
|
||||
|
||||
res.send (detailedPlantData);
|
||||
res.send (detailedPlantData)
|
||||
} else {
|
||||
res.status (404).send ({message: 'Plant not found'});
|
||||
res.status (404).send ({message: 'Plant not found'})
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = plantsRouter;
|
||||
module.exports = plantsRouter
|
||||
|
||||
Reference in New Issue
Block a user