carrierwave-scp-uploader 1.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5bbe6247cfa7dd3201b5673025fab5672a75001c
4
+ data.tar.gz: d8db037252dcc033466efb5b013860f7286ccb29
5
+ SHA512:
6
+ metadata.gz: 770725880f6faa53bc881bfed03b54e69bc74c6e3ba581c40943ff87597c7b2cc21e8f3ea848aa986f116cc21186a577a7692340a6271696b5026d99b461cb48
7
+ data.tar.gz: 3ab78606dd7152d7639226e3eb9cead851955f447a0deb6106842ec44c0a1f740fbddaeb951eb9bf740fd0f9ccfc137b927691ac737d4533b046932ab45e3544
@@ -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/
@@ -0,0 +1,19 @@
1
+ # CarrierWave SCP Upload
2
+
3
+ Custom upload plugin for [CarrierWave](https://github.com/jnicklas/carrierwave/) using SCP method
4
+
5
+ ## Gem
6
+
7
+ gem install carrierwave-scp-upload
8
+
9
+ ## Configuration
10
+
11
+ ```ruby
12
+ CarrierWave.configure do |config|
13
+ config.storage = :scp
14
+ config.scp_host = "<host ip>"
15
+ config.scp_user = "<username>"
16
+ config.scp_options = { :password=> "<password>" }
17
+ config.scp_folder = "/var/folder"
18
+ end
19
+ ```
@@ -0,0 +1,24 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+
3
+ require "carrierwave-scp-upload/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "carrierwave-scp-uploader"
7
+ s.version = CarrierwaveScp::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Yen-Thanh Le"]
10
+ s.email = ["abc@lythanh.xyz"]
11
+ s.homepage = "https://github.com/yenthanh132/carrierwave-scp-upload"
12
+ s.summary = "SCP storage for CarrierWave."
13
+ s.description = "Custom uploader for CarrierWave lib using SCP method"
14
+
15
+ s.rubyforge_project = "carrierwave-scp-upload"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
19
+
20
+ s.add_dependency "carrierwave"
21
+ s.add_dependency "net-scp"
22
+
23
+ s.add_development_dependency "rspec"
24
+ end
@@ -0,0 +1,16 @@
1
+ require 'carrierwave'
2
+ require 'uri/open-scp'
3
+ require 'net/scp'
4
+ require 'carrierwave/storage/scp'
5
+ require 'carrierwave-scp-upload/version'
6
+
7
+ class CarrierWave::Uploader::Base
8
+ add_config :scp_host
9
+ add_config :scp_user
10
+ add_config :scp_options
11
+ add_config :scp_folder
12
+
13
+ configure do |config|
14
+ config.storage_engines[:scp] = "CarrierWave::Storage::SCP"
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ module CarrierwaveScp
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,76 @@
1
+ module CarrierWave
2
+ module Storage
3
+ class SCP < Abstract
4
+
5
+ def store!(file)
6
+ f = CarrierWave::Storage::SCP::File.new(uploader, self, uploader.store_path)
7
+ f.store(file)
8
+ f
9
+ end
10
+
11
+ def retrieve!(identifier)
12
+ CarrierWave::Storage::SCP::File.new(uploader, self, uploader.store_path(identifier))
13
+ end
14
+
15
+ class File
16
+ attr_reader :path
17
+
18
+ def extension
19
+ path.split('.').last
20
+ end
21
+
22
+ def initialize(uploader, base, path)
23
+ @uploader, @base, @path = uploader, base, path
24
+ end
25
+
26
+ def read
27
+ file
28
+ end
29
+
30
+ def size
31
+ file.length
32
+ end
33
+
34
+ def store(new_file)
35
+ Net::SSH.start(@uploader.scp_host, @uploader.scp_user, @uploader.scp_options) do |session|
36
+ new_dir = path.split('/')
37
+ new_dir.delete(new_dir[-1])
38
+ new_dir = new_dir.join('/')
39
+ session.exec! "mkdir -p #{@uploader.scp_folder}/#{new_dir}"
40
+ session.scp.upload! new_file.path, "#{@uploader.scp_folder}/#{path}", :recursive => true
41
+ end
42
+ end
43
+
44
+ def exists?
45
+ size ? true : false
46
+ end
47
+
48
+ def content_type
49
+ @content_type || file.content_type
50
+ end
51
+
52
+ def content_type=(new_content_type)
53
+ @content_type = new_content_type
54
+ end
55
+
56
+ def delete
57
+ Net::SSH.start(@uploader.scp_host, @uploader.scp_user, @uploader.scp_options) do |session|
58
+ session.exec! "rm #{@uploader.scp_folder}/#{path}"
59
+ end
60
+ rescue
61
+ end
62
+ private
63
+
64
+ def file
65
+ remote_file = nil
66
+ Net::SSH.start(@uploader.scp_host, @uploader.scp_user, @uploader.scp_options) do |session|
67
+ remote_file = session.scp.download!("#{@uploader.scp_folder}/#{path}", nil)
68
+ end
69
+ remote_file
70
+ #@file ||= open("scp://#{@uploader.scp_user}:#{@uploader.scp_options[:password]}@#{@uploader.scp_host}#{@uploader.scp_folder}/#{path}", options)
71
+ end
72
+
73
+ end #end File
74
+ end #end SCP
75
+ end
76
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: carrierwave-scp-uploader
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Yen-Thanh Le
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: carrierwave
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: net-scp
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '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'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Custom uploader for CarrierWave lib using SCP method
56
+ email:
57
+ - abc@lythanh.xyz
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - README.md
64
+ - carrierwave-scp-upload.gemspec
65
+ - lib/carrierwave-scp-upload.rb
66
+ - lib/carrierwave-scp-upload/version.rb
67
+ - lib/carrierwave/storage/scp.rb
68
+ homepage: https://github.com/yenthanh132/carrierwave-scp-upload
69
+ licenses: []
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubyforge_project: carrierwave-scp-upload
87
+ rubygems_version: 2.4.5
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: SCP storage for CarrierWave.
91
+ test_files: []