diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-04-21 18:56:10 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-04-22 14:25:28 +0300 |
commit | db03dc318e41f93887f668969dd207268a3168dc (patch) | |
tree | 0cf07b0e339231214dac687af2ab91b7ae7493c9 | |
parent | 759875387cab016897ec17c924ca3cea94c22387 (diff) | |
download | gitlab-ci-refactoring_user_url.tar.gz |
refactoring network related coderefactoring_user_url
-rw-r--r-- | app/controllers/projects_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/user_sessions_controller.rb | 2 | ||||
-rw-r--r-- | app/models/network.rb | 60 | ||||
-rw-r--r-- | app/models/project.rb | 2 | ||||
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | app/models/user_session.rb | 18 | ||||
-rw-r--r-- | app/services/create_project_service.rb | 2 | ||||
-rw-r--r-- | app/views/projects/_gitlab.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/index.html.haml | 2 | ||||
-rw-r--r-- | app/views/user_sessions/show.html.haml | 2 | ||||
-rw-r--r-- | lib/api/forks.rb | 2 | ||||
-rw-r--r-- | lib/api/helpers.rb | 3 | ||||
-rw-r--r-- | spec/controllers/projects_controller_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/network_spec.rb | 4 | ||||
-rw-r--r-- | spec/requests/api/forks_spec.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/projects_spec.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/runners_spec.rb | 2 |
17 files changed, 53 insertions, 60 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index dfeb091..8d6e5b5 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -76,7 +76,7 @@ class ProjectsController < ApplicationController def destroy project.destroy - Network.new.disable_ci(current_user.url, project.gitlab_id, current_user.private_token) + Network.new.disable_ci(project.gitlab_id, current_user.private_token) EventService.new.remove_project(current_user, project) diff --git a/app/controllers/user_sessions_controller.rb b/app/controllers/user_sessions_controller.rb index 891bbb8..5700615 100644 --- a/app/controllers/user_sessions_controller.rb +++ b/app/controllers/user_sessions_controller.rb @@ -18,7 +18,7 @@ class UserSessionsController < ApplicationController token = client.auth_code.get_token(params[:code], redirect_uri: callback_user_sessions_url).token @user_session = UserSession.new - user = @user_session.authenticate(access_token: token, url: GitlabCi.config.gitlab_server.url) + user = @user_session.authenticate(access_token: token) if user && sign_in(user) redirect_to root_path diff --git a/app/models/network.rb b/app/models/network.rb index 631eee6..72eaeed 100644 --- a/app/models/network.rb +++ b/app/models/network.rb @@ -5,38 +5,35 @@ class Network API_PREFIX = '/api/v3/' - def authenticate(url, api_opts) + def authenticate(api_opts) opts = { - body: api_opts.to_json, - headers: { "Content-Type" => "application/json" }, + body: api_opts.to_json } endpoint = File.join(url, API_PREFIX, 'user') - response = self.class.get(endpoint, opts) + response = self.class.get(endpoint, default_opts.merge(opts)) build_response(response) end - def authenticate_by_token(url, api_opts) + def authenticate_by_token(api_opts) opts = { - query: api_opts, - headers: { "Content-Type" => "application/json" }, + query: api_opts } endpoint = File.join(url, API_PREFIX, 'user.json') - response = self.class.get(endpoint, opts) + response = self.class.get(endpoint, default_opts.merge(opts)) build_response(response) end - def projects(url, api_opts, scope = :owned) + def projects(api_opts, scope = :owned) # Dont load archived projects api_opts.merge!(archived: false) opts = { - query: api_opts, - headers: { "Content-Type" => "application/json" }, + query: api_opts } query = if scope == :owned @@ -46,48 +43,45 @@ class Network end endpoint = File.join(url, API_PREFIX, query) - response = self.class.get(endpoint, opts) + response = self.class.get(endpoint, default_opts.merge(opts)) build_response(response) end - def project(url, api_opts, project_id) + def project(api_opts, project_id) opts = { - query: api_opts, - headers: { "Content-Type" => "application/json" }, + query: api_opts } query = "projects/#{project_id}.json" endpoint = File.join(url, API_PREFIX, query) - response = self.class.get(endpoint, opts) + response = self.class.get(endpoint, default_opts.merge(opts)) build_response(response) end - def project_hooks(url, api_opts, project_id) + def project_hooks(api_opts, project_id) opts = { - query: api_opts, - headers: { "Content-Type" => "application/json" }, + query: api_opts } query = "projects/#{project_id}/hooks.json" endpoint = File.join(url, API_PREFIX, query) - response = self.class.get(endpoint, opts) + response = self.class.get(endpoint, default_opts.merge(opts)) build_response(response) end - def enable_ci(url, project_id, ci_opts, token) + def enable_ci(project_id, api_opts, token) opts = { - body: ci_opts.to_json, - headers: { "Content-Type" => "application/json" }, + body: api_opts.to_json } query = "projects/#{project_id}/services/gitlab-ci.json?private_token=#{token}" endpoint = File.join(url, API_PREFIX, query) - response = self.class.put(endpoint, opts) + response = self.class.put(endpoint, default_opts.merge(opts)) case response.code when 200 @@ -99,21 +93,27 @@ class Network end end - def disable_ci(url, project_id, token) - opts = { - headers: { "Content-Type" => "application/json" }, - } - + def disable_ci(project_id, token) query = "projects/#{project_id}/services/gitlab-ci.json?private_token=#{token}" endpoint = File.join(url, API_PREFIX, query) - response = self.class.delete(endpoint, opts) + response = self.class.delete(endpoint, default_opts) build_response(response) end private + def url + GitlabCi.config.gitlab_server.url + end + + def default_opts + { + headers: { "Content-Type" => "application/json" }, + } + end + def build_response(response) case response.code when 200 diff --git a/app/models/project.rb b/app/models/project.rb index a3cb161..31ce6ab 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -94,7 +94,7 @@ ls -la opts = { private_token: user.private_token } opts.merge! options - projects = Network.new.projects(user.url, opts.compact, scope) + projects = Network.new.projects(opts.compact, scope) if projects projects.map { |pr| OpenStruct.new(pr) } diff --git a/app/models/user.rb b/app/models/user.rb index 71b0c19..9238e31 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -61,7 +61,7 @@ class User } Rails.cache.fetch(cache_key('manage', project_gitlab_id, sync_at)) do - !!Network.new.project_hooks(self.url, opts, project_gitlab_id) + !!Network.new.project_hooks(opts, project_gitlab_id) end end @@ -73,7 +73,7 @@ class User } Rails.cache.fetch(cache_key("project_info", project_gitlab_id, sync_at)) do - Network.new.project(self.url, opts, project_gitlab_id) + Network.new.project(opts, project_gitlab_id) end end end diff --git a/app/models/user_session.rb b/app/models/user_session.rb index 30b5b5d..d1c0711 100644 --- a/app/models/user_session.rb +++ b/app/models/user_session.rb @@ -3,17 +3,15 @@ class UserSession include StaticModel extend ActiveModel::Naming - attr_accessor :url - def authenticate(auth_opts) - authenticate_via(auth_opts) do |url, network, options| - network.authenticate(url, options) + authenticate_via(auth_opts) do |network, options| + network.authenticate(options) end end def authenticate_by_token(auth_opts) - result = authenticate_via(auth_opts) do |url, network, options| - network.authenticate_by_token(url, options) + result = authenticate_via(auth_opts) do |network, options| + network.authenticate_by_token(options) end result @@ -22,14 +20,10 @@ class UserSession private def authenticate_via(options, &block) - url = options.delete(:url) - - return nil unless GitlabCi.config.gitlab_server.url.include?(url) - - user = block.call(url, Network.new, options) + user = block.call(Network.new, options) if user - return User.new(user.merge({ "url" => url })) + return User.new(user) else nil end diff --git a/app/services/create_project_service.rb b/app/services/create_project_service.rb index ddbdc8b..63cbd86 100644 --- a/app/services/create_project_service.rb +++ b/app/services/create_project_service.rb @@ -13,7 +13,7 @@ class CreateProjectService project_url: project_route.gsub(":project_id", @project.id.to_s), } - unless Network.new.enable_ci(current_user.url, @project.gitlab_id, opts, current_user.private_token) + unless Network.new.enable_ci(@project.gitlab_id, opts, current_user.private_token) raise ActiveRecord::Rollback end end diff --git a/app/views/projects/_gitlab.html.haml b/app/views/projects/_gitlab.html.haml index 3dd759f..11f5866 100644 --- a/app/views/projects/_gitlab.html.haml +++ b/app/views/projects/_gitlab.html.haml @@ -1,6 +1,6 @@ .clearfix.light .pull-left.fetch-status - Fetched from GitLab (#{link_to current_user.url, current_user.url, no_turbolink}) + Fetched from GitLab (#{link_to GitlabCi.config.gitlab_server.url, GitlabCi.config.gitlab_server.url, no_turbolink}) - if params[:search].present? by keyword: "#{params[:search]}", #{time_ago_in_words(current_user.sync_at)} ago. diff --git a/app/views/projects/index.html.haml b/app/views/projects/index.html.haml index 824ba80..4ec8f68 100644 --- a/app/views/projects/index.html.haml +++ b/app/views/projects/index.html.haml @@ -8,7 +8,7 @@ .projects %p.fetch-status.light %i.icon-refresh.icon-spin - Please wait while we fetch from GitLab (#{current_user.url}) + Please wait while we fetch from GitLab (#{GitlabCi.config.gitlab_server.url}) :javascript $.get("#{gitlab_projects_path}") - else diff --git a/app/views/user_sessions/show.html.haml b/app/views/user_sessions/show.html.haml index 4432ed0..12aea2a 100644 --- a/app/views/user_sessions/show.html.haml +++ b/app/views/user_sessions/show.html.haml @@ -12,4 +12,4 @@ %p %span.light GitLab profile: - %strong= link_to @user.username, @user.url + '/u/' + @user.username, target: "_blank" + %strong= link_to @user.username, GitlabCi.config.gitlab_server.url + '/u/' + @user.username, target: "_blank" diff --git a/lib/api/forks.rb b/lib/api/forks.rb index 92f232c..c1807f0 100644 --- a/lib/api/forks.rb +++ b/lib/api/forks.rb @@ -18,7 +18,7 @@ module API authenticate_project_token!(project) user_session = UserSession.new - user = user_session.authenticate_by_token(private_token: params[:private_token], url: GitlabCi.config.gitlab_server.url) + user = user_session.authenticate_by_token(private_token: params[:private_token]) fork = CreateProjectService.new.execute( user, diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb index 58297a8..d09af26 100644 --- a/lib/api/helpers.rb +++ b/lib/api/helpers.rb @@ -7,8 +7,7 @@ module API def current_user @current_user ||= begin options = { - private_token: (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]), - url: params[:url] + private_token: (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]) } UserSession.new.authenticate_by_token(options) end diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index dea35f6..cea3986 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -82,7 +82,7 @@ describe ProjectsController do it "searches projects" do allow(controller).to receive(:reset_cache) { true } allow(controller).to receive(:current_user) { user } - Network.any_instance.should_receive(:projects).with(anything(), hash_including(search: 'str'), :authorized) + Network.any_instance.should_receive(:projects).with(hash_including(search: 'str'), :authorized) xhr :get, :gitlab, { search: "str", format: "js" }.with_indifferent_access diff --git a/spec/models/network_spec.rb b/spec/models/network_spec.rb index c0e92e2..b80adba 100644 --- a/spec/models/network_spec.rb +++ b/spec/models/network_spec.rb @@ -4,7 +4,7 @@ describe Network do let(:network) { Network.new } describe :enable_ci do - subject { network.enable_ci '', '', '', '' } + subject { network.enable_ci '', '', '' } context 'on success' do before do @@ -29,7 +29,7 @@ describe Network do describe :disable_ci do let(:response) { double } - subject { network.disable_ci '', '', '' } + subject { network.disable_ci '', '' } context 'on success' do let(:parsed_response) { 'parsed' } diff --git a/spec/requests/api/forks_spec.rb b/spec/requests/api/forks_spec.rb index e0469db..3eacb98 100644 --- a/spec/requests/api/forks_spec.rb +++ b/spec/requests/api/forks_spec.rb @@ -11,7 +11,7 @@ describe API::API do password: "123456" } } - let(:private_token) { Network.new.authenticate(gitlab_url, auth_opts)["private_token"] } + let(:private_token) { Network.new.authenticate(auth_opts)["private_token"] } let(:options) { { diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cf0831b..e56d4bc 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -10,7 +10,7 @@ describe API::API do password: "123456" } } - let(:private_token) { Network.new.authenticate(gitlab_url, auth_opts)["private_token"] } + let(:private_token) { Network.new.authenticate(auth_opts)["private_token"] } let(:options) { { diff --git a/spec/requests/api/runners_spec.rb b/spec/requests/api/runners_spec.rb index 477b66f..336601a 100644 --- a/spec/requests/api/runners_spec.rb +++ b/spec/requests/api/runners_spec.rb @@ -17,7 +17,7 @@ describe API::API do } } - let(:private_token) { Network.new.authenticate(gitlab_url, auth_opts)["private_token"] } + let(:private_token) { Network.new.authenticate(auth_opts)["private_token"] } let(:options) { { :private_token => private_token, |