1 | url = require 'url'
|
2 | request = require 'request'
|
3 | debug = require('debug')('deploy-state-util:service')
|
4 |
|
5 | class DeployStateService
|
6 | constructor: ({ config }) ->
|
7 | @deployStateUri = url.format {
|
8 | hostname: config['deploy-state'].hostname,
|
9 | protocol: 'https',
|
10 | slashes: true,
|
11 | }
|
12 | @auth = {
|
13 | username: config['deploy-state'].username,
|
14 | password: config['deploy-state'].password,
|
15 | }
|
16 |
|
17 | setState: ({ repo, owner, tag, state, passing, type }, callback) =>
|
18 | value = 'failed'
|
19 | value = 'passed' if passing
|
20 | options =
|
21 | baseUrl: @deployStateUri
|
22 | uri: "/deployments/#{owner}/#{repo}/#{tag}/#{type}/#{state}/#{value}"
|
23 | auth: @auth,
|
24 |
|
25 | debug 'set state options', options
|
26 | request.put options, (error, response) =>
|
27 | debug 'set state', { error }
|
28 | return callback error if error?
|
29 | if response.statusCode > 499
|
30 | return callback new Error 'Fatal error from deploy state service'
|
31 | callback null
|
32 |
|
33 | getStatus: ({ owner, repo, tag }, callback) =>
|
34 | options =
|
35 | baseUrl: @deployStateUri
|
36 | uri: "/deployments/#{owner}/#{repo}/#{tag}"
|
37 | auth: @auth,
|
38 | json: true
|
39 | debug 'get status options', options
|
40 | request.get options, (error, response, body) =>
|
41 | debug 'got status', { body, error }
|
42 | return callback error if error?
|
43 | if response.statusCode > 499
|
44 | return callback new Error 'Fatal error from deploy state service'
|
45 | if response.statusCode == 404
|
46 | return callback null
|
47 | callback null, body
|
48 |
|
49 | getList: ({ owner, repo }, callback) =>
|
50 | options =
|
51 | baseUrl: @deployStateUri
|
52 | uri: "/deployments/#{owner}/#{repo}"
|
53 | auth: @auth,
|
54 | json: true
|
55 | debug 'get list options', options
|
56 | request.get options, (error, response, body) =>
|
57 | return callback error if error?
|
58 | if response.statusCode > 499
|
59 | return callback new Error 'Fatal error from deploy state service'
|
60 | callback null, body
|
61 |
|
62 | module.exports = DeployStateService
|