Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarin Jankovski <maxlazio@gmail.com>2015-11-20 14:45:30 +0300
committerMarin Jankovski <maxlazio@gmail.com>2015-11-20 14:45:30 +0300
commitdbc0be1b275e92af5432cf7c5cf44de3dc8c9ca5 (patch)
treec9ca80f935405144bed7b218164e9fed553aaaf1 /lib/gitlab/lfs
parentb8d8292bef996a5d074b21a82d4faec0edb2e2bf (diff)
Error 501 when client is using deprecated API.
Diffstat (limited to 'lib/gitlab/lfs')
-rw-r--r--lib/gitlab/lfs/response.rb60
-rw-r--r--lib/gitlab/lfs/router.rb4
2 files changed, 15 insertions, 49 deletions
diff --git a/lib/gitlab/lfs/response.rb b/lib/gitlab/lfs/response.rb
index ada518f9e04..aceef53ba60 100644
--- a/lib/gitlab/lfs/response.rb
+++ b/lib/gitlab/lfs/response.rb
@@ -10,20 +10,6 @@ module Gitlab
@request = request
end
- # Return a response for a download request
- # Can be a response to:
- # Request from a user to get the file
- # Request from gitlab-workhorse which file to serve to the user
- def render_download_hypermedia_response(oid)
- render_response_to_download do
- if check_download_accept_header?
- render_lfs_download_hypermedia(oid)
- else
- render_not_found
- end
- end
- end
-
def render_download_object_response(oid)
render_response_to_download do
if check_download_sendfile_header?
@@ -66,13 +52,24 @@ module Gitlab
end
end
+ def render_unsupported_deprecated_api
+ [
+ 501,
+ { "Content-Type" => "application/json; charset=utf-8" },
+ [JSON.dump({
+ 'message' => 'Server supports batch API only, please update your Git LFS client to version 0.6.0 and up.',
+ 'documentation_url' => "#{Gitlab.config.gitlab.url}/help",
+ })]
+ ]
+ end
+
private
def render_not_enabled
[
501,
{
- "Content-Type" => "application/vnd.git-lfs+json",
+ "Content-Type" => "application/json; charset=utf-8",
},
[JSON.dump({
'message' => 'Git LFS is not enabled on this GitLab server, contact your admin.',
@@ -169,21 +166,6 @@ module Gitlab
end
end
- def render_lfs_download_hypermedia(oid)
- return render_not_found unless oid.present?
-
- lfs_object = object_for_download(oid)
- if lfs_object
- [
- 200,
- { "Content-Type" => "application/vnd.git-lfs+json" },
- [JSON.dump(download_hypermedia(oid))]
- ]
- else
- render_not_found
- end
- end
-
def render_lfs_upload_ok(oid, size, tmp_file)
if store_file(oid, size, tmp_file)
[
@@ -226,10 +208,6 @@ module Gitlab
@env['HTTP_X_SENDFILE_TYPE'].to_s == "X-Sendfile"
end
- def check_download_accept_header?
- @env['HTTP_ACCEPT'].to_s == "application/vnd.git-lfs+json; charset=utf-8"
- end
-
def user_can_fetch?
# Check user access against the project they used to initiate the pull
@user.can?(:download_code, @origin_project)
@@ -305,20 +283,6 @@ module Gitlab
download_hypermedia_links(objects, selected_objects)
end
- def download_hypermedia(oid)
- {
- '_links' => {
- 'download' =>
- {
- 'href' => "#{@origin_project.http_url_to_repo}/gitlab-lfs/objects/#{oid}",
- 'header' => {
- 'Authorization' => @env['HTTP_AUTHORIZATION']
- }.compact
- }
- }
- }
- end
-
def download_hypermedia_links(all_objects, existing_objects)
all_objects.each do |object|
if existing_objects.include?(object['oid'])
diff --git a/lib/gitlab/lfs/router.rb b/lib/gitlab/lfs/router.rb
index 2b3f2e8e958..78d02891102 100644
--- a/lib/gitlab/lfs/router.rb
+++ b/lib/gitlab/lfs/router.rb
@@ -34,7 +34,7 @@ module Gitlab
case path_match[1]
when "info/lfs"
- lfs.render_download_hypermedia_response(oid)
+ lfs.render_unsupported_deprecated_api
when "gitlab-lfs"
lfs.render_download_object_response(oid)
else
@@ -49,6 +49,8 @@ module Gitlab
# Check for Batch API
if post_path[0].ends_with?("/info/lfs/objects/batch")
lfs.render_batch_operation_response
+ elsif post_path[0].ends_with?("/info/lfs/objects")
+ lfs.render_unsupported_deprecated_api
else
nil
end