mimemagic_action_pack_uploaded_file 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +32 -0
- data/Rakefile +6 -0
- data/lib/mimemagic_action_pack_uploaded_file.rb +5 -0
- data/lib/mimemagic_action_pack_uploaded_file/railtie.rb +9 -0
- data/lib/mimemagic_action_pack_uploaded_file/uploaded_file_with_mimemagic.rb +13 -0
- data/lib/mimemagic_action_pack_uploaded_file/version.rb +3 -0
- data/mimemagic_action_pack_uploaded_file.gemspec +26 -0
- metadata +126 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 077b10e6c2f50aa17647af43a9397fc0d310a36a
|
4
|
+
data.tar.gz: 2cad192b016a7eaea3b0452d9628899fb293291a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 52c12fd4168964090f562dfe091a8c66ae0bd5d179379c8f1849f1450deaf3d090ded1fa70c4dfb41ebbd6b093f0b285dc2b79dad69b609f391d464d68a33676
|
7
|
+
data.tar.gz: 6b33d888af0dbb255ebb161d5c3ef0e7b09137fbafe9d971fccb17d396464d43039e155f88a16b38f3f52a551e62633d40a4359dc45309fa76b7d0dc97f3d950
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# MimemagicActionPackUploadedFile
|
2
|
+
|
3
|
+
Detected content_type by `ActionDispatch::HTTP::UploadedFile` is not trusted because it does not validate received content_type.
|
4
|
+
Therefore, content_type should be detected by magicbyte. `MimemagicActionPackUploadedFile` extends `ActionDispatch::HTTP::UploadedFile` to
|
5
|
+
detects actual content_type with [mimemagic](https://github.com/minad/mimemagic)
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
```
|
10
|
+
gem 'mimemagic_action_pack_uploaded_file'
|
11
|
+
```
|
12
|
+
|
13
|
+
## CarrierWave configuration
|
14
|
+
|
15
|
+
Define `content_type_whitelist` to your uploader.
|
16
|
+
[Click here for details](Please https://github.com/carrierwaveuploader/carrierwave#securing-uploads)
|
17
|
+
|
18
|
+
```
|
19
|
+
class YourUploader < CarrierWave::Uploader::Base
|
20
|
+
def content_type_whitelist
|
21
|
+
%w(image/jpeg image/png)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
## Testing
|
27
|
+
|
28
|
+
`bundle exec rake spec`
|
29
|
+
|
30
|
+
## Contributing
|
31
|
+
|
32
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/alpaca-tc/mimemagic_action_pack_uploaded_file.
|
data/Rakefile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module MimemagicActionPackUploadedFile
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer 'mimemagic_action_pack_uploaded_file.initializer', after: 'action_dispatch.configure' do
|
6
|
+
ActionDispatch::Http::UploadedFile.prepend(MimemagicActionPackUploadedFile::UploadedFileWithMimemagic)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'mimemagic'
|
2
|
+
|
3
|
+
module MimemagicActionPackUploadedFile
|
4
|
+
# Detect content_type from magic byte instead of request parameters.
|
5
|
+
module UploadedFileWithMimemagic
|
6
|
+
UNKNOWN_CONTENT_TYPE = 'unknown/unknown'.freeze
|
7
|
+
|
8
|
+
def initialize(*)
|
9
|
+
super
|
10
|
+
@content_type = MimeMagic.by_magic(@tempfile).try(:type) || UNKNOWN_CONTENT_TYPE
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'mimemagic_action_pack_uploaded_file/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'mimemagic_action_pack_uploaded_file'
|
7
|
+
spec.version = MimemagicActionPackUploadedFile::VERSION
|
8
|
+
spec.authors = ['alpaca-tc']
|
9
|
+
spec.email = ['alpaca-tc@alpaca.tc']
|
10
|
+
|
11
|
+
spec.summary = %q{Extend ActionDispatch::HTTP::UploadedFile to detect file type from magic byte}
|
12
|
+
spec.description = %q{Extend ActionDispatch::HTTP::UploadedFile to detect file type from magic byte}
|
13
|
+
spec.homepage = 'https://github.com/alpaca-tc/mimemagic_action_pack_uploaded_file'
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
|
+
f.match(%r{^(test|spec|features)/})
|
17
|
+
end
|
18
|
+
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'rails', '>= 4.1.0'
|
22
|
+
spec.add_dependency 'mimemagic', '>= 0.3.0'
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.13'
|
24
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
25
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mimemagic_action_pack_uploaded_file
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- alpaca-tc
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mimemagic
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.13'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.13'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description: Extend ActionDispatch::HTTP::UploadedFile to detect file type from magic
|
84
|
+
byte
|
85
|
+
email:
|
86
|
+
- alpaca-tc@alpaca.tc
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- Gemfile
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- lib/mimemagic_action_pack_uploaded_file.rb
|
98
|
+
- lib/mimemagic_action_pack_uploaded_file/railtie.rb
|
99
|
+
- lib/mimemagic_action_pack_uploaded_file/uploaded_file_with_mimemagic.rb
|
100
|
+
- lib/mimemagic_action_pack_uploaded_file/version.rb
|
101
|
+
- mimemagic_action_pack_uploaded_file.gemspec
|
102
|
+
homepage: https://github.com/alpaca-tc/mimemagic_action_pack_uploaded_file
|
103
|
+
licenses: []
|
104
|
+
metadata: {}
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
requirements: []
|
120
|
+
rubyforge_project:
|
121
|
+
rubygems_version: 2.6.8
|
122
|
+
signing_key:
|
123
|
+
specification_version: 4
|
124
|
+
summary: Extend ActionDispatch::HTTP::UploadedFile to detect file type from magic
|
125
|
+
byte
|
126
|
+
test_files: []
|