UNPKG

2.16 kBJavaScriptView Raw
1/* @flow */
2'use strict'
3
4/* ::
5import type {
6 BlinkMRCServer
7} from '../types.js'
8*/
9
10const request = require('request')
11
12const scope = require('./scope.js')
13
14function assumeAWSRole(
15 config /* : BlinkMRCServer */,
16 pathname /* : string */,
17 accessToken /* : string | void */
18) /* : Promise<Object> */ {
19 const serverCLIServiceConfig = scope.serverCLIServiceConfig(config)
20 return new Promise((resolve, reject) => {
21 request.post(
22 `${serverCLIServiceConfig.origin}${pathname}`,
23 {
24 auth: {
25 bearer: accessToken
26 },
27 json: true
28 },
29 (err, response, body) => {
30 if (err) {
31 return reject(err)
32 }
33 if (response.statusCode !== 200) {
34 return reject(
35 new Error(
36 body && body.message
37 ? body.message
38 : 'Unknown error, please try again and contact support if the problem persists'
39 )
40 )
41 }
42 return resolve(body)
43 }
44 )
45 }).then(body => ({
46 accessKeyId: body.Credentials.AccessKeyId,
47 secretAccessKey: body.Credentials.SecretAccessKey,
48 sessionToken: body.Credentials.SessionToken
49 }))
50}
51
52function assumeAWSRoleToDeploy(
53 config /* : BlinkMRCServer */,
54 env /* : string */,
55 accessToken /* : string | void */
56) /* : Promise<Object> */ {
57 return assumeAWSRole(
58 config,
59 `/v2/apis/${config.project || ''}/environments/${env}/credentials/deploy`,
60 accessToken
61 )
62}
63
64function assumeAWSRoleToViewLogs(
65 config /* : BlinkMRCServer */,
66 env /* : string */,
67 accessToken /* : string | void */
68) /* : Promise<Object> */ {
69 return assumeAWSRole(
70 config,
71 `/apis/${config.project || ''}/environments/${env}/credentials/logs`,
72 accessToken
73 )
74}
75
76function assumeAWSRoleToServeLocally(
77 config /* : BlinkMRCServer */,
78 env /* : string */,
79 accessToken /* : string | void */
80) /* : Promise<Object> */ {
81 return assumeAWSRole(
82 config,
83 `/apis/${config.project || ''}/environments/${env}/credentials/serve`,
84 accessToken
85 )
86}
87
88module.exports = {
89 assumeAWSRoleToDeploy,
90 assumeAWSRoleToViewLogs,
91 assumeAWSRoleToServeLocally
92}