el_finder_s3 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.
@@ -0,0 +1,179 @@
1
+ module ElFinderS3
2
+ class S3Pathname < Pathname
3
+ attr_reader :adapter
4
+
5
+ def initialize(adapter, list_entry_or_name, attrs = {})
6
+ @adapter = adapter
7
+
8
+ if list_entry_or_name.is_a? ElFinderS3::S3Pathname
9
+ super(list_entry_or_name.to_s)
10
+ self.attrs = list_entry_or_name.attrs
11
+ elsif list_entry_or_name.is_a? Aws::S3::Types::Object
12
+ super(list_entry_or_name[:key])
13
+ @size = list_entry_or_name[:size]
14
+ @type = :file
15
+ elsif list_entry_or_name.is_a? Aws::S3::Types::CommonPrefix
16
+ name = list_entry_or_name[:prefix]
17
+ super(name)
18
+ @size = 0
19
+ @type = :directory
20
+ else
21
+ super(list_entry_or_name)
22
+ self.attrs = attrs
23
+ end
24
+ end
25
+
26
+ def +(other)
27
+ other = S3Pathname.new(adapter, other) unless S3Pathname === other
28
+ S3Pathname.new(adapter, plus(@path, other.to_s), other.attrs)
29
+ end
30
+
31
+ def attrs
32
+ {
33
+ type: @type,
34
+ time: @time,
35
+ size: @size
36
+ }
37
+ end
38
+
39
+ def attrs=(val)
40
+ @time = val[:time]
41
+ @type = val[:type]
42
+ @size = val[:size]
43
+ end
44
+
45
+ def atime
46
+ mtime
47
+ end
48
+
49
+ def ctime
50
+ mtime
51
+ end
52
+
53
+ def mtime
54
+ @time ||= adapter.mtime(self)
55
+ end
56
+
57
+ def cleanpath
58
+ self
59
+ end
60
+
61
+ def exist?
62
+ adapter.exist?(self)
63
+ end
64
+
65
+ def directory?
66
+ type == :directory
67
+ end
68
+
69
+ def readable?
70
+ true
71
+ end
72
+
73
+ def writable?
74
+ true
75
+ end
76
+
77
+ def symlink?
78
+ false
79
+ end
80
+
81
+ def file?
82
+ type == :file
83
+ end
84
+
85
+ def realpath
86
+ self
87
+ end
88
+
89
+ def ftype
90
+ type.to_s
91
+ end
92
+
93
+ def type
94
+ @type ||= adapter.path_type(self)
95
+ end
96
+
97
+ def size
98
+ unless @type == :directory
99
+ @size ||= adapter.size(self)
100
+ end
101
+ end
102
+
103
+ def touch
104
+ adapter.touch(self)
105
+ end
106
+
107
+ def rename(to)
108
+ adapter.rename(self, to)
109
+ end
110
+
111
+ def mkdir
112
+ adapter.mkdir(self)
113
+ @type = :directory
114
+ @size = 0
115
+ end
116
+
117
+ def rmdir
118
+ adapter.rmdir(self)
119
+ end
120
+
121
+ def unlink
122
+ adapter.delete(self)
123
+ end
124
+
125
+ def read
126
+ adapter.retrieve(self)
127
+ end
128
+
129
+ def write(content)
130
+ adapter.store(self, content)
131
+ @size = nil
132
+ end
133
+
134
+ def executable?
135
+ false
136
+ end
137
+
138
+ def to_prefix_s
139
+ prefix_s = cleanpath.to_s
140
+ if prefix_s == '/'
141
+ return ''
142
+ elsif prefix_s[0] == '/'
143
+ prefix_s[0] = ''
144
+ end
145
+
146
+ if prefix_s[prefix_s.size-1] != '/'
147
+ prefix_s = prefix_s + '/'
148
+ end
149
+ prefix_s
150
+ end
151
+
152
+ def to_file_prefix_s
153
+ result = to_prefix_s
154
+ result[-1] = '' unless result[-1] != '/'
155
+ result
156
+ end
157
+
158
+ def pipe?
159
+ false
160
+ end
161
+
162
+ # These methods are part of the base class, but need to be handled specially
163
+ # since they return new instances of this class
164
+ # The code below unwraps the pathname, invokces the original method on it,
165
+ # and then wraps the result into a new, properly constructed instance of this class
166
+ {
167
+ 'dirname' => {:args => '(*args)'},
168
+ 'basename' => {:args => '(*args)'},
169
+ 'cleanpath' => {:args => '(*args)'},
170
+ }.each_pair do |meth, opts|
171
+ class_eval <<-METHOD, __FILE__, __LINE__ + 1
172
+ def #{meth}#{opts[:args]}
173
+ v = ::Pathname.new(self.to_s).#{meth}#{opts[:args]}
174
+ self.class.new(@adapter, v.to_s)
175
+ end
176
+ METHOD
177
+ end
178
+ end
179
+ end
@@ -0,0 +1,3 @@
1
+ module ElFinderS3
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: el_finder_s3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Raúl Anatol
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-08-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: net-ftp-list
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
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.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.10'
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
+ description: Ruby gem to provide server side connector to elFinder using AWS S3 like
70
+ a container
71
+ email:
72
+ - raul@natol.es
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".editorconfig"
78
+ - ".gitignore"
79
+ - ".travis.yml"
80
+ - Gemfile
81
+ - LICENSE
82
+ - README.md
83
+ - Rakefile
84
+ - bin/console
85
+ - bin/setup
86
+ - el_finder_s3.gemspec
87
+ - lib/el_finder_s3.rb
88
+ - lib/el_finder_s3/action.rb
89
+ - lib/el_finder_s3/adapter.rb
90
+ - lib/el_finder_s3/base64.rb
91
+ - lib/el_finder_s3/cache_connector.rb
92
+ - lib/el_finder_s3/connector.rb
93
+ - lib/el_finder_s3/image.rb
94
+ - lib/el_finder_s3/mime_type.rb
95
+ - lib/el_finder_s3/pathname.rb
96
+ - lib/el_finder_s3/railties.rb
97
+ - lib/el_finder_s3/s3_connector.rb
98
+ - lib/el_finder_s3/s3_pathname.rb
99
+ - lib/el_finder_s3/version.rb
100
+ homepage: https://github.com/raulanatol/el_finder_s3
101
+ licenses:
102
+ - MIT
103
+ metadata:
104
+ allowed_push_host: https://rubygems.org
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.4.8
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: elFinder server side connector for Ruby, with an S3 aws service.
125
+ test_files: []
126
+ has_rdoc: