mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
|
module.exports = authenticationBeforeRequest;
|
||
|
|
||
|
const btoa = require("btoa-lite");
|
||
|
const uniq = require("lodash.uniq");
|
||
|
|
||
|
function authenticationBeforeRequest(state, options) {
|
||
|
if (!state.auth.type) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (state.auth.type === "basic") {
|
||
|
const hash = btoa(`${state.auth.username}:${state.auth.password}`);
|
||
|
options.headers.authorization = `Basic ${hash}`;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (state.auth.type === "token") {
|
||
|
options.headers.authorization = `token ${state.auth.token}`;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (state.auth.type === "app") {
|
||
|
options.headers.authorization = `Bearer ${state.auth.token}`;
|
||
|
const acceptHeaders = options.headers.accept
|
||
|
.split(",")
|
||
|
.concat("application/vnd.github.machine-man-preview+json");
|
||
|
options.headers.accept = uniq(acceptHeaders)
|
||
|
.filter(Boolean)
|
||
|
.join(",");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
options.url += options.url.indexOf("?") === -1 ? "?" : "&";
|
||
|
|
||
|
if (state.auth.token) {
|
||
|
options.url += `access_token=${encodeURIComponent(state.auth.token)}`;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const key = encodeURIComponent(state.auth.key);
|
||
|
const secret = encodeURIComponent(state.auth.secret);
|
||
|
options.url += `client_id=${key}&client_secret=${secret}`;
|
||
|
}
|