mirror of
https://iceshrimp.dev/Crimekillz/jointrashposs.git
synced 2024-11-23 17:29:06 +01:00
Open-sourcing GAS Script
This commit is contained in:
parent
cd48d46318
commit
b4e507da32
@ -1 +1,3 @@
|
|||||||
pages/**/*-ignore.vue
|
pages/**/*-ignore.vue
|
||||||
|
locales
|
||||||
|
__misc
|
@ -84,6 +84,12 @@ yarn preview
|
|||||||
|
|
||||||
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
||||||
|
|
||||||
|
## (おまけ) デプロイ時のオートメーションプログラム
|
||||||
|
|
||||||
|
`/__misc/gas/` に、Misskey Hubデプロイ時に自動実行しているプログラムを同梱しています。
|
||||||
|
|
||||||
|
Google Apps Scriptで動作します。
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
GNU Affero General Public License v3.0
|
GNU Affero General Public License v3.0
|
||||||
|
73
__misc/gas/code.gs
Normal file
73
__misc/gas/code.gs
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
// プログラムを変更したら都度「デプロイ」を行うこと
|
||||||
|
|
||||||
|
// スクリプト プロパティを取得
|
||||||
|
const env = PropertiesService.getScriptProperties().getProperties();
|
||||||
|
|
||||||
|
// Misskey
|
||||||
|
const MI_API_TOKEN = env.MISSKEY_API_TOKEN ?? null;
|
||||||
|
|
||||||
|
// Cloudflare
|
||||||
|
const CF_API_TOKEN = env.CF_API_TOKEN ?? null;
|
||||||
|
const CF_ZONE_ID = env.CF_ZONE_ID ?? null;
|
||||||
|
|
||||||
|
// Webhook受信時のハンドラ
|
||||||
|
function doPost(e) {
|
||||||
|
const params = JSON.parse(e.postData.getDataAsString());
|
||||||
|
|
||||||
|
// プロダクションのデプロイ以外・デプロイ成功以外には反応しない
|
||||||
|
if (params?.deployment?.environment !== 'Production' || params?.action !== 'created') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cloudflareのキャッシュパージをやる
|
||||||
|
if (CF_API_TOKEN && CF_ZONE_ID) {
|
||||||
|
purgeCfCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
// デプロイされたことをMisskeyに通知する
|
||||||
|
if (MI_API_TOKEN) {
|
||||||
|
postToMisskey(params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function postToMisskey(d) {
|
||||||
|
var data = {
|
||||||
|
i: MI_API_TOKEN,
|
||||||
|
text: `$[tada 📢] **Misskey Hub <small>(Next)</small> が更新されました!**
|
||||||
|
早速チェックしましょう ▶ ${d?.repository?.homepage ?? 'https://misskey-hub.net/'}`,
|
||||||
|
visibility: 'public',
|
||||||
|
cw: null,
|
||||||
|
localOnly: false,
|
||||||
|
reactionAcceptance: 'nonSensitiveOnly',
|
||||||
|
poll: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
contentType: "application/json",
|
||||||
|
method: "POST",
|
||||||
|
payload: JSON.stringify(data),
|
||||||
|
};
|
||||||
|
|
||||||
|
const createResult = JSON.parse(UrlFetchApp.fetch("https://misskey.io/api/notes/create", options).getContentText());
|
||||||
|
|
||||||
|
Logger.log(createResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
function purgeCfCache() {
|
||||||
|
var data = {
|
||||||
|
purge_everything: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
contentType: "application/json",
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
'Authorization': `Bearer ${CF_API_TOKEN}`,
|
||||||
|
},
|
||||||
|
payload: JSON.stringify(data),
|
||||||
|
};
|
||||||
|
|
||||||
|
const createResult = JSON.parse(UrlFetchApp.fetch(`https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/purge_cache`, options).getContentText());
|
||||||
|
|
||||||
|
Logger.log(createResult);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user