diff options
-rw-r--r-- | lib/chef_zero/data_store/v1_to_v2_adapter.rb | 10 | ||||
-rw-r--r-- | lib/chef_zero/endpoints/file_store_file_endpoint.rb | 2 | ||||
-rw-r--r-- | lib/chef_zero/rest_request.rb | 10 |
3 files changed, 19 insertions, 3 deletions
diff --git a/lib/chef_zero/data_store/v1_to_v2_adapter.rb b/lib/chef_zero/data_store/v1_to_v2_adapter.rb index 00bf4de..31195f8 100644 --- a/lib/chef_zero/data_store/v1_to_v2_adapter.rb +++ b/lib/chef_zero/data_store/v1_to_v2_adapter.rb @@ -38,7 +38,15 @@ module ChefZero def get(path, request=nil) raise DataNotFoundError.new(path) if skip_organizations?(path) fix_exceptions do - real_store.get(path[2..-1], request) + if request + old_base_uri = request.base_uri + request.base_uri = File.join(request.base_uri, path[0..1]) + end + begin + real_store.get(path[2..-1], request) + ensure + request.base_uri = old_base_uri if request + end end end diff --git a/lib/chef_zero/endpoints/file_store_file_endpoint.rb b/lib/chef_zero/endpoints/file_store_file_endpoint.rb index 4be1eb0..4e20a5d 100644 --- a/lib/chef_zero/endpoints/file_store_file_endpoint.rb +++ b/lib/chef_zero/endpoints/file_store_file_endpoint.rb @@ -3,7 +3,7 @@ require 'chef_zero/rest_base' module ChefZero module Endpoints # The minimum amount of S3 necessary to support cookbook upload/download - # /file_store/FILE + # /organizations/NAME/file_store/FILE class FileStoreFileEndpoint < RestBase def json_only false diff --git a/lib/chef_zero/rest_request.rb b/lib/chef_zero/rest_request.rb index 3205166..3ae523d 100644 --- a/lib/chef_zero/rest_request.rb +++ b/lib/chef_zero/rest_request.rb @@ -8,12 +8,20 @@ module ChefZero end attr_reader :env - attr_reader :rest_base_prefix + attr_accessor :rest_base_prefix def base_uri @base_uri ||= "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}#{env['SCRIPT_NAME']}" end + def base_uri=(value) + @base_uri = value + end + + def build_uri(*relative) + File.join(@base_uri, *rest_base_prefix, *relative) + end + def requestor @env['HTTP_X_OPS_USERID'] end |