uffizzi-cli 0.5.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +69 -116
  3. data/config/uffizzi.rb +2 -1
  4. data/exe/uffizzi +1 -1
  5. data/lib/uffizzi/auth_helper.rb +3 -8
  6. data/lib/uffizzi/cli/common.rb +2 -2
  7. data/lib/uffizzi/cli/config.rb +38 -12
  8. data/lib/uffizzi/cli/connect.rb +82 -35
  9. data/lib/uffizzi/cli/disconnect.rb +2 -2
  10. data/lib/uffizzi/cli/login.rb +30 -11
  11. data/lib/uffizzi/cli/logout.rb +3 -3
  12. data/lib/uffizzi/cli/preview/service.rb +12 -11
  13. data/lib/uffizzi/cli/preview.rb +70 -127
  14. data/lib/uffizzi/cli/project/compose.rb +22 -26
  15. data/lib/uffizzi/cli/project/secret.rb +25 -14
  16. data/lib/uffizzi/cli/project.rb +33 -9
  17. data/lib/uffizzi/cli.rb +19 -22
  18. data/lib/uffizzi/clients/api/api_client.rb +109 -64
  19. data/lib/uffizzi/clients/api/api_routes.rb +38 -30
  20. data/lib/uffizzi/clients/api/http_client.rb +47 -45
  21. data/lib/uffizzi/config_file.rb +36 -20
  22. data/lib/uffizzi/date_helper.rb +45 -0
  23. data/lib/uffizzi/response_helper.rb +11 -7
  24. data/lib/uffizzi/services/command_service.rb +9 -0
  25. data/lib/uffizzi/services/compose_file_service.rb +3 -0
  26. data/lib/uffizzi/services/preview_service.rb +109 -0
  27. data/lib/uffizzi/shell.rb +7 -4
  28. data/lib/uffizzi/version.rb +1 -1
  29. data/man/uffizzi-config +65 -0
  30. data/man/uffizzi-config.html +144 -0
  31. data/man/uffizzi-config.ronn +55 -0
  32. data/man/uffizzi-connect +37 -0
  33. data/man/uffizzi-connect-acr +35 -0
  34. data/man/uffizzi-connect-acr.ronn +28 -0
  35. data/man/uffizzi-connect-docker-hub +34 -0
  36. data/man/uffizzi-connect-docker-hub.ronn +27 -0
  37. data/man/uffizzi-connect-ecr +35 -0
  38. data/man/uffizzi-connect-ecr.ronn +28 -0
  39. data/man/uffizzi-connect-gcr +40 -0
  40. data/man/uffizzi-connect-gcr.ronn +32 -0
  41. data/man/uffizzi-connect-ghcr +35 -0
  42. data/man/uffizzi-connect-ghcr.ronn +28 -0
  43. data/man/uffizzi-connect.ronn +31 -0
  44. data/man/uffizzi-disconnect +37 -0
  45. data/man/uffizzi-disconnect.ronn +31 -0
  46. data/man/uffizzi-login +2 -2
  47. data/man/uffizzi-login.ronn +2 -2
  48. data/man/uffizzi-preview-update +34 -0
  49. data/man/uffizzi-preview-update.ronn +33 -0
  50. data/man/uffizzi-project-set-default +34 -0
  51. data/man/uffizzi-project-set-default.html +111 -0
  52. data/man/uffizzi-project-set-default.ronn +26 -0
  53. metadata +26 -2
@@ -5,37 +5,46 @@ require 'uffizzi/auth_helper'
5
5
  require 'uffizzi/response_helper'
6
6
 
7
7
  module Uffizzi
8
- class CLI::Project < Thor
8
+ class Cli::Project < Thor
9
9
  include ApiClient
10
10
 
11
- desc 'compose', 'compose'
11
+ desc 'compose', 'Manage the compose file for a project'
12
12
  method_option :file, required: false, aliases: '-f'
13
13
  require_relative 'project/compose'
14
- subcommand 'compose', Uffizzi::CLI::Project::Compose
14
+ subcommand 'compose', Uffizzi::Cli::Project::Compose
15
15
 
16
- desc 'secret', 'Secrets Actions'
16
+ desc 'secret', 'Manage secrets for a project'
17
17
  require_relative 'project/secret'
18
- subcommand 'secret', Uffizzi::CLI::Project::Secret
18
+ subcommand 'secret', Uffizzi::Cli::Project::Secret
19
19
 
20
- desc 'list', 'list'
20
+ desc 'list', 'List all projects in the account'
21
21
  def list
22
22
  run('list')
23
23
  end
24
24
 
25
+ desc 'set-default PROJECT_SLUG', 'set-default'
26
+ def set_default(project_slug)
27
+ run('set-default', project_slug: project_slug)
28
+ end
29
+
30
+ map('set-default' => :set_default)
31
+
25
32
  private
26
33
 
27
- def run(command)
34
+ def run(command, project_slug: nil)
28
35
  return Uffizzi.ui.say('You are not logged in.') unless Uffizzi::AuthHelper.signed_in?
29
36
 
30
37
  case command
31
38
  when 'list'
32
39
  handle_list_command
40
+ when 'set-default'
41
+ handle_set_default_command(project_slug)
33
42
  end
34
43
  end
35
44
 
36
45
  def handle_list_command
37
- hostname = ConfigFile.read_option(:hostname)
38
- response = fetch_projects(hostname)
46
+ server = ConfigFile.read_option(:server)
47
+ response = fetch_projects(server)
39
48
 
40
49
  if ResponseHelper.ok?(response)
41
50
  handle_succeed_response(response)
@@ -52,6 +61,21 @@ module Uffizzi
52
61
  print_projects(projects)
53
62
  end
54
63
 
64
+ def handle_set_default_command(project_slug)
65
+ response = describe_project(ConfigFile.read_option(:server), project_slug)
66
+
67
+ if ResponseHelper.ok?(response)
68
+ handle_succeed_set_default_response(response)
69
+ else
70
+ ResponseHelper.handle_failed_response(response)
71
+ end
72
+ end
73
+
74
+ def handle_succeed_set_default_response(response)
75
+ set_default_project(response[:body][:project])
76
+ Uffizzi.ui.say('Default project has been updated.')
77
+ end
78
+
55
79
  def print_projects(projects)
56
80
  projects_list = projects.reduce('') do |acc, project|
57
81
  "#{acc}#{project[:slug]}\n"
data/lib/uffizzi/cli.rb CHANGED
@@ -3,57 +3,51 @@
3
3
  require 'uffizzi'
4
4
 
5
5
  module Uffizzi
6
- class CLI < Thor
6
+ class Cli < Thor
7
+ class_option :project, type: :string
8
+
7
9
  def self.exit_on_failure?
8
10
  true
9
11
  end
10
12
 
11
- desc 'version', 'show version'
13
+ desc 'version', 'Print version information for uffizzi CLI'
12
14
  def version
13
15
  require_relative 'version'
14
16
  Uffizzi.ui.say(Uffizzi::VERSION)
15
17
  end
16
18
 
17
- desc 'login [OPTIONS]', 'Login into Uffizzi'
18
- method_option :user, required: true, aliases: '-u'
19
- method_option :hostname, required: true
19
+ desc 'login [OPTIONS]', 'Login to Uffizzi to view and manage your previews'
20
+ method_option :server, required: false, aliases: '-s'
21
+ method_option :username, required: false, aliases: '-u'
20
22
  def login
21
23
  require_relative 'cli/login'
22
24
  Login.new(options).run
23
25
  end
24
26
 
25
- desc 'logout', 'Logout from Uffizzi'
27
+ desc 'logout', 'Log out of a Uffizzi user account'
26
28
  def logout
27
29
  require_relative 'cli/logout'
28
30
  Logout.new(options).run
29
31
  end
30
32
 
31
- desc 'projects', 'projects'
32
- def projects
33
- require_relative 'cli/projects'
34
- Projects.new.run
35
- end
36
-
37
33
  desc 'project', 'project'
38
34
  require_relative 'cli/project'
39
- subcommand 'project', CLI::Project
35
+ subcommand 'project', Cli::Project
40
36
 
41
37
  desc 'config', 'config'
42
38
  require_relative 'cli/config'
43
- subcommand 'config', CLI::Config
39
+ subcommand 'config', Cli::Config
44
40
 
45
41
  desc 'preview', 'preview'
46
42
  method_option :project, required: false
47
43
  require_relative 'cli/preview'
48
- subcommand 'preview', CLI::Preview
44
+ subcommand 'preview', Cli::Preview
49
45
 
50
- desc 'connect CREDENTIAL_TYPE', 'Connect credentials into Uffizzi'
51
- def connect(credential_type, credential_file_path = nil)
52
- require_relative 'cli/connect'
53
- Connect.new.run(credential_type, credential_file_path)
54
- end
46
+ desc 'connect', 'connect'
47
+ require_relative 'cli/connect'
48
+ subcommand 'connect', Cli::Connect
55
49
 
56
- desc 'disconect CREDENTIAL_TYPE', 'Disonnect credentials from Uffizzi'
50
+ desc 'disconect CREDENTIAL_TYPE', 'Revoke a Uffizzi user account access to external services'
57
51
  def disconnect(credential_type)
58
52
  require_relative 'cli/disconnect'
59
53
  Disconnect.new.run(credential_type)
@@ -62,11 +56,14 @@ module Uffizzi
62
56
  class << self
63
57
  protected
64
58
 
59
+ require_relative 'cli/common'
65
60
  def dispatch(meth, given_args, given_opts, config)
66
61
  args, opts = Thor::Options.split(given_args)
67
- return Cli::Common.show_manual(filename(args)) if show_help?(args, opts)
62
+ return Common.show_manual(filename(args)) if show_help?(args, opts)
68
63
 
69
64
  super
65
+ rescue SystemExit, Interrupt, SocketError
66
+ raise Uffizzi::Error.new('The command was interrupted')
70
67
  end
71
68
 
72
69
  private
@@ -6,155 +6,199 @@ require_relative 'http_client'
6
6
  module ApiClient
7
7
  include ApiRoutes
8
8
 
9
- def create_session(hostname, params = {})
10
- uri = session_uri(hostname)
11
- response = Uffizzi::HttpClient.make_post_request(uri, params, false)
9
+ def create_session(server, params = {})
10
+ uri = session_uri(server)
11
+ response = http_client.make_post_request(uri, params)
12
12
 
13
13
  build_response(response)
14
14
  end
15
15
 
16
- def destroy_session(hostname)
17
- uri = session_uri(hostname)
18
- response = Uffizzi::HttpClient.make_delete_request(uri)
16
+ def destroy_session(server)
17
+ uri = session_uri(server)
18
+ response = http_client.make_delete_request(uri)
19
19
 
20
20
  build_response(response)
21
21
  end
22
22
 
23
- def fetch_projects(hostname)
24
- uri = projects_uri(hostname)
25
- response = Uffizzi::HttpClient.make_get_request(uri)
23
+ def fetch_projects(server)
24
+ uri = projects_uri(server)
25
+ response = http_client.make_get_request(uri)
26
26
 
27
27
  build_response(response)
28
28
  end
29
29
 
30
- def create_credential(hostname, params)
31
- uri = credentials_uri(hostname)
32
- response = Uffizzi::HttpClient.make_post_request(uri, params)
30
+ def fetch_credentials(server)
31
+ uri = credentials_uri(server)
32
+
33
+ response = http_client.make_get_request(uri)
34
+
35
+ build_response(response)
36
+ end
37
+
38
+ def check_credential(server, type)
39
+ uri = check_credential_uri(server, type)
40
+ response = http_client.make_get_request(uri)
33
41
 
34
42
  build_response(response)
35
43
  end
36
44
 
37
- def fetch_deployment_services(hostname, project_slug, deployment_id)
38
- uri = preview_services_uri(hostname, project_slug, deployment_id)
39
- response = Uffizzi::HttpClient.make_get_request(uri)
45
+ def describe_project(server, project_slug)
46
+ uri = project_uri(server, project_slug)
47
+ response = http_client.make_get_request(uri)
40
48
 
41
49
  build_response(response)
42
50
  end
43
51
 
44
- def delete_credential(hostname, credential_type)
45
- uri = delete_credential_uri(hostname, credential_type)
46
- response = Uffizzi::HttpClient.make_delete_request(uri)
52
+ def create_credential(server, params)
53
+ uri = credentials_uri(server)
54
+ response = http_client.make_post_request(uri, params)
47
55
 
48
56
  build_response(response)
49
57
  end
50
58
 
51
- def fetch_deployment_service_logs(hostname, project_slug, deployment_id, container_name)
52
- uri = preview_service_logs_uri(hostname, project_slug, deployment_id, container_name)
53
- response = Uffizzi::HttpClient.make_get_request(uri)
59
+ def fetch_deployment_services(server, project_slug, deployment_id)
60
+ uri = preview_services_uri(server, project_slug, deployment_id)
61
+ response = http_client.make_get_request(uri)
54
62
 
55
63
  build_response(response)
56
64
  end
57
65
 
58
- def set_compose_file(hostname, params, project_slug)
59
- uri = compose_file_uri(hostname, project_slug)
60
- response = Uffizzi::HttpClient.make_post_request(uri, params)
66
+ def delete_credential(server, credential_type)
67
+ uri = delete_credential_uri(server, credential_type)
68
+ response = http_client.make_delete_request(uri)
61
69
 
62
70
  build_response(response)
63
71
  end
64
72
 
65
- def unset_compose_file(hostname, project_slug)
66
- uri = compose_file_uri(hostname, project_slug)
67
- response = Uffizzi::HttpClient.make_delete_request(uri)
73
+ def fetch_deployment_service_logs(server, project_slug, deployment_id, container_name)
74
+ uri = preview_service_logs_uri(server, project_slug, deployment_id, container_name)
75
+ response = http_client.make_get_request(uri)
68
76
 
69
77
  build_response(response)
70
78
  end
71
79
 
72
- def fetch_secrets(hostname, project_slug)
73
- uri = secrets_uri(hostname, project_slug)
74
- response = Uffizzi::HttpClient.make_get_request(uri)
80
+ def set_compose_file(server, params, project_slug)
81
+ uri = compose_file_uri(server, project_slug)
82
+ response = http_client.make_post_request(uri, params)
75
83
 
76
84
  build_response(response)
77
85
  end
78
86
 
79
- def bulk_create_secrets(hostname, project_slug, params)
80
- uri = "#{secrets_uri(hostname, project_slug)}/bulk_create"
81
- response = Uffizzi::HttpClient.make_post_request(uri, params)
87
+ def unset_compose_file(server, project_slug)
88
+ uri = compose_file_uri(server, project_slug)
89
+ response = http_client.make_delete_request(uri)
82
90
 
83
91
  build_response(response)
84
92
  end
85
93
 
86
- def delete_secret(hostname, project_slug, id)
87
- uri = secret_uri(hostname, project_slug, id)
88
- response = Uffizzi::HttpClient.make_delete_request(uri)
94
+ def fetch_secrets(server, project_slug)
95
+ uri = secrets_uri(server, project_slug)
96
+ response = http_client.make_get_request(uri)
89
97
 
90
98
  build_response(response)
91
99
  end
92
100
 
93
- def describe_compose_file(hostname, project_slug)
94
- uri = compose_file_uri(hostname, project_slug)
95
- response = Uffizzi::HttpClient.make_get_request(uri)
101
+ def bulk_create_secrets(server, project_slug, params)
102
+ uri = "#{secrets_uri(server, project_slug)}/bulk_create"
103
+ response = http_client.make_post_request(uri, params)
96
104
 
97
105
  build_response(response)
98
106
  end
99
107
 
100
- def validate_compose_file(hostname, project_slug)
101
- uri = validate_compose_file_uri(hostname, project_slug)
102
- response = Uffizzi::HttpClient.make_get_request(uri)
108
+ def delete_secret(server, project_slug, id)
109
+ uri = secret_uri(server, project_slug, id)
110
+ response = http_client.make_delete_request(uri)
103
111
 
104
112
  build_response(response)
105
113
  end
106
114
 
107
- def fetch_deployments(hostname, project_slug)
108
- uri = deployments_uri(hostname, project_slug)
109
- response = Uffizzi::HttpClient.make_get_request(uri)
115
+ def describe_compose_file(server, project_slug)
116
+ uri = compose_file_uri(server, project_slug)
117
+ response = http_client.make_get_request(uri)
110
118
 
111
119
  build_response(response)
112
120
  end
113
121
 
114
- def create_deployment(hostname, project_slug, params)
115
- uri = deployments_uri(hostname, project_slug)
116
- response = Uffizzi::HttpClient.make_post_request(uri, params)
122
+ def validate_compose_file(server, project_slug)
123
+ uri = validate_compose_file_uri(server, project_slug)
124
+ response = http_client.make_get_request(uri)
117
125
 
118
126
  build_response(response)
119
127
  end
120
128
 
121
- def delete_deployment(hostname, project_slug, deployment_id)
122
- uri = deployment_uri(hostname, project_slug, deployment_id)
123
- response = Uffizzi::HttpClient.make_delete_request(uri)
129
+ def fetch_deployments(server, project_slug)
130
+ uri = deployments_uri(server, project_slug)
131
+ response = http_client.make_get_request(uri)
124
132
 
125
133
  build_response(response)
126
134
  end
127
135
 
128
- def describe_deployment(hostname, project_slug, deployment_id)
129
- uri = deployment_uri(hostname, project_slug, deployment_id)
130
- response = Uffizzi::HttpClient.make_get_request(uri)
136
+ def create_deployment(server, project_slug, params)
137
+ uri = deployments_uri(server, project_slug)
138
+ response = http_client.make_post_request(uri, params)
131
139
 
132
140
  build_response(response)
133
141
  end
134
142
 
135
- def fetch_events(hostname, project_slug, deployment_id)
136
- uri = events_uri(hostname, project_slug, deployment_id)
137
- response = Uffizzi::HttpClient.make_get_request(uri)
143
+ def update_deployment(server, project_slug, deployment_id, params)
144
+ uri = deployment_uri(server, project_slug, deployment_id)
145
+ response = http_client.make_put_request(uri, params)
138
146
 
139
147
  build_response(response)
140
148
  end
141
149
 
142
- def get_activity_items(hostname, project_slug, deployment_id)
143
- uri = activity_items_uri(hostname, project_slug, deployment_id)
144
- response = Uffizzi::HttpClient.make_get_request(uri)
150
+ def delete_deployment(server, project_slug, deployment_id)
151
+ uri = deployment_uri(server, project_slug, deployment_id)
152
+ response = http_client.make_delete_request(uri)
145
153
 
146
154
  build_response(response)
147
155
  end
148
156
 
149
- def deploy_containers(hostname, project_slug, deployment_id, params)
150
- uri = deploy_containers_uri(hostname, project_slug, deployment_id)
151
- response = Uffizzi::HttpClient.make_post_request(uri, params)
157
+ def describe_deployment(server, project_slug, deployment_id)
158
+ uri = deployment_uri(server, project_slug, deployment_id)
159
+ response = http_client.make_get_request(uri)
160
+
161
+ build_response(response)
162
+ end
163
+
164
+ def fetch_events(server, project_slug, deployment_id)
165
+ uri = events_uri(server, project_slug, deployment_id)
166
+ response = http_client.make_get_request(uri)
167
+
168
+ build_response(response)
169
+ end
170
+
171
+ def get_activity_items(server, project_slug, deployment_id)
172
+ uri = activity_items_uri(server, project_slug, deployment_id)
173
+ response = http_client.make_get_request(uri)
174
+
175
+ build_response(response)
176
+ end
177
+
178
+ def deploy_containers(server, project_slug, deployment_id, params)
179
+ uri = deploy_containers_uri(server, project_slug, deployment_id)
180
+ response = http_client.make_post_request(uri, params)
152
181
 
153
182
  build_response(response)
154
183
  end
155
184
 
156
185
  private
157
186
 
187
+ def http_client
188
+ if @http_client.nil?
189
+ params = {}
190
+ if Uffizzi::ConfigFile.exists?
191
+ params[:cookie] = Uffizzi::ConfigFile.read_option(:cookie)
192
+ params[:basic_auth_user] = Uffizzi::ConfigFile.read_option(:basic_auth_user)
193
+ params[:basic_auth_password] = Uffizzi::ConfigFile.read_option(:basic_auth_password)
194
+ end
195
+
196
+ @http_client = Uffizzi::HttpClient.new(params[:cookie], params[:basic_auth_user], params[:basic_auth_password])
197
+ end
198
+
199
+ @http_client
200
+ end
201
+
158
202
  def build_response(response)
159
203
  {
160
204
  body: response_body(response),
@@ -164,7 +208,7 @@ module ApiClient
164
208
  end
165
209
 
166
210
  def response_body(response)
167
- return nil if response.body.nil?
211
+ return nil if response.body.nil? || response.body.empty?
168
212
 
169
213
  JSON.parse(response.body, symbolize_names: true)
170
214
  rescue JSON::ParserError
@@ -178,6 +222,7 @@ module ApiClient
178
222
  cookie_content = cookies.first
179
223
  cookie = cookie_content.split(';').first
180
224
  Uffizzi::ConfigFile.rewrite_cookie(cookie) if Uffizzi::ConfigFile.exists?
225
+ http_client.auth_cookie = cookie
181
226
 
182
227
  cookie
183
228
  end
@@ -3,64 +3,72 @@
3
3
  require 'cgi'
4
4
 
5
5
  module ApiRoutes
6
- def compose_file_uri(hostname, project_slug)
7
- "#{hostname}/api/cli/v1/projects/#{project_slug}/compose_file"
6
+ def compose_file_uri(server, project_slug)
7
+ "#{server}/api/cli/v1/projects/#{project_slug}/compose_file"
8
8
  end
9
9
 
10
- def projects_uri(hostname)
11
- "#{hostname}/api/cli/v1/projects"
10
+ def project_uri(server, project_slug)
11
+ "#{server}/api/cli/v1/projects/#{project_slug}"
12
12
  end
13
13
 
14
- def secret_uri(hostname, project_slug, id)
14
+ def projects_uri(server)
15
+ "#{server}/api/cli/v1/projects"
16
+ end
17
+
18
+ def secret_uri(server, project_slug, id)
15
19
  path_id = CGI.escape(id)
16
- "#{hostname}/api/cli/v1/projects/#{project_slug}/secrets/#{path_id}"
20
+ "#{server}/api/cli/v1/projects/#{project_slug}/secrets/#{path_id}"
21
+ end
22
+
23
+ def secrets_uri(server, project_slug)
24
+ "#{server}/api/cli/v1/projects/#{project_slug}/secrets"
17
25
  end
18
26
 
19
- def secrets_uri(hostname, project_slug)
20
- "#{hostname}/api/cli/v1/projects/#{project_slug}/secrets"
27
+ def session_uri(server)
28
+ "#{server}/api/cli/v1/session"
21
29
  end
22
30
 
23
- def session_uri(hostname)
24
- "#{hostname}/api/cli/v1/session"
31
+ def validate_compose_file_uri(server, project_slug)
32
+ "#{compose_files_uri(server, project_slug)}/validate"
25
33
  end
26
34
 
27
- def validate_compose_file_uri(hostname, project_slug)
28
- "#{compose_files_uri(hostname, project_slug)}/validate"
35
+ def deployments_uri(server, project_slug)
36
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments"
29
37
  end
30
38
 
31
- def deployments_uri(hostname, project_slug)
32
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments"
39
+ def deployment_uri(server, project_slug, deployment_id)
40
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}"
33
41
  end
34
42
 
35
- def deployment_uri(hostname, project_slug, deployment_id)
36
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}"
43
+ def activity_items_uri(server, project_slug, deployment_id)
44
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/activity_items"
37
45
  end
38
46
 
39
- def activity_items_uri(hostname, project_slug, deployment_id)
40
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/activity_items"
47
+ def deploy_containers_uri(server, project_slug, deployment_id)
48
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/deploy_containers"
41
49
  end
42
50
 
43
- def deploy_containers_uri(hostname, project_slug, deployment_id)
44
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/deploy_containers"
51
+ def events_uri(server, project_slug, deployment_id)
52
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/events"
45
53
  end
46
54
 
47
- def events_uri(hostname, project_slug, deployment_id)
48
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/events"
55
+ def check_credential_uri(server, type)
56
+ "#{server}/api/cli/v1/account/credentials/#{type}/check_credential"
49
57
  end
50
58
 
51
- def credentials_uri(hostname)
52
- "#{hostname}/api/cli/v1/account/credentials"
59
+ def credentials_uri(server)
60
+ "#{server}/api/cli/v1/account/credentials"
53
61
  end
54
62
 
55
- def preview_services_uri(hostname, project_slug, deployment_id)
56
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers"
63
+ def preview_services_uri(server, project_slug, deployment_id)
64
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers"
57
65
  end
58
66
 
59
- def delete_credential_uri(hostname, credential_type)
60
- "#{hostname}/api/cli/v1/account/credentials/#{credential_type}"
67
+ def delete_credential_uri(server, credential_type)
68
+ "#{server}/api/cli/v1/account/credentials/#{credential_type}"
61
69
  end
62
70
 
63
- def preview_service_logs_uri(hostname, project_slug, deployment_id, container_name)
64
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers/#{container_name}/logs"
71
+ def preview_service_logs_uri(server, project_slug, deployment_id, container_name)
72
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers/#{container_name}/logs"
65
73
  end
66
74
  end
@@ -2,67 +2,69 @@
2
2
 
3
3
  require 'net/http'
4
4
  require 'json'
5
- require 'uffizzi/config_file'
6
- require 'uffizzi/response_helper'
7
5
 
8
6
  module Uffizzi
9
7
  class HttpClient
10
- class << self
11
- def make_get_request(request_uri, cookies_required = true)
12
- make_request(:get, request_uri, cookies_required)
13
- end
8
+ attr_accessor :auth_cookie, :basic_auth_user, :basic_auth_password
14
9
 
15
- def make_post_request(request_uri, params = {}, cookies_required = true)
16
- make_request(:post, request_uri, cookies_required, params)
17
- end
10
+ def initialize(auth_cookie, basic_auth_user, basic_auth_password)
11
+ @auth_cookie = auth_cookie
12
+ @basic_auth_user = basic_auth_user
13
+ @basic_auth_password = basic_auth_password
14
+ end
18
15
 
19
- def make_put_request(request_uri, cookies_required = true)
20
- make_request(:put, request_uri, cookies_required)
21
- end
16
+ def make_get_request(request_uri)
17
+ make_request(:get, request_uri)
18
+ end
22
19
 
23
- def make_delete_request(request_uri, cookies_required = true)
24
- make_request(:delete, request_uri, cookies_required)
25
- end
20
+ def make_post_request(request_uri, params = {})
21
+ make_request(:post, request_uri, params)
22
+ end
26
23
 
27
- private
24
+ def make_put_request(request_uri, params = {})
25
+ make_request(:put, request_uri, params)
26
+ end
28
27
 
29
- def make_request(method, request_uri, require_cookies, params = {})
30
- uri = URI(request_uri)
31
- use_ssl = request_uri.start_with?('https')
28
+ def make_delete_request(request_uri)
29
+ make_request(:delete, request_uri)
30
+ end
32
31
 
33
- response = Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
34
- request = build_request(uri, params, method, require_cookies)
32
+ private
35
33
 
36
- http.request(request)
37
- end
34
+ def make_request(method, request_uri, params = {})
35
+ uri = URI(request_uri)
36
+ use_ssl = request_uri.start_with?('https')
38
37
 
39
- raise Uffizzi::Error.new('Not authorized') if response.is_a?(Net::HTTPUnauthorized)
38
+ response = Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http|
39
+ request = build_request(uri, params, method)
40
40
 
41
- response
41
+ http.request(request)
42
42
  end
43
43
 
44
- def build_request(uri, params, method, require_cookies)
45
- headers = { 'Content-Type' => 'application/json' }
46
- request = case method
47
- when :get
48
- Net::HTTP::Get.new(uri.path, headers)
49
- when :post
50
- Net::HTTP::Post.new(uri.path, headers)
51
- when :delete
52
- Net::HTTP::Delete.new(uri.path, headers)
53
- when :put
54
- Net::HTTP::Put.new(uri.path, headers)
55
- end
56
- if request.instance_of?(Net::HTTP::Post)
57
- request.body = params.to_json
58
- end
59
- request['Cookie'] = ConfigFile.read_option(:cookie) if require_cookies
60
- if ConfigFile.exists? && ConfigFile.option_exists?(:basic_auth_user) && ConfigFile.option_exists?(:basic_auth_password)
61
- request.basic_auth(ConfigFile.read_option(:basic_auth_user), ConfigFile.read_option(:basic_auth_password))
62
- end
44
+ raise Uffizzi::Error.new('Not authorized') if response.is_a?(Net::HTTPUnauthorized)
45
+
46
+ response
47
+ end
63
48
 
64
- request
49
+ def build_request(uri, params, method)
50
+ headers = { 'Content-Type' => 'application/json' }
51
+ request = case method
52
+ when :get
53
+ Net::HTTP::Get.new(uri.path, headers)
54
+ when :post
55
+ Net::HTTP::Post.new(uri.path, headers)
56
+ when :delete
57
+ Net::HTTP::Delete.new(uri.path, headers)
58
+ when :put
59
+ Net::HTTP::Put.new(uri.path, headers)
60
+ end
61
+ if request.instance_of?(Net::HTTP::Post) || request.instance_of?(Net::HTTP::Put)
62
+ request.body = params.to_json
65
63
  end
64
+ request['Cookie'] = @auth_cookie
65
+ request.basic_auth(@basic_auth_user, @basic_auth_password)
66
+
67
+ request
66
68
  end
67
69
  end
68
70
  end