UNPKG

2.35 kBJavaScriptView Raw
1/* temp api until endpoints in openAPI spec
2 TODO update openAPI spec and update `addons` commands
3*/
4const fetch = require('node-fetch')
5
6async function createAddon(settings, netlifyApiToken) {
7 const { siteId, addon, config } = settings
8 const url = `https://api.netlify.com/api/v1/sites/${siteId}/services/${addon}/instances`
9 const response = await fetch(url, {
10 method: 'POST',
11 headers: {
12 'Content-Type': 'application/json',
13 Authorization: `Bearer ${netlifyApiToken}`
14 },
15 body: JSON.stringify({
16 config: config
17 })
18 })
19
20 const data = await response.json()
21
22 if (response.status === 422) {
23 throw new Error(data.error)
24 }
25
26 return data
27}
28
29async function getAddons(siteId, netlifyApiToken) {
30 const url = `https://api.netlify.com/api/v1/sites/${siteId}/service-instances`
31 const response = await fetch(url, {
32 method: 'GET',
33 headers: {
34 'Content-Type': 'application/json',
35 Authorization: `Bearer ${netlifyApiToken}`
36 }
37 })
38
39 const data = await response.json()
40
41 if (response.status === 422) {
42 throw new Error(data.error)
43 }
44
45 return data
46}
47
48async function deleteAddon(settings, netlifyApiToken) {
49 const { siteId, addon, instanceId } = settings
50 const url = `https://api.netlify.com/api/v1/sites/${siteId}/services/${addon}/instances/${instanceId}`
51 const response = await fetch(url, {
52 method: 'DELETE',
53 headers: {
54 'Content-Type': 'application/json',
55 Authorization: `Bearer ${netlifyApiToken}`
56 }
57 })
58
59 if (response.status === 422) {
60 const data = await response.json()
61 throw new Error(data.error)
62 }
63
64 return response
65}
66
67async function updateAddon(settings, netlifyApiToken) {
68 const { siteId, addon, config, instanceId } = settings
69 const url = `https://api.netlify.com/api/v1/sites/${siteId}/services/${addon}/instances/${instanceId}`
70
71 const response = await fetch(url, {
72 method: 'PUT',
73 headers: {
74 'Content-Type': 'application/json',
75 Authorization: `Bearer ${netlifyApiToken}`
76 },
77 body: JSON.stringify({
78 config: config
79 })
80 })
81
82 if (response.status === 422) {
83 const data = await response.json()
84 throw new Error(data.error)
85 }
86
87 return response
88}
89
90module.exports = {
91 getAddons: getAddons,
92 createAddon: createAddon,
93 updateAddon: updateAddon,
94 deleteAddon: deleteAddon
95}