forked from skillrecordings/egghead-next
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaylists.ts
More file actions
140 lines (133 loc) · 2.76 KB
/
playlists.ts
File metadata and controls
140 lines (133 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import {GraphQLClient} from 'graphql-request'
import config from './config'
const graphQLClient = new GraphQLClient(config.graphQLEndpoint)
export async function loadPlaylist(slug: string, token?: string) {
const query = /* GraphQL */ `
query getPlaylist($slug: String!) {
playlist(slug: $slug) {
slug
title
description
image_thumb_url
square_cover_480_url
average_rating_out_of_5
rating_count
watched_count
path
primary_tag {
name
image_url
slug
}
items {
... on Course {
slug
title
summary
description
path
square_cover_url
type
}
... on Playlist {
slug
title
description
path
square_cover_url
type
url
lessons {
title
path
slug
icon_url
}
}
... on Lesson {
slug
title
description
path
http_url
icon_url
type
}
... on File {
slug
title
url
description
square_cover_480_url
square_cover_url
type
}
... on Download {
slug
title
url
summary
description
square_cover_480_url
square_cover_url
type
}
... on Url {
title
url
description
square_cover_480_url
square_cover_url
type
}
... on GenericResource {
title
url
description
square_cover_480_url
square_cover_url
type
}
}
instructor {
id
full_name
slug
avatar_url
avatar_64_url
bio_short
twitter
}
owner {
id
full_name
avatar_url
}
}
}
`
const authorizationHeader = token && {
authorization: `Bearer ${token}`,
}
const variables = {
slug: slug,
}
graphQLClient.setHeaders({
...authorizationHeader,
})
const {playlist} = await graphQLClient.request(query, variables)
return playlist
}
export async function loadAllPlaylists() {
const query = /* GraphQL */ `
query getPlaylists {
all_playlists {
title
slug
description
}
}
`
const {all_playlists} = await graphQLClient.request(query)
return all_playlists
}