uffizzi-cli 0.5.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) 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 +3 -3
  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 +108 -63
  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/lib/uffizzi.rb +4 -0
  30. data/man/uffizzi-config +65 -0
  31. data/man/uffizzi-config.html +144 -0
  32. data/man/uffizzi-config.ronn +55 -0
  33. data/man/uffizzi-connect +37 -0
  34. data/man/uffizzi-connect-acr +35 -0
  35. data/man/uffizzi-connect-acr.ronn +28 -0
  36. data/man/uffizzi-connect-docker-hub +34 -0
  37. data/man/uffizzi-connect-docker-hub.ronn +27 -0
  38. data/man/uffizzi-connect-ecr +35 -0
  39. data/man/uffizzi-connect-ecr.ronn +28 -0
  40. data/man/uffizzi-connect-gcr +40 -0
  41. data/man/uffizzi-connect-gcr.ronn +32 -0
  42. data/man/uffizzi-connect-ghcr +35 -0
  43. data/man/uffizzi-connect-ghcr.ronn +28 -0
  44. data/man/uffizzi-connect.ronn +31 -0
  45. data/man/uffizzi-disconnect +37 -0
  46. data/man/uffizzi-disconnect.ronn +31 -0
  47. data/man/uffizzi-login +2 -2
  48. data/man/uffizzi-login.ronn +2 -2
  49. data/man/uffizzi-preview-update +34 -0
  50. data/man/uffizzi-preview-update.ronn +33 -0
  51. data/man/uffizzi-project-set-default +34 -0
  52. data/man/uffizzi-project-set-default.html +111 -0
  53. data/man/uffizzi-project-set-default.ronn +26 -0
  54. 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
+
27
+ build_response(response)
28
+ end
29
+
30
+ def fetch_credentials(server)
31
+ uri = credentials_uri(server)
32
+
33
+ response = http_client.make_get_request(uri)
26
34
 
27
35
  build_response(response)
28
36
  end
29
37
 
30
- def create_credential(hostname, params)
31
- uri = credentials_uri(hostname)
32
- response = Uffizzi::HttpClient.make_post_request(uri, params)
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)
45
+ def describe_project(server, project_slug)
46
+ uri = project_uri(server, project_slug)
39
47
  response = Uffizzi::HttpClient.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)
153
+
154
+ build_response(response)
155
+ end
156
+
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)
145
167
 
146
168
  build_response(response)
147
169
  end
148
170
 
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)
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