mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-28 20:39:40 -08:00
docs: add refresh_token endpoint
This commit is contained in:
parent
5a69b3e771
commit
a4727ddbbd
|
@ -1,29 +1,31 @@
|
||||||
const axios = require('axios');
|
const strava = require('../shared/strava.js');
|
||||||
|
|
||||||
module.exports = async function (context, req) {
|
module.exports = async function (context, req) {
|
||||||
context.log('JavaScript HTTP trigger function processed a request.');
|
context.log('JavaScript HTTP trigger function processed a request.');
|
||||||
// https://www.strava.com/oauth/authorize?client_id=76033&response_type=code&redirect_uri=https://ohmyposh.dev/api/auth&approval_prompt=force&scope=read,activity:read
|
// strava example:
|
||||||
|
// https://www.strava.com/oauth/authorize?client_id=76033&response_type=code&redirect_uri=https://ohmyposh.dev/api/auth&approval_prompt=force&scope=read,activity:read&state=strava
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const code = (req.query._code || (req.body && req.body.code));
|
const code = (req.query._code || (req.body && req.body.code));
|
||||||
if (!code) {
|
const segment = (req.query.state || (req.body && req.body.state));
|
||||||
|
if (!code || !segment) {
|
||||||
context.res = {
|
context.res = {
|
||||||
status: 400
|
status: 400
|
||||||
};
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const params = {
|
let body = null;
|
||||||
client_id: process.env['STRAVA_CLIENT_ID'],
|
switch (segment) {
|
||||||
client_secret: process.env['STRAVA_CLIENT_SECRET'],
|
case "strava":
|
||||||
code: code,
|
body = await strava.getStravaToken(code);
|
||||||
grant_type: 'authorization_code',
|
break;
|
||||||
|
default:
|
||||||
|
context.res = {
|
||||||
|
body: "unknown segment",
|
||||||
|
status: 400
|
||||||
};
|
};
|
||||||
const resp = await axios.post('https://www.strava.com/oauth/token', null, { params: params });
|
return;
|
||||||
|
|
||||||
const body = {
|
|
||||||
access_token: resp.data.access_token,
|
|
||||||
refresh_token: resp.data.refresh_token,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
context.res = {
|
context.res = {
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Azure"
|
|
||||||
}
|
|
19
docs/api/refresh/function.json
Normal file
19
docs/api/refresh/function.json
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"bindings": [
|
||||||
|
{
|
||||||
|
"authLevel": "anonymous",
|
||||||
|
"type": "httpTrigger",
|
||||||
|
"direction": "in",
|
||||||
|
"name": "req",
|
||||||
|
"methods": [
|
||||||
|
"get",
|
||||||
|
"post"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "http",
|
||||||
|
"direction": "out",
|
||||||
|
"name": "res"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
39
docs/api/refresh/index.js
Normal file
39
docs/api/refresh/index.js
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
const strava = require('../shared/strava.js');
|
||||||
|
|
||||||
|
module.exports = async function (context, req) {
|
||||||
|
context.log('JavaScript HTTP trigger function processed a request.');
|
||||||
|
// strava example:
|
||||||
|
// https://ohmyposh.dev/api/refresh?segment=strava&token=<refresh_token>
|
||||||
|
|
||||||
|
try {
|
||||||
|
const refresh_token = (req.query.token || (req.body && req.body.token));
|
||||||
|
const segment = (req.query.segment || (req.body && req.body.segment));
|
||||||
|
if (!refresh_token || !segment) {
|
||||||
|
context.res = {
|
||||||
|
status: 400
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let body = null;
|
||||||
|
switch (segment) {
|
||||||
|
case "strava":
|
||||||
|
body = await strava.refreshStravaToken(refresh_token);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
context.res = {
|
||||||
|
body: "unknown segment",
|
||||||
|
status: 400
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
context.res.json(body);
|
||||||
|
} catch (error) {
|
||||||
|
context.log(error);
|
||||||
|
context.res = {
|
||||||
|
body: error,
|
||||||
|
status: 500
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
38
docs/api/shared/strava.js
Normal file
38
docs/api/shared/strava.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
const axios = require('axios');
|
||||||
|
|
||||||
|
async function getStravaToken(code) {
|
||||||
|
const params = {
|
||||||
|
client_id: process.env['STRAVA_CLIENT_ID'],
|
||||||
|
client_secret: process.env['STRAVA_CLIENT_SECRET'],
|
||||||
|
code: code,
|
||||||
|
grant_type: 'authorization_code',
|
||||||
|
};
|
||||||
|
const resp = await axios.post('https://www.strava.com/api/v3/oauth/token', null, { params: params });
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
access_token: resp.data.access_token,
|
||||||
|
refresh_token: resp.data.refresh_token,
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function refreshStravaToken(refresh_token) {
|
||||||
|
const params = {
|
||||||
|
client_id: process.env['STRAVA_CLIENT_ID'],
|
||||||
|
client_secret: process.env['STRAVA_CLIENT_SECRET'],
|
||||||
|
refresh_token: refresh_token,
|
||||||
|
grant_type: 'refresh_token',
|
||||||
|
};
|
||||||
|
const resp = await axios.post('https://www.strava.com/api/v3/oauth/token', null, { params: params });
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
access_token: resp.data.access_token,
|
||||||
|
refresh_token: resp.data.refresh_token,
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getStravaToken: getStravaToken,
|
||||||
|
refreshStravaToken: refreshStravaToken,
|
||||||
|
}
|
Loading…
Reference in a new issue