Reputation: 17
I need to configure the base url of my endpoints after I make successful http requests (status code: 200).
I've written the below function but it's not working as I was expecting... It always returns undefined
. I know it's something about promises but I don't have much experience.
const get = require('./functions/functionGET');
function geturl() {
var baseip;
get(
"username",
"password",
"http://**.***.**.35:8048/TESTDEV02/ODataV4/Company"
)
.then((response) => {
if (response.statusCode === 200) {
baseip = "http://**.***.**.35:8048/TESTDEV02/ODataV4/Company('*******')";
} else {
get(
"username",
"password",
"http://**.***.**.36:8048/TESTDEV02/ODataV4/Company"
).then((response) => {
if (response.statusCode === 200) {
baseip = "http://**.***.**.36:8048/TESTDEV02/ODataV4/Company('*******')";
} else {
get(
"username",
"password",
"http://**.***.**.37:8048/TESTDEV02/ODataV4/Company"
).then((response) => {
if (response.statusCode === 200) {
baseip = "http://**.***.**.37:8048/TESTDEV02/ODataV4/Company('*******')";
}
});
}
});
}
})
console.log(baseip)
return baseip;
}
module.exports = geturl();
EDIT
This is the get() function:
const { promisify } = require('util');
var httpntlm = require('httpntlm');
const Logger = require('../../services/error_logger')
const logger = new Logger('app')
module.exports = function (username, password, url) {
var httpntlmGetAsync = promisify(httpntlm.get);
return httpntlmGetAsync({
url: url,
username: username,
password: password,
workstation: '',
domain: '',
headers: {
'Access-Control-Allow-Origin': '*',
'Accept': '*/*',
'Content-Type': 'application/json; charset=utf-8'
}
})
.catch(err => logger.error(`URL: ${url}, Error: ${err}`))
then(response => {
return response.body
});
};
Upvotes: 0
Views: 59
Reputation: 325
Looks like you need to put await
before each get()
method. At the same time you have to declare your function as async
:
async function geturl() { //...
Without an await
the next line of you code after get()
gets executed regardless if get()
returned anything yet. Therefore baseip
is left as undefined
.
EDIT: this is assuming your get()
method from ./functions/functionGET
is asynchronous.
Upvotes: 1