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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# frozen_string_literal: true
module API
module Admin
module Ci
class Variables < ::API::Base
include PaginationParams
before { authenticated_as_admin! }
namespace 'admin' do
namespace 'ci' do
namespace 'variables' do
desc 'Get instance-level variables' do
success Entities::Ci::Variable
end
params do
use :pagination
end
get '/' do
variables = ::Ci::InstanceVariable.all
present paginate(variables), with: Entities::Ci::Variable
end
desc 'Get a specific variable from a group' do
success Entities::Ci::Variable
end
params do
requires :key, type: String, desc: 'The key of the variable'
end
get ':key' do
key = params[:key]
variable = ::Ci::InstanceVariable.find_by_key(key)
break not_found!('InstanceVariable') unless variable
present variable, with: Entities::Ci::Variable
end
desc 'Create a new instance-level variable' do
success Entities::Ci::Variable
end
params do
requires :key,
type: String,
desc: 'The key of the variable'
requires :value,
type: String,
desc: 'The value of the variable'
optional :protected,
type: String,
desc: 'Whether the variable is protected'
optional :masked,
type: String,
desc: 'Whether the variable is masked'
optional :variable_type,
type: String,
values: ::Ci::InstanceVariable.variable_types.keys,
desc: 'The type of variable, must be one of env_var or file. Defaults to env_var'
end
post '/' do
variable_params = declared_params(include_missing: false)
variable = ::Ci::InstanceVariable.new(variable_params)
if variable.save
present variable, with: Entities::Ci::Variable
else
render_validation_error!(variable)
end
end
desc 'Update an existing instance-variable' do
success Entities::Ci::Variable
end
params do
optional :key,
type: String,
desc: 'The key of the variable'
optional :value,
type: String,
desc: 'The value of the variable'
optional :protected,
type: String,
desc: 'Whether the variable is protected'
optional :masked,
type: String,
desc: 'Whether the variable is masked'
optional :variable_type,
type: String,
values: ::Ci::InstanceVariable.variable_types.keys,
desc: 'The type of variable, must be one of env_var or file'
end
put ':key' do
variable = ::Ci::InstanceVariable.find_by_key(params[:key])
break not_found!('InstanceVariable') unless variable
variable_params = declared_params(include_missing: false).except(:key)
if variable.update(variable_params)
present variable, with: Entities::Ci::Variable
else
render_validation_error!(variable)
end
end
desc 'Delete an existing instance-level variable' do
success Entities::Ci::Variable
end
params do
requires :key, type: String, desc: 'The key of the variable'
end
delete ':key' do
variable = ::Ci::InstanceVariable.find_by_key(params[:key])
not_found!('InstanceVariable') unless variable
variable.destroy
no_content!
end
end
end
end
end
end
end
end
|