paperclip_s3du 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ paperclip_s3du
2
+ ==============
3
+
4
+ Paperclip support for already-uploaded-in-s3 files.
@@ -0,0 +1,14 @@
1
+ class ApplicationController < ActionController::Base
2
+ def self.paperclip_s3_direct_upload_for object, options = {}
3
+ only = options[:only] || [:create, :update]
4
+
5
+ before_filter :only => only do |controller|
6
+ param = options[:param] || :file
7
+ property = options[:property] || param
8
+
9
+ if params.has_key? param
10
+ params[object][property] = Paperclip::S3DU::S3DirectUpload.new params[param]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ module Paperclip
2
+ module S3DU
3
+ class S3DirectUpload
4
+ attr_reader :path, :size, :content_type
5
+
6
+ def initialize hash = {}
7
+ @path = hash[:file_path]
8
+ @size = hash[:file_size]
9
+ @content_type = hash[:content_type]
10
+ end
11
+
12
+ def original_filename
13
+ File.basename @path
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ module Paperclip
2
+ module S3DU
3
+ class S3DirectUploadAdapter < Paperclip::AbstractAdapter
4
+ delegate :path, :original_filename, :content_type, :size, :to => :@target
5
+
6
+ def initialize(target)
7
+ @target = target
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ Paperclip.io_adapters.register Paperclip::S3DU::S3DirectUploadAdapter do |target|
14
+ target.is_a? Paperclip::S3DU::S3DirectUpload
15
+ end
@@ -0,0 +1,25 @@
1
+ module Paperclip
2
+ module Storage
3
+ module S3du
4
+ include S3
5
+
6
+ def self.extended base
7
+ S3.extended base
8
+ end
9
+
10
+ def flush_writes #:nodoc:
11
+ @queued_for_write.each do |style, file|
12
+ if file.is_a? Paperclip::S3DU::S3DirectUploadAdapter
13
+ source = s3_bucket.objects[file.path]
14
+ destiny = s3_object(style)
15
+ source.move_to(destiny) if source.exists?
16
+
17
+ @queued_for_write.delete style
18
+ end
19
+ end
20
+
21
+ super
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ require 'paperclip_s3du/s3_direct_upload'
2
+ require 'paperclip_s3du/s3_direct_upload_adapter'
3
+ require 'paperclip_s3du/s3du'
4
+ require 'paperclip_s3du/application_controller'
@@ -0,0 +1,13 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'paperclip_s3du'
3
+ s.version = '0.0.1'
4
+ s.date = '2013-03-03'
5
+ s.summary = "Already-uploaded Paperclip"
6
+ s.description = "Paperclip support for already-uploaded-in-s3 files."
7
+ s.authors = ["Guilherme Vieira"]
8
+ s.email = 'guilherme@flipstudio.net'
9
+ s.files = `git ls-files`.split("\n").sort
10
+ s.homepage = 'https://github.com/flipstudio/s3du'
11
+
12
+ s.add_dependency("paperclip", "~> 3.0")
13
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paperclip_s3du
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Guilherme Vieira
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: paperclip
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ description: Paperclip support for already-uploaded-in-s3 files.
31
+ email: guilherme@flipstudio.net
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - .gitignore
37
+ - README.md
38
+ - lib/paperclip_s3du.rb
39
+ - lib/paperclip_s3du/application_controller.rb
40
+ - lib/paperclip_s3du/s3_direct_upload.rb
41
+ - lib/paperclip_s3du/s3_direct_upload_adapter.rb
42
+ - lib/paperclip_s3du/s3du.rb
43
+ - paperclip_s3du.gemspec
44
+ homepage: https://github.com/flipstudio/s3du
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 1.8.19
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Already-uploaded Paperclip
68
+ test_files: []