tangled
alpha
login
or
join now
leaflet.pub
/
leaflet
289
fork
atom
a tool for shared writing and social publishing
289
fork
atom
overview
issues
28
pulls
pipelines
uri encode microlink request
awarm.space
9 months ago
ef2890b6
e55e0a53
+27
-51
4 changed files
expand all
collapse all
unified
split
app
[leaflet_id]
opengraph-image.tsx
lish
[did]
[publication]
[rkey]
opengraph-image.ts
opengraph-image.ts
src
utils
getMicroLinkOgImage.ts
+2
-17
app/[leaflet_id]/opengraph-image.tsx
···
1
1
-
import { headers } from "next/headers";
2
2
-
import { ImageResponse } from "next/og";
1
1
+
import { getMicroLinkOgImage } from "src/utils/getMicroLinkOgImage";
3
2
4
3
export const runtime = "edge";
5
4
export const revalidate = 60;
···
7
6
export default async function OpenGraphImage(props: {
8
7
params: { leaflet_id: string };
9
8
}) {
10
10
-
if (process.env.NODE_ENV === "development") return;
11
11
-
const headersList = await headers();
12
12
-
const hostname = headersList.get("x-forwarded-host");
13
13
-
let protocol = headersList.get("x-forwarded-proto");
14
14
-
let path = `${protocol}://${hostname}/${props.params.leaflet_id}`;
15
15
-
let response = await fetch(
16
16
-
`https://pro.microlink.io/?url=${path}&screenshot=true&viewport.width=1400&viewport.height=733&meta=false&embed=screenshot.url&force=true`,
17
17
-
{
18
18
-
headers: {
19
19
-
"x-api-key": process.env.MICROLINK_API_KEY!,
20
20
-
},
21
21
-
},
22
22
-
);
23
23
-
let endTime = Date.now();
24
24
-
return response;
9
9
+
return getMicroLinkOgImage(`/${props.params.leaflet_id}`);
25
10
}
+3
-17
app/lish/[did]/[publication]/[rkey]/opengraph-image.ts
···
1
1
-
import { headers } from "next/headers";
2
2
-
import { ImageResponse } from "next/og";
1
1
+
import { getMicroLinkOgImage } from "src/utils/getMicroLinkOgImage";
3
2
4
3
export const runtime = "edge";
5
4
export const revalidate = 60;
···
7
6
export default async function OpenGraphImage(props: {
8
7
params: { publication: string; did: string; rkey: string };
9
8
}) {
10
10
-
if (process.env.NODE_ENV === "development") return;
11
11
-
const headersList = await headers();
12
12
-
const hostname = headersList.get("x-forwarded-host");
13
13
-
let protocol = headersList.get("x-forwarded-proto");
14
14
-
let path = `${protocol}://${hostname}/lish/${props.params.did}/${props.params.publication}/${props.params.rkey}`;
15
15
-
let response = await fetch(
16
16
-
`https://pro.microlink.io/?url=${path}&screenshot=true&viewport.width=1400&viewport.height=733&meta=false&embed=screenshot.url&force=true`,
17
17
-
{
18
18
-
headers: {
19
19
-
"x-api-key": process.env.MICROLINK_API_KEY!,
20
20
-
},
21
21
-
},
9
9
+
return getMicroLinkOgImage(
10
10
+
`/lish/${props.params.did}/${props.params.publication}/${props.params.rkey}`,
22
11
);
23
23
-
let endTime = Date.now();
24
24
-
25
25
-
return response;
26
12
}
+3
-17
app/lish/[did]/[publication]/opengraph-image.ts
···
1
1
-
import { headers } from "next/headers";
2
2
-
import { ImageResponse } from "next/og";
1
1
+
import { getMicroLinkOgImage } from "src/utils/getMicroLinkOgImage";
3
2
4
3
export const runtime = "edge";
5
4
export const revalidate = 60;
···
7
6
export default async function OpenGraphImage(props: {
8
7
params: { publication: string; did: string };
9
8
}) {
10
10
-
if (process.env.NODE_ENV === "development") return;
11
11
-
const headersList = await headers();
12
12
-
const hostname = headersList.get("x-forwarded-host");
13
13
-
let protocol = headersList.get("x-forwarded-proto");
14
14
-
let path = `${protocol}://${hostname}/lish/${props.params.did}/${props.params.publication}`;
15
15
-
let response = await fetch(
16
16
-
`https://pro.microlink.io/?url=${path}&screenshot=true&viewport.width=1400&viewport.height=733&meta=false&embed=screenshot.url&force=true`,
17
17
-
{
18
18
-
headers: {
19
19
-
"x-api-key": process.env.MICROLINK_API_KEY!,
20
20
-
},
21
21
-
},
9
9
+
return getMicroLinkOgImage(
10
10
+
`/lish/${props.params.did}/${props.params.publication}`,
22
11
);
23
23
-
let endTime = Date.now();
24
24
-
25
25
-
return response;
26
12
}
+19
src/utils/getMicroLinkOgImage.ts
···
1
1
+
import { headers } from "next/headers";
2
2
+
3
3
+
export async function getMicroLinkOgImage(path: string) {
4
4
+
if (process.env.NODE_ENV === "development") return;
5
5
+
const headersList = await headers();
6
6
+
const hostname = headersList.get("x-forwarded-host");
7
7
+
let protocol = headersList.get("x-forwarded-proto");
8
8
+
let full_path = encodeURIComponent(`${protocol}://${hostname}${path}`);
9
9
+
let response = await fetch(
10
10
+
`https://pro.microlink.io/?url=${full_path}&screenshot=true&viewport.width=1400&viewport.height=733&meta=false&embed=screenshot.url&force=true`,
11
11
+
{
12
12
+
headers: {
13
13
+
"x-api-key": process.env.MICROLINK_API_KEY!,
14
14
+
},
15
15
+
},
16
16
+
);
17
17
+
18
18
+
return response;
19
19
+
}