s3_wrapper 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.
- checksums.yaml +7 -0
- data/lib/s3_wrapper.rb +135 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 86352e8cb2ae14f9d68b81a4c326cb409f64e6e1
|
4
|
+
data.tar.gz: 338e28abc1a58d8baf273b458d193b2363fab9e8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 718f66a4dd5814662d5b1c20df57e9fff54f75ff6bccd64ea48385875c720bf5f2488ba43c1c473f4a177bd9ba8e87f4c840a563b6048dae7573063a4ad1d1e6
|
7
|
+
data.tar.gz: 9314fd98d1caf9ebbea83c4e8b7a0d4c48c8e4e066acaf2c4aec8a4034e9c875e26515b7cf4e53b50c72b3dcfcdff0e6f9cb74c9cc152b7d4d78d3ffe87b4ebc
|
data/lib/s3_wrapper.rb
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
# encoding=utf-8
|
2
|
+
require 'aws-sdk'
|
3
|
+
|
4
|
+
|
5
|
+
class S3Wrapper
|
6
|
+
|
7
|
+
def initialize(bucket, options={})
|
8
|
+
@bucket = AWS::S3.new(options).buckets[bucket]
|
9
|
+
#TODO throw exception if bucket does not exist
|
10
|
+
@objects = @bucket.objects
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(key)
|
14
|
+
@objects[key].read
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_file(key, filename=key)
|
18
|
+
File.open(filename, 'w') do |fh|
|
19
|
+
@objects[key].read do |chunk|
|
20
|
+
fh.write(chunk)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def put(key, data)
|
26
|
+
@objects[key].write(data)
|
27
|
+
end
|
28
|
+
|
29
|
+
def put_file(filename, key=nil)
|
30
|
+
key ||= File.basename(filename)
|
31
|
+
@objects[key].write(:file => filename)
|
32
|
+
end
|
33
|
+
|
34
|
+
def ls(key)
|
35
|
+
get_object_description(@objects[key]) if @objects[key].exists?
|
36
|
+
end
|
37
|
+
|
38
|
+
def ls_prefix(key_prefix)
|
39
|
+
@objects.with_prefix(key_prefix).map {|obj| get_object_description(obj) }
|
40
|
+
end
|
41
|
+
|
42
|
+
def ls_substring(key_substring, key_prefix=nil)
|
43
|
+
descriptions = []
|
44
|
+
objects = key_prefix ? @objects.with_prefix(key_prefix) : @objects
|
45
|
+
|
46
|
+
objects.each do |obj|
|
47
|
+
descriptions << get_object_description(obj) if obj.key =~ /#{key_substring}/
|
48
|
+
end
|
49
|
+
|
50
|
+
descriptions
|
51
|
+
end
|
52
|
+
|
53
|
+
def ls_regexp(key_regexp)
|
54
|
+
descriptions = []
|
55
|
+
|
56
|
+
@objects.each do |obj|
|
57
|
+
descriptions << get_object_description(obj) if obj.key =~ key_regexp
|
58
|
+
end
|
59
|
+
|
60
|
+
descriptions
|
61
|
+
end
|
62
|
+
|
63
|
+
#TODO
|
64
|
+
def ls_if
|
65
|
+
end
|
66
|
+
|
67
|
+
def mv(src_key, dst_key, dst_bucket=@bucket.name)
|
68
|
+
@objects[src_key].move_to(dst_key, :bucket_name => dst_bucket)
|
69
|
+
end
|
70
|
+
|
71
|
+
#TODO
|
72
|
+
def mv_prefix(src_prefix, dst_bucket)
|
73
|
+
raise_if_dst_bucket_same_as_src(dst_bucket)
|
74
|
+
end
|
75
|
+
|
76
|
+
#TODO
|
77
|
+
def mv_substring()
|
78
|
+
end
|
79
|
+
|
80
|
+
#TODO
|
81
|
+
def mv_regexp()
|
82
|
+
end
|
83
|
+
|
84
|
+
#TODO
|
85
|
+
#def mv_if
|
86
|
+
#@objects.each do |obj|
|
87
|
+
#delete_if(&block)
|
88
|
+
#end
|
89
|
+
|
90
|
+
#TODO
|
91
|
+
def cp
|
92
|
+
end
|
93
|
+
|
94
|
+
def rm(key, options={})
|
95
|
+
@objects[key].delete
|
96
|
+
end
|
97
|
+
|
98
|
+
def rm_prefix(key_prefix)
|
99
|
+
@objects.with_prefix(key_prefix).each {|obj| obj.delete }
|
100
|
+
end
|
101
|
+
|
102
|
+
def rm_substring(key_substring, key_prefix=nil)
|
103
|
+
objects = key_prefix ? @objects.with_prefix(key_prefix) : @objects
|
104
|
+
|
105
|
+
objects.each do |obj|
|
106
|
+
obj.delete if obj.key =~ /#{key_substring}/
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def rm_regexp(key_regexp)
|
111
|
+
@objects.each do |obj|
|
112
|
+
obj.delete if obj.key =~ key_regexp
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def rm_if(&block)
|
117
|
+
@objects.delete_if(&block)
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def self.object_description(obj)
|
123
|
+
"#{obj.key}\t#{obj.last_modified.utc}\t#{obj.content_length / 1024 / 1024} MB"
|
124
|
+
end
|
125
|
+
|
126
|
+
def get_object_description(obj)
|
127
|
+
"#{obj.key}\t#{obj.last_modified.utc}\t#{obj.content_length / 1024 / 1024} MB"
|
128
|
+
end
|
129
|
+
|
130
|
+
def raise_if_dst_bucket_same_as_src(dst_bucket)
|
131
|
+
if dst_bucket == @bucket.name
|
132
|
+
raise ArgumentError.new('dst and src bucket are the same')
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: s3_wrapper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dean Morin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-04 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: |2
|
14
|
+
The intent of this gem is to simplify interactions with S3, and allow for
|
15
|
+
more powerful searching and deleting conditions than provided by default in
|
16
|
+
the AWS Ruby SDK or command line tools.
|
17
|
+
email: morin.dean@gmail.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- lib/s3_wrapper.rb
|
23
|
+
homepage: http://github.com/deanmorin/s3_wrapper
|
24
|
+
licenses:
|
25
|
+
- Unlicense
|
26
|
+
metadata: {}
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 2.2.0
|
44
|
+
signing_key:
|
45
|
+
specification_version: 4
|
46
|
+
summary: A tool for basic manipulation of files in S3
|
47
|
+
test_files: []
|