2021-07-05 03:19:04 +00:00
|
|
|
import { post, paramsString, WRITE_TIMEOUT } from '../_utils/ajax.js'
|
|
|
|
import { basename } from './utils.js'
|
2018-02-09 06:29:29 +00:00
|
|
|
|
2018-01-13 22:19:51 +00:00
|
|
|
const WEBSITE = 'https://pinafore.social'
|
2018-10-06 20:06:10 +00:00
|
|
|
const SCOPES = 'read write follow push'
|
2018-01-13 22:19:51 +00:00
|
|
|
const CLIENT_NAME = 'Pinafore'
|
|
|
|
|
2018-02-09 06:29:29 +00:00
|
|
|
export function registerApplication (instanceName, redirectUri) {
|
2018-01-19 05:52:58 +00:00
|
|
|
const url = `${basename(instanceName)}/api/v1/apps`
|
2018-06-13 14:38:36 +00:00
|
|
|
return post(url, {
|
2018-02-09 06:29:29 +00:00
|
|
|
client_name: CLIENT_NAME,
|
|
|
|
redirect_uris: redirectUri,
|
|
|
|
scopes: SCOPES,
|
|
|
|
website: WEBSITE
|
2018-08-30 04:42:57 +00:00
|
|
|
}, null, { timeout: WRITE_TIMEOUT })
|
2018-01-13 22:19:51 +00:00
|
|
|
}
|
|
|
|
|
2018-02-09 06:29:29 +00:00
|
|
|
export function generateAuthLink (instanceName, clientId, redirectUri) {
|
2019-08-03 20:49:37 +00:00
|
|
|
const params = paramsString({
|
|
|
|
client_id: clientId,
|
|
|
|
redirect_uri: redirectUri,
|
|
|
|
response_type: 'code',
|
|
|
|
scope: SCOPES
|
2018-01-13 22:19:51 +00:00
|
|
|
})
|
2018-01-19 05:52:58 +00:00
|
|
|
return `${basename(instanceName)}/oauth/authorize?${params}`
|
2018-01-13 22:19:51 +00:00
|
|
|
}
|
|
|
|
|
2018-02-09 06:29:29 +00:00
|
|
|
export function getAccessTokenFromAuthCode (instanceName, clientId, clientSecret, code, redirectUri) {
|
2019-08-03 20:49:37 +00:00
|
|
|
const url = `${basename(instanceName)}/oauth/token`
|
2023-01-09 06:31:00 +00:00
|
|
|
// Using URLSearchParams here guarantees a content type of application/x-www-form-urlencoded
|
|
|
|
// See https://fetch.spec.whatwg.org/#bodyinit-unions
|
|
|
|
return post(url, new URLSearchParams({
|
2018-01-13 22:19:51 +00:00
|
|
|
client_id: clientId,
|
|
|
|
client_secret: clientSecret,
|
2018-01-14 03:23:05 +00:00
|
|
|
redirect_uri: redirectUri,
|
2018-01-13 22:19:51 +00:00
|
|
|
grant_type: 'authorization_code',
|
2022-11-18 17:32:31 +00:00
|
|
|
code
|
2023-01-09 06:31:00 +00:00
|
|
|
}), null, { timeout: WRITE_TIMEOUT })
|
2018-02-09 06:29:29 +00:00
|
|
|
}
|