mountable_file_server 2.0.0 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -1
- data/.ruby-version +1 -0
- data/CHANGELOG.md +16 -0
- data/README.md +1 -1
- data/lib/mountable_file_server/adapter.rb +2 -3
- data/lib/mountable_file_server/file_accessor.rb +1 -0
- data/lib/mountable_file_server/metadata.rb +1 -1
- data/lib/mountable_file_server/rails.rb +0 -1
- data/lib/mountable_file_server/server.rb +1 -1
- data/lib/mountable_file_server/version.rb +1 -1
- data/mountable_file_server.gemspec +8 -8
- data/shell.nix +27 -0
- metadata +32 -32
- data/lib/mountable_file_server/client.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bcdbcf7433b4e6534d739d480d7893ba11ce8046afb4e86df05c01989938a7ce
|
4
|
+
data.tar.gz: 27d8021de14ef6430cde006bf2240bc0eb1f9d4bab27a1a18788764a3e82d2b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87b760cda1e81bdd7a483c501759f403be3b629eb9ab4c3beeff9b2658ace693efe8a46548224d8dfebf131e35acfda0008f686f7c2685dcbd9a14c13746f58b
|
7
|
+
data.tar.gz: 69a22adc2a6ba19487a0da1f8f63f203e008417c1b8155e282ad5930bdae457723b3e67fb6d0d6b9d492d03a884cd635a75f42aee94db408774ff5e4fd0881f1
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
# 3.0.3
|
2
|
+
* Relax required version number of `dry-configurable` dependency
|
3
|
+
|
4
|
+
# 3.0.2
|
5
|
+
* Fix deprecation warning when calling metadata class initializer with keyword arguments.
|
6
|
+
* Don't break when uploading a private file.
|
7
|
+
|
8
|
+
# 3.0.1
|
9
|
+
* Repair broken `FileAccessor` class.
|
10
|
+
|
11
|
+
# 3.0.0
|
12
|
+
* **Breaking Change**: Remove `MountableFileServer::Client`. Use `MountableFileServer::Adapter` instead.
|
13
|
+
|
14
|
+
# 2.1.0
|
15
|
+
* Relax Sinatra dependency so Ruby on Rails 4 can use Rack 1.X
|
16
|
+
|
1
17
|
# 2.0.0
|
2
18
|
* Remove HTTP endpoints for moving and deleting uploads due to security concerns.
|
3
19
|
* Return 404 for unknown or malformed FIDs.
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ Mountable File Server can be used with any Ruby (on Rails) application and it re
|
|
4
4
|
app only stores reference to uploaded file
|
5
5
|
|
6
6
|
## MountableFileServer::Server
|
7
|
-
The core of Mountable File Server (MFS) is a small HTTP API that accepts file uploads and offers endpoints to interact with uploaded files. While the frontend deals directly with the HTTP API, your Ruby application will want to use the Ruby
|
7
|
+
The core of Mountable File Server (MFS) is a small HTTP API that accepts file uploads and offers endpoints to interact with uploaded files. While the frontend deals directly with the HTTP API, your Ruby application will want to use the Ruby adapter `MountableFileServer::Adapter`.
|
8
8
|
|
9
9
|
|
10
10
|
|
@@ -33,9 +33,8 @@ module MountableFileServer
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def url_for(uid)
|
36
|
-
|
37
|
-
|
38
|
-
configuration.base_url + uid
|
36
|
+
uid = UniqueIdentifier.new uid
|
37
|
+
FileAccessor.new(uid, configuration).url
|
39
38
|
end
|
40
39
|
|
41
40
|
def pathname_for(uid)
|
@@ -11,7 +11,7 @@ module MountableFileServer
|
|
11
11
|
pathname = Pathname(params[:file][:tempfile].path)
|
12
12
|
type = params[:type]
|
13
13
|
fid = adapter.store_temporary(pathname, type, pathname.extname)
|
14
|
-
url = adapter.url_for(fid)
|
14
|
+
url = adapter.url_for(fid) if fid.public?
|
15
15
|
metadata = Metadata.for_path(pathname)
|
16
16
|
|
17
17
|
content_type :json
|
@@ -18,17 +18,17 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1
|
22
|
-
spec.add_development_dependency "rake", "
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
22
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
23
23
|
spec.add_development_dependency "minitest", "~> 5.8.0"
|
24
|
-
spec.add_development_dependency "rails", "~> 5.0.2"
|
25
|
-
spec.add_development_dependency "capybara", "
|
24
|
+
spec.add_development_dependency "rails", "~> 5.0.7.2"
|
25
|
+
spec.add_development_dependency "capybara", "2.18.0"
|
26
26
|
spec.add_development_dependency "sqlite3", "~> 1.3.10"
|
27
|
-
spec.add_development_dependency "poltergeist", "
|
27
|
+
spec.add_development_dependency "poltergeist", "1.18.1"
|
28
28
|
spec.add_development_dependency "rack-test", "~> 0.6.3"
|
29
|
-
spec.add_development_dependency "
|
29
|
+
spec.add_development_dependency "mocha", "1.11.2"
|
30
30
|
|
31
|
-
spec.add_runtime_dependency "sinatra", "
|
32
|
-
spec.add_runtime_dependency "dry-configurable", "
|
31
|
+
spec.add_runtime_dependency "sinatra", ">= 1.4.8"
|
32
|
+
spec.add_runtime_dependency "dry-configurable", ">= 0.1.6"
|
33
33
|
spec.add_runtime_dependency "dimensions", "~> 1.3.0"
|
34
34
|
end
|
data/shell.nix
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
{
|
2
|
+
pkgs ? import (fetchGit {
|
3
|
+
url = https://github.com/NixOS/nixpkgs-channels;
|
4
|
+
ref = "nixos-20.03";
|
5
|
+
}) {},
|
6
|
+
ruby ? pkgs.ruby_2_5,
|
7
|
+
bundler ? pkgs.bundler.override { inherit ruby; }
|
8
|
+
}:
|
9
|
+
|
10
|
+
pkgs.mkShell {
|
11
|
+
buildInputs = with pkgs; [
|
12
|
+
ruby
|
13
|
+
bundler
|
14
|
+
git
|
15
|
+
sqlite
|
16
|
+
zlib
|
17
|
+
phantomjs
|
18
|
+
rubyPackages_2_5.nokogiri
|
19
|
+
libiconv
|
20
|
+
];
|
21
|
+
|
22
|
+
shellHook = ''
|
23
|
+
mkdir -p .local-data/gems
|
24
|
+
export GEM_HOME=$PWD/.local-data/gems
|
25
|
+
export GEM_PATH=$GEM_HOME
|
26
|
+
'';
|
27
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mountable_file_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Strauß
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 1970-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 12.3.3
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 12.3.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,28 +58,28 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 5.0.2
|
61
|
+
version: 5.0.7.2
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 5.0.2
|
68
|
+
version: 5.0.7.2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: capybara
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.
|
75
|
+
version: 2.18.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.
|
82
|
+
version: 2.18.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: sqlite3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,16 +98,16 @@ dependencies:
|
|
98
98
|
name: poltergeist
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.18.1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: 1.18.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rack-test
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,45 +123,45 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.6.3
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: mocha
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - '='
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 1.11.2
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - '='
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 1.11.2
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: sinatra
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 1.4.8
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: 1.4.8
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: dry-configurable
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: 0.1.6
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 0.1.6
|
167
167
|
- !ruby/object:Gem::Dependency
|
@@ -186,6 +186,7 @@ extensions: []
|
|
186
186
|
extra_rdoc_files: []
|
187
187
|
files:
|
188
188
|
- ".gitignore"
|
189
|
+
- ".ruby-version"
|
189
190
|
- ".travis.yml"
|
190
191
|
- CHANGELOG.md
|
191
192
|
- Gemfile
|
@@ -194,7 +195,6 @@ files:
|
|
194
195
|
- Rakefile
|
195
196
|
- lib/mountable_file_server.rb
|
196
197
|
- lib/mountable_file_server/adapter.rb
|
197
|
-
- lib/mountable_file_server/client.rb
|
198
198
|
- lib/mountable_file_server/file_accessor.rb
|
199
199
|
- lib/mountable_file_server/metadata.rb
|
200
200
|
- lib/mountable_file_server/rails.rb
|
@@ -204,6 +204,7 @@ files:
|
|
204
204
|
- lib/mountable_file_server/uri.rb
|
205
205
|
- lib/mountable_file_server/version.rb
|
206
206
|
- mountable_file_server.gemspec
|
207
|
+
- shell.nix
|
207
208
|
- vendor/assets/javascripts/mountable_file_server.js
|
208
209
|
homepage: https://github.com/stravid/mountable_file_server
|
209
210
|
licenses:
|
@@ -224,8 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
225
|
- !ruby/object:Gem::Version
|
225
226
|
version: '0'
|
226
227
|
requirements: []
|
227
|
-
|
228
|
-
rubygems_version: 2.5.1
|
228
|
+
rubygems_version: 3.1.2
|
229
229
|
signing_key:
|
230
230
|
specification_version: 4
|
231
231
|
summary: Simple mountable server that handles file uploads
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'net/http'
|
2
|
-
require 'uri'
|
3
|
-
require 'stringio'
|
4
|
-
|
5
|
-
module MountableFileServer
|
6
|
-
class Client
|
7
|
-
def move_to_permanent_storage(fid)
|
8
|
-
if MountableFileServer.config.base_url.start_with?('http')
|
9
|
-
uri = ::URI.parse(MountableFileServer.config.base_url)
|
10
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
11
|
-
http.set_debug_output($stdout)
|
12
|
-
request = Net::HTTP::Post.new(uri.request_uri + fid + '/store-permanent')
|
13
|
-
|
14
|
-
http.request(request)
|
15
|
-
else
|
16
|
-
MountableFileServer::Server.new.call({
|
17
|
-
"rack.input" => StringIO.new(""),
|
18
|
-
"REQUEST_METHOD"=> "POST",
|
19
|
-
"PATH_INFO"=> "/#{fid}/store-permanent",
|
20
|
-
})
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def remove_from_storage(fid)
|
25
|
-
if MountableFileServer.config.base_url.start_with?('http')
|
26
|
-
uri = ::URI.parse(MountableFileServer.config.base_url)
|
27
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
28
|
-
request = Net::HTTP::Delete.new(uri.request_uri + fid)
|
29
|
-
|
30
|
-
http.request(request)
|
31
|
-
else
|
32
|
-
MountableFileServer::Server.new.call({
|
33
|
-
"rack.input" => StringIO.new(""),
|
34
|
-
"REQUEST_METHOD"=> "DELETE",
|
35
|
-
"PATH_INFO"=> "/#{fid}",
|
36
|
-
})
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def url_for(fid)
|
41
|
-
MountableFileServer.config.base_url + fid
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|