summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-11-15 17:40:49 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-11-15 17:40:49 +0900
commitccd14e04623191db916bd5ba82b699fceddfc41f (patch)
tree849d6896d680fe712dacab998e805dfe9f990487 /src/server
parent12.57.3 (diff)
downloadsharkey-ccd14e04623191db916bd5ba82b699fceddfc41f.tar.gz
sharkey-ccd14e04623191db916bd5ba82b699fceddfc41f.tar.bz2
sharkey-ccd14e04623191db916bd5ba82b699fceddfc41f.zip
クリップのOGP対応
Diffstat (limited to 'src/server')
-rw-r--r--src/server/web/index.ts24
-rw-r--r--src/server/web/views/clip.pug30
2 files changed, 53 insertions, 1 deletions
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 58e764ee17..f889374139 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -17,7 +17,7 @@ import packFeed from './feed';
import { fetchMeta } from '../../misc/fetch-meta';
import { genOpenapiSpec } from '../api/openapi/gen-spec';
import config from '../../config';
-import { Users, Notes, Emojis, UserProfiles, Pages, Channels } from '../../models';
+import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips } from '../../models';
import parseAcct from '../../misc/acct/parse';
import getNoteSummary from '../../misc/get-note-summary';
import { ensure } from '../../prelude/ensure';
@@ -298,6 +298,28 @@ router.get('/@:user/pages/:page', async ctx => {
ctx.status = 404;
});
+// Clip
+router.get('/clips/:clip', async ctx => {
+ const clip = await Clips.findOne({
+ id: ctx.params.clip,
+ });
+
+ if (clip) {
+ const _clip = await Clips.pack(clip);
+ const meta = await fetchMeta();
+ await ctx.render('clip', {
+ clip: _clip,
+ instanceName: meta.name || 'Misskey'
+ });
+
+ ctx.set('Cache-Control', 'public, max-age=180');
+
+ return;
+ }
+
+ ctx.status = 404;
+});
+
// Channel
router.get('/channels/:channel', async ctx => {
const channel = await Channels.findOne({
diff --git a/src/server/web/views/clip.pug b/src/server/web/views/clip.pug
new file mode 100644
index 0000000000..8cd1c673ed
--- /dev/null
+++ b/src/server/web/views/clip.pug
@@ -0,0 +1,30 @@
+extends ./base
+
+block vars
+ - const user = clip.user;
+ - const title = clip.name;
+ - const url = `${config.url}/clips/${clip.id}`;
+
+block title
+ = `${title} | ${instanceName}`
+
+block desc
+ meta(name='description' content= clip.description)
+
+block og
+ meta(property='og:type' content='article')
+ meta(property='og:title' content= title)
+ meta(property='og:description' content= clip.description)
+ meta(property='og:url' content= url)
+ meta(property='og:image' content= user.avatarUrl)
+
+block meta
+ meta(name='misskey:user-username' content=user.username)
+ meta(name='misskey:user-id' content=user.id)
+ meta(name='misskey:clip-id' content=clip.id)
+
+ meta(name='twitter:card' content='summary')
+
+ // todo
+ if user.twitter
+ meta(name='twitter:creator' content=`@${user.twitter.screenName}`)