Update UI and migrations, fix dockerfile
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import {createHmac} from "node:crypto";
|
||||
import {readFileSync} from "node:fs";
|
||||
|
||||
const baseUrl = "https://f-n8.ru";
|
||||
const [keyId, secret] = readFileSync("/root/ghost-admin-api-key", "utf8").trim().split(":");
|
||||
const encode = (value) => Buffer.from(JSON.stringify(value)).toString("base64url");
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
const unsigned = `${encode({alg: "HS256", typ: "JWT", kid: keyId})}.${encode({iat: now, exp: now + 300, aud: "/admin/"})}`;
|
||||
const token = `${unsigned}.${createHmac("sha256", Buffer.from(secret, "hex")).update(unsigned).digest("base64url")}`;
|
||||
const headers = {Authorization: `Ghost ${token}`, "Content-Type": "application/json"};
|
||||
|
||||
const oldText = "Мы собираем материалы производителей и профильных магазинов, проверяем их релевантность и приводим к единому удобному формату.";
|
||||
const newText = "Ежедневно мы собираем новости снаряжения с сотен источников, отбираем лучшее и публикуем в одном месте!";
|
||||
|
||||
const response = await fetch(`${baseUrl}/ghost/api/admin/pages/slug/about/?formats=html`, {headers});
|
||||
if (!response.ok) throw new Error(`Ghost page read failed: ${response.status} ${await response.text()}`);
|
||||
const page = (await response.json()).pages[0];
|
||||
const html = String(page.html || "");
|
||||
if (!html.includes(oldText) && !String(page.custom_excerpt || "").includes(oldText)) {
|
||||
throw new Error("Expected about text was not found");
|
||||
}
|
||||
const update = {
|
||||
id: page.id,
|
||||
updated_at: page.updated_at,
|
||||
html: html.replaceAll(oldText, newText),
|
||||
custom_excerpt: String(page.custom_excerpt || "").replaceAll(oldText, newText),
|
||||
};
|
||||
const saved = await fetch(`${baseUrl}/ghost/api/admin/pages/${page.id}/?source=html`, {
|
||||
method: "PUT",
|
||||
headers,
|
||||
body: JSON.stringify({pages: [update]}),
|
||||
});
|
||||
if (!saved.ok) throw new Error(`Ghost page update failed: ${saved.status} ${await saved.text()}`);
|
||||
const result = (await saved.json()).pages[0];
|
||||
console.log(JSON.stringify({id: result.id, slug: result.slug, updated_at: result.updated_at}));
|
||||
Reference in New Issue
Block a user