-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgatsby-node.js
54 lines (51 loc) · 1.38 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
const axios = require("axios");
async function getCollection(collectionId, apiToken) {
const url = `https://api.getpostman.com/collections/${collectionId}`;
try {
const { data } = await axios(url, {
method: "GET",
headers: {
Accept: "application/json",
"x-api-key": apiToken,
},
});
return data.collection;
} catch (error) {
throw new Error(JSON.stringify(error.response.data));
}
}
exports.sourceNodes = async (
{ actions, createContentDigest, createNodeId },
{ collectionId, apiToken }
) => {
// Node
const COLLECTION_TYPE = "Collection";
const REQUEST_TYPE = "Request";
try {
// Get Postman Collection
const collection = await getCollection(collectionId, apiToken);
const { info, item } = collection;
// Create a node for the Postman Collection
actions.createNode({
id: createNodeId(`${COLLECTION_TYPE}-${info._postman_id}`),
...info,
internal: {
type: COLLECTION_TYPE,
contentDigest: createContentDigest(info),
},
});
// Create node for each Postman Collection Request
for (const i of item) {
actions.createNode({
id: createNodeId(`${REQUEST_TYPE}-${i.id}`),
...i,
internal: {
type: REQUEST_TYPE,
contentDigest: createContentDigest(i),
},
});
}
} catch (error) {
console.log(error);
}
};