BREAKING: Refactor /api endpoint
The endpoint was renamed to `/api/share` and refactored to use ESM instead of CommonJS
This commit is contained in:
parent
aeda860af6
commit
03f49e4056
4 changed files with 33 additions and 19 deletions
|
@ -15,7 +15,6 @@
|
||||||
"browser": false
|
"browser": false
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"unicorn/prefer-module": 0,
|
|
||||||
"unicorn/prefer-node-protocol": 0
|
"unicorn/prefer-node-protocol": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
CHANGELOG.md
11
CHANGELOG.md
|
@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
|
|
||||||
## [v3 (unreleased)][Unreleased]
|
## [v3 (unreleased)][Unreleased]
|
||||||
|
|
||||||
|
|
||||||
|
### ⚠️ BREAKING CHANGES
|
||||||
|
|
||||||
|
- **new API endpoint path**: ~~`/api/toot`~~ → `/api/share`
|
||||||
|
- API endpoint **is now ESM-based** instead of CommonJS
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- when developing, the API endpoint can now be tested locally thanks to
|
||||||
|
[`vite-plugin-node`](https://github.com/axe-me/vite-plugin-node)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- **new project name**: Share₂Fedi (see #1)
|
- **new project name**: Share₂Fedi (see #1)
|
||||||
|
|
|
@ -18,24 +18,28 @@
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const http = require("http");
|
import http from "http";
|
||||||
|
|
||||||
http
|
const requestListener = async (request, response) => {
|
||||||
.createServer(async (request, response) => {
|
const buffers = [];
|
||||||
const buffers = [];
|
for await (const chunk of request) {
|
||||||
for await (const chunk of request) {
|
buffers.push(chunk);
|
||||||
buffers.push(chunk);
|
}
|
||||||
}
|
const data = Buffer.concat(buffers).toString();
|
||||||
const data = Buffer.concat(buffers).toString();
|
const searchParameters = new URLSearchParams(data);
|
||||||
const searchParameters = new URLSearchParams(data);
|
|
||||||
|
|
||||||
const text = searchParameters.get("text") || "";
|
const text = searchParameters.get("text") || "";
|
||||||
const instanceURL =
|
const instanceURL =
|
||||||
searchParameters.get("instance") || "https://mastodon.social/";
|
searchParameters.get("instance") || "https://mastodon.social/";
|
||||||
|
|
||||||
const finalURL = new URL("share", instanceURL);
|
const finalURL = new URL("share", instanceURL);
|
||||||
finalURL.search = new URLSearchParams({ text }).toString();
|
finalURL.search = new URLSearchParams({ text }).toString();
|
||||||
|
|
||||||
response.writeHead(303, { Location: finalURL.toString() }).end();
|
response.writeHead(303, { Location: finalURL.toString() }).end();
|
||||||
})
|
};
|
||||||
.listen(8000);
|
|
||||||
|
if (!import.meta.env || import.meta.env.PROD) {
|
||||||
|
http.createServer(requestListener).listen(8080);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const viteNodeApp = requestListener;
|
|
@ -52,7 +52,7 @@
|
||||||
</p>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
<form id="js-s2f-form" action="/api/toot" method="POST">
|
<form id="js-s2f-form" action="/api/share" method="POST">
|
||||||
<section>
|
<section>
|
||||||
<label for="text">Post text</label>
|
<label for="text">Post text</label>
|
||||||
<textarea
|
<textarea
|
||||||
|
|
Reference in a new issue