forked from cybrespace/pinafore
		
	
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { postWithTimeout, paramsString } from '../_utils/ajax'
 | 
						|
import { basename } from './utils'
 | 
						|
 | 
						|
const WEBSITE = 'https://pinafore.social'
 | 
						|
const SCOPES = 'read write follow'
 | 
						|
const CLIENT_NAME = 'Pinafore'
 | 
						|
 | 
						|
export function registerApplication (instanceName, redirectUri) {
 | 
						|
  const url = `${basename(instanceName)}/api/v1/apps`
 | 
						|
  return postWithTimeout(url, {
 | 
						|
    client_name: CLIENT_NAME,
 | 
						|
    redirect_uris: redirectUri,
 | 
						|
    scopes: SCOPES,
 | 
						|
    website: WEBSITE
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
export function generateAuthLink (instanceName, clientId, redirectUri) {
 | 
						|
  let params = paramsString({
 | 
						|
    'client_id': clientId,
 | 
						|
    'redirect_uri': redirectUri,
 | 
						|
    'response_type': 'code',
 | 
						|
    'scope': SCOPES
 | 
						|
  })
 | 
						|
  return `${basename(instanceName)}/oauth/authorize?${params}`
 | 
						|
}
 | 
						|
 | 
						|
export function getAccessTokenFromAuthCode (instanceName, clientId, clientSecret, code, redirectUri) {
 | 
						|
  let url = `${basename(instanceName)}/oauth/token`
 | 
						|
  return postWithTimeout(url, {
 | 
						|
    client_id: clientId,
 | 
						|
    client_secret: clientSecret,
 | 
						|
    redirect_uri: redirectUri,
 | 
						|
    grant_type: 'authorization_code',
 | 
						|
    code: code
 | 
						|
  })
 | 
						|
}
 |