-
Notifications
You must be signed in to change notification settings - Fork 5
/
gatsby-node.js
82 lines (70 loc) · 2.11 KB
/
gatsby-node.js
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
const getActivities = require("./utils/activities.js")
const getAthlete = require("./utils/athlete.js")
const {strava} = require("./utils/strava.js")
exports.sourceNodes = async (
{actions, createContentDigest, reporter, cache},
pluginOptions = {}
) => {
if (!pluginOptions.stravaClientId) {
reporter.warn("source-strava: Missing `stravaClientId` option")
return
}
if (!pluginOptions.stravaClientSecret) {
reporter.warn("source-strava: Missing `stravaClientSecret` option")
return
}
if (!pluginOptions.stravaToken) {
reporter.warn("source-strava: Missing `stravaToken` option")
return
}
try {
await strava.init({
clientId: pluginOptions.stravaClientId,
clientSecret: pluginOptions.stravaClientSecret,
token: pluginOptions.stravaToken,
})
const activities = await getActivities({
debug: pluginOptions.debug,
options: pluginOptions.activities,
cache,
reporter,
})
if (activities && activities.length > 0) {
activities.forEach((activity) => {
if (pluginOptions.activities && pluginOptions.activities.extend) {
pluginOptions.activities.extend({activity})
}
actions.createNode({
...activity,
id: activity.id.toString(),
internal: {
type: "StravaActivity",
contentDigest: createContentDigest(activity),
},
})
})
reporter.success(`source-strava: ${activities.length} activities fetched`)
}
const athlete = await getAthlete({
options: pluginOptions.athlete,
})
if (pluginOptions.athlete && pluginOptions.athlete.extend) {
pluginOptions.athlete.extend({activities, athlete})
}
actions.createNode({
...athlete,
id: athlete.id.toString(),
internal: {
type: "StravaAthlete",
contentDigest: createContentDigest(athlete),
},
})
reporter.success(`source-strava: athlete fetched`)
} catch (e) {
if (pluginOptions.debug) {
reporter.panic(`source-strava: `, e)
} else {
reporter.panic(`source-strava: ${e.message}`)
}
}
}