Retrieve Comments On Shares

Retrieve comments on shares given the share urn. [See the docs here](https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/network-update-social-actions#retrieve-comments-on-shares)

Script linkedin Verified

by hugo697 ยท 7/17/2024

The script

Submitted by hugo697 Typescript (fetch-only)
Verified 689 days ago
1
type Linkedin = {
2
	token: string
3
	apiVersion: string
4
}
5

6
export async function main(resource: Linkedin, entityUrn: string, maxResults: number = 100) {
7
	const count = 50 // Number of results per request
8
	const results: any[] = []
9
	const encodedEntityUrn = encodeURIComponent(entityUrn)
10

11
	let params = new URLSearchParams({
12
		count: count.toString(),
13
		start: '0'
14
	})
15

16
	let done = false
17
	do {
18
		const endpoint = `https://api.linkedin.com/rest/socialActions/${encodedEntityUrn}/comments?${params.toString()}`
19

20
		const response = await fetch(endpoint, {
21
			method: 'GET',
22
			headers: {
23
				Authorization: `Bearer ${resource.token}`,
24
				'X-Restli-Protocol-Version': '2.0.0',
25
				'LinkedIn-Version': `${resource.apiVersion}`
26
			}
27
		})
28

29
		if (!response.ok) {
30
			throw new Error(`HTTP error! status: ${response.status}`)
31
		}
32

33
		const data = await response.json()
34
		results.push(...data.elements)
35

36
		params.set('start', (parseInt(params.get('start')!) + count).toString())
37
		if (data.elements.length < count || results.length >= maxResults) {
38
			done = true
39
		}
40
	} while (!done)
41

42
	return results.slice(0, maxResults)
43
}
44