rjack-jets3t 0.8.1.0-java → 0.9.0.0-java
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/History.rdoc +9 -4
- data/Manifest.txt +2 -1
- data/NOTICE.txt +1 -1
- data/README.rdoc +5 -5
- data/Rakefile +4 -34
- data/lib/rjack-jets3t.rb +2 -12
- data/lib/rjack-jets3t/base.rb +2 -2
- data/lib/rjack-jets3t/java.rb +32 -0
- data/lib/rjack-jets3t/{jets3t-0.8.1.jar → jets3t-0.9.0.jar} +0 -0
- data/lib/rjack-jets3t/s3_bucket.rb +82 -72
- data/lib/rjack-jets3t/s3_service.rb +74 -87
- data/pom.xml +1 -1
- data/test/test_jets3t.rb +38 -8
- metadata +54 -37
data/History.rdoc
CHANGED
@@ -1,18 +1,23 @@
|
|
1
|
+
=== 0.9.0.0 (2012-7-30)
|
2
|
+
* Update to jets3t 0.9.0; now depends on rjack-httpclient-4
|
3
|
+
* Add S3Bucket.get, generalize put
|
4
|
+
* Upgrade to tarpit ~> 2.0 (build)
|
5
|
+
|
1
6
|
=== 0.8.1.0 (2011-7-31)
|
2
|
-
*
|
7
|
+
* Update to jets3t 0.8.1
|
3
8
|
|
4
9
|
=== 0.8.0.0 (2010-12-28)
|
5
|
-
*
|
10
|
+
* Update to jets3t 0.8.0
|
6
11
|
|
7
12
|
=== 0.7.4.0 (2010-8-31)
|
8
|
-
*
|
13
|
+
* Update to jets3t 0.7.4 (Note
|
9
14
|
{Issue #16}[http://bitbucket.org/jmurty/jets3t/issue/16/classnotfoundexception])
|
10
15
|
* Remove require 'rubygems' from lib, require 'java' for imports.
|
11
16
|
* Expand slf4j/logback gem deps for compatibility with
|
12
17
|
slf4j-1.6.x/logback-1.x
|
13
18
|
|
14
19
|
=== 0.7.2.0 (2010-5-13)
|
15
|
-
*
|
20
|
+
* Update to jets3t 0.7.2
|
16
21
|
* New S3Bucket wrapper with put/delete methods.
|
17
22
|
* S3Service provides list, get, create S3Bucket.
|
18
23
|
* Set gem platform to java
|
data/Manifest.txt
CHANGED
@@ -7,8 +7,9 @@ assembly.xml
|
|
7
7
|
pom.xml
|
8
8
|
lib/rjack-jets3t/base.rb
|
9
9
|
lib/rjack-jets3t.rb
|
10
|
+
lib/rjack-jets3t/java.rb
|
10
11
|
lib/rjack-jets3t/s3_bucket.rb
|
11
12
|
lib/rjack-jets3t/s3_service.rb
|
12
13
|
test/test_jets3t.rb
|
13
14
|
lib/rjack-jets3t/java-xmlbuilder-0.4.jar
|
14
|
-
lib/rjack-jets3t/jets3t-0.
|
15
|
+
lib/rjack-jets3t/jets3t-0.9.0.jar
|
data/NOTICE.txt
CHANGED
data/README.rdoc
CHANGED
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
== Description
|
8
8
|
|
9
|
-
A gem packaging and
|
9
|
+
A gem packaging and ruby wrapper for the
|
10
10
|
{JetS3t}[http://jets3t.s3.amazonaws.com/index.html]
|
11
|
-
Amazon
|
11
|
+
Amazon Web Services client.
|
12
12
|
|
13
13
|
== Synopsis
|
14
14
|
|
@@ -19,12 +19,12 @@ Amazon Simple Storage Service (S3) client.
|
|
19
19
|
|
20
20
|
s3 = S3Service.new( :credentials => [ '<access-key>', '<secret-key>' ] )
|
21
21
|
|
22
|
-
buckets = s3.
|
22
|
+
buckets = s3.jservice.list_all_buckets
|
23
23
|
puts buckets.map { |b| b.name }
|
24
24
|
|
25
25
|
== Requirements
|
26
26
|
|
27
|
-
* rjack-httpclient-
|
27
|
+
* rjack-httpclient-4[http://rjack.rubyforge.org/httpclient-4]
|
28
28
|
* rjack-commons-codec[http://rjack.rubyforge.org/commons-codec]
|
29
29
|
* rjack-slf4j[http://rjack.rubyforge.org/slf4j]
|
30
30
|
* An SLF4J output adaptor such as 'rjack-slf4j/simple' or
|
@@ -36,7 +36,7 @@ Amazon Simple Storage Service (S3) client.
|
|
36
36
|
|
37
37
|
=== rjack-jets3t gem
|
38
38
|
|
39
|
-
Copyright (c) 2009-
|
39
|
+
Copyright (c) 2009-2012 David Kellum
|
40
40
|
|
41
41
|
Licensed under the Apache License, Version 2.0 (the "License"); you
|
42
42
|
may not use this file except in compliance with the License. You
|
data/Rakefile
CHANGED
@@ -1,42 +1,12 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
|
3
|
-
$LOAD_PATH << './lib'
|
4
|
-
require 'rjack-jets3t/base'
|
5
|
-
|
6
3
|
require 'rubygems'
|
7
|
-
|
4
|
+
require 'bundler/setup'
|
8
5
|
require 'rjack-tarpit'
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
t = TarPit.new( 'rjack-jets3t', JetS3t::VERSION,
|
13
|
-
:java_platform, :jars_from_assembly )
|
14
|
-
|
15
|
-
t.specify do |h|
|
16
|
-
h.developer( "David Kellum", "dek-oss@gravitext.com" )
|
17
|
-
h.extra_deps += [ [ 'rjack-slf4j', '>= 1.5.8', '< 1.7' ],
|
18
|
-
[ 'rjack-httpclient-3', '~> 3.1.3' ],
|
19
|
-
[ 'rjack-commons-codec', '~> 1.4.0' ] ]
|
20
|
-
h.extra_dev_deps << [ 'rjack-logback', '>= 0.9.18', '< 2.0' ]
|
21
|
-
h.rdoc_locations << "dekellum@rubyforge.org:/var/www/gforge-projects/rjack/jets3t"
|
22
|
-
end
|
7
|
+
RJack::TarPit.new( 'rjack-jets3t' ) do |tp|
|
23
8
|
|
24
|
-
|
25
|
-
|
9
|
+
tp.rdoc_destinations <<
|
10
|
+
'dekellum@rubyforge.org:/var/www/gforge-projects/rjack/jets3t'
|
26
11
|
|
27
|
-
task :check_pom_deps do
|
28
|
-
t.test_line_match( 'pom.xml',
|
29
|
-
%r[<version>#{ JetS3t::JETS3T_VERSION }</version>] )
|
30
12
|
end
|
31
|
-
task :check_history_version do
|
32
|
-
t.test_line_match( 'History.rdoc', /^==/, / #{t.version} / )
|
33
|
-
end
|
34
|
-
task :check_history_date do
|
35
|
-
t.test_line_match( 'History.rdoc', /^==/, /\([0-9\-]+\)$/ )
|
36
|
-
end
|
37
|
-
|
38
|
-
task :gem => [ :check_pom_deps, :check_history_version ]
|
39
|
-
task :tag => [ :check_pom_deps, :check_history_version, :check_history_date ]
|
40
|
-
task :push => [ :check_history_date ]
|
41
|
-
|
42
|
-
t.define_tasks
|
data/lib/rjack-jets3t.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
5
|
# may not use this file except in compliance with the License. You
|
@@ -14,16 +14,6 @@
|
|
14
14
|
# permissions and limitations under the License.
|
15
15
|
#++
|
16
16
|
|
17
|
-
require 'rjack-slf4j'
|
18
|
-
require 'rjack-slf4j/jcl-over-slf4j'
|
19
|
-
require 'rjack-commons-codec'
|
20
|
-
require 'rjack-httpclient-3'
|
21
17
|
require 'rjack-jets3t/base'
|
22
|
-
|
23
|
-
module RJack
|
24
|
-
module JetS3t
|
25
|
-
Dir.glob( File.join( JETS3T_DIR, '*.jar' ) ).each { |jar| require jar }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
18
|
+
require 'rjack-jets3t/java'
|
29
19
|
require 'rjack-jets3t/s3_service'
|
data/lib/rjack-jets3t/base.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
5
|
# may not use this file except in compliance with the License. You
|
@@ -17,7 +17,7 @@
|
|
17
17
|
module RJack
|
18
18
|
module JetS3t
|
19
19
|
# JetS3t java version
|
20
|
-
JETS3T_VERSION = '0.
|
20
|
+
JETS3T_VERSION = '0.9.0'
|
21
21
|
|
22
22
|
# rjack-jets3t version
|
23
23
|
VERSION = JETS3T_VERSION + '.0'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
|
+
# may not use this file except in compliance with the License. You
|
6
|
+
# may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
13
|
+
# implied. See the License for the specific language governing
|
14
|
+
# permissions and limitations under the License.
|
15
|
+
#++
|
16
|
+
|
17
|
+
require 'java'
|
18
|
+
|
19
|
+
require 'rjack-slf4j'
|
20
|
+
require 'rjack-slf4j/jcl-over-slf4j'
|
21
|
+
require 'rjack-commons-codec'
|
22
|
+
require 'rjack-httpclient-4'
|
23
|
+
require 'rjack-jets3t/base'
|
24
|
+
|
25
|
+
module RJack::JetS3t
|
26
|
+
Dir.glob( File.join( JETS3T_DIR, '*.jar' ) ).each { |jar| require jar }
|
27
|
+
|
28
|
+
import 'org.jets3t.service.S3ServiceException'
|
29
|
+
|
30
|
+
#Alias to org.jets3t.service.model.S3Bucket
|
31
|
+
JS3Bucket = Java::org.jets3t.service.model.S3Bucket
|
32
|
+
end
|
Binary file
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
5
|
# may not use this file except in compliance with the License. You
|
@@ -14,90 +14,100 @@
|
|
14
14
|
# permissions and limitations under the License.
|
15
15
|
#++
|
16
16
|
|
17
|
-
require 'rjack-
|
18
|
-
require 'rjack-slf4j/jcl-over-slf4j'
|
19
|
-
require 'rjack-commons-codec'
|
20
|
-
require 'rjack-httpclient-3'
|
21
|
-
require 'rjack-jets3t/base'
|
17
|
+
require 'rjack-jets3t/java'
|
22
18
|
|
23
|
-
|
19
|
+
module RJack::JetS3t
|
20
|
+
import 'org.jets3t.service.acl.AccessControlList'
|
21
|
+
import 'org.jets3t.service.model.S3Object'
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
import 'org.jets3t.service.acl.AccessControlList'
|
28
|
-
import 'org.jets3t.service.model.S3Object'
|
23
|
+
# Facade over org.jets3t.service.model.S3Bucket
|
24
|
+
class S3Bucket
|
29
25
|
|
30
|
-
#
|
31
|
-
|
26
|
+
# The S3Service in which this bucket resides
|
27
|
+
attr_reader :service
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
#import 'org.jets3t.service.security.AWSCredentials'
|
36
|
-
#import 'org.jets3t.service.Jets3tProperties'
|
29
|
+
# The underlying org.jets3t.service.model.S3Bucket
|
30
|
+
attr_reader :jbucket
|
37
31
|
|
38
|
-
|
39
|
-
|
32
|
+
# Hostname/prefix used use when composing HTTP access URLs.
|
33
|
+
attr_accessor :host_prefix
|
40
34
|
|
41
|
-
|
42
|
-
|
35
|
+
# Default ACL for put
|
36
|
+
attr_accessor :default_acl
|
43
37
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
@jbucket = jbucket
|
68
|
-
@host_prefix = ( opts[ :host_prefix ] ||
|
69
|
-
[ 's3.amazonaws.com', jbucket.name ].join( '/' ) )
|
70
|
-
@default_acl = ( opts[ :default_acl ] ||
|
71
|
-
AccessControlList::REST_CANNED_PUBLIC_READ )
|
72
|
-
end
|
38
|
+
# New bucket wrapper
|
39
|
+
#
|
40
|
+
# ==== Parameters
|
41
|
+
# service<S3Service>:: S3Service in which this bucket resides
|
42
|
+
# jbucket<org.jets3t.service.model.S3Bucket>:: the bucket
|
43
|
+
#
|
44
|
+
# ==== Options (opts)
|
45
|
+
# :host_prefix<~to_s>:: Host name/prefix to use when composing access
|
46
|
+
# URLs. (Default: s3.amazonaws.com/bucket-name)
|
47
|
+
# :default_acl<AccessControlList>:: Default ACL for put
|
48
|
+
# (Default: AccessControlList::REST_CANNED_PUBLIC_READ)
|
49
|
+
#
|
50
|
+
# ==== Raises
|
51
|
+
# :S3ServiceException:: From JetS3t
|
52
|
+
# :RuntimeError:: On failure to provide required options
|
53
|
+
def initialize( service, jbucket, opts = {} )
|
54
|
+
@service = service
|
55
|
+
@jbucket = jbucket
|
56
|
+
@host_prefix = ( opts[ :host_prefix ] ||
|
57
|
+
[ 's3.amazonaws.com', jbucket.name ].join( '/' ) )
|
58
|
+
@default_acl = ( opts[ :default_acl ] ||
|
59
|
+
AccessControlList::REST_CANNED_PUBLIC_READ )
|
60
|
+
end
|
73
61
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
62
|
+
# Bucket name
|
63
|
+
def name
|
64
|
+
@jbucket.name
|
65
|
+
end
|
78
66
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
67
|
+
# Put object in this S3 bucket at the given key. Yields
|
68
|
+
# S3Object for setting content, acl or other overrides if
|
69
|
+
# given. Optional data may be passed as a Ruby String which will
|
70
|
+
# be converted to java_bytes. Returns external HTTP url using
|
71
|
+
# :host_prefix
|
72
|
+
# ==== Raises
|
73
|
+
# :S3ServiceException:: From JetS3t
|
74
|
+
def put( key, mime_type, rbytes = nil )
|
75
|
+
if rbytes
|
76
|
+
rbytes = rbytes.to_java_bytes if rbytes.respond_to?( :to_java_bytes )
|
77
|
+
obj = S3Object.new( key, rbytes )
|
78
|
+
else
|
79
|
+
obj = S3Object.new( @jbucket, key )
|
91
80
|
end
|
81
|
+
obj.content_type = mime_type
|
82
|
+
obj.acl = @default_acl
|
83
|
+
yield obj if block_given?
|
84
|
+
@service.jservice.put_object( @jbucket, obj )
|
85
|
+
"http://%s/%s" % [ @host_prefix, key ]
|
86
|
+
end
|
92
87
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
88
|
+
# Get and yield S3Object from this S3 bucket for the given
|
89
|
+
# key. Ensures that on return from block, the objects
|
90
|
+
# date_input_stream will be closed.
|
91
|
+
# ==== Raises
|
92
|
+
# :S3ServiceException:: From JetS3t
|
93
|
+
def get( key )
|
94
|
+
obj = @service.jservice.get_object( @jbucket.name, key )
|
95
|
+
yield obj
|
96
|
+
nil
|
97
|
+
ensure
|
98
|
+
if obj
|
99
|
+
din = obj.data_input_stream
|
100
|
+
din.close if din
|
101
|
+
end
|
102
|
+
end
|
99
103
|
|
104
|
+
# Delete object with the given name in this bucket
|
105
|
+
# ==== Raises
|
106
|
+
# :S3ServiceException:: From JetS3t
|
107
|
+
def delete( name )
|
108
|
+
@service.jservice.delete_object( @jbucket, name )
|
100
109
|
end
|
101
110
|
|
102
111
|
end
|
112
|
+
|
103
113
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2009-
|
2
|
+
# Copyright (c) 2009-2012 David Kellum
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
5
5
|
# may not use this file except in compliance with the License. You
|
@@ -14,103 +14,90 @@
|
|
14
14
|
# permissions and limitations under the License.
|
15
15
|
#++
|
16
16
|
|
17
|
-
require 'rjack-
|
18
|
-
require 'rjack-slf4j/jcl-over-slf4j'
|
19
|
-
require 'rjack-commons-codec'
|
20
|
-
require 'rjack-httpclient-3'
|
21
|
-
require 'rjack-jets3t/base'
|
22
|
-
|
17
|
+
require 'rjack-jets3t/java'
|
23
18
|
require 'rjack-jets3t/s3_bucket'
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
#
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
# :RuntimeError:: On failure to provide required options
|
62
|
-
def initialize( opts = {} )
|
63
|
-
opts = opts.dup
|
64
|
-
|
65
|
-
creds = opts.delete( :credentials )
|
66
|
-
unless creds && (2..3) === creds.length
|
67
|
-
raise "Missing required :credentials [public,secret] keys"
|
68
|
-
end
|
69
|
-
creds = AWSCredentials.new( *creds )
|
70
|
-
|
71
|
-
http = opts.delete( :http_client )
|
72
|
-
unless http
|
73
|
-
hdefs = { 'httpclient.connection-timeout-ms' => 5000,
|
74
|
-
'httpclient.socket-timeout-ms' => 5000 }
|
75
|
-
opts = hdefs.merge( opts )
|
76
|
-
end
|
77
|
-
|
78
|
-
props = Jets3tProperties.new
|
79
|
-
opts.each { |k,v| props.set_property( k.to_s, v.to_s ) }
|
80
|
-
|
81
|
-
@jservice = RestS3Service.new( creds, nil, nil, props )
|
82
|
-
|
83
|
-
@jservice.http_client = http if http
|
20
|
+
module RJack::JetS3t
|
21
|
+
|
22
|
+
# Initialization Wrapper around
|
23
|
+
# RestS3Service[http://jets3t.s3.amazonaws.com/api/org/jets3t/service/impl/rest/httpclient/RestS3Service.html]
|
24
|
+
class S3Service
|
25
|
+
import 'org.jets3t.service.impl.rest.httpclient.RestS3Service'
|
26
|
+
import 'org.jets3t.service.security.AWSCredentials'
|
27
|
+
import 'org.jets3t.service.Jets3tProperties'
|
28
|
+
|
29
|
+
# The underlying org.jets3t.service.impl.rest.httpclient.RestS3Service
|
30
|
+
attr_reader :jservice
|
31
|
+
|
32
|
+
alias :service :jservice
|
33
|
+
|
34
|
+
# New REST S3 service instance given options hash.
|
35
|
+
# ==== Options (opts)
|
36
|
+
# :credentials<Array[String,String]>:: Required [access,secret] key
|
37
|
+
# :http_client<HttpClient>:: A pre-configured replacement
|
38
|
+
# org.apache.http.client.HttpClient
|
39
|
+
# (4.x) (Default: JetS3t provided)
|
40
|
+
# String<~to_s>:: Other options as defined in
|
41
|
+
# {JetS3t Properties}[http://jets3t.s3.amazonaws.com/toolkit/configuration.html].
|
42
|
+
# HTTP client properties only apply to JetS3t's default
|
43
|
+
# client (:http_client not set), and the timeout
|
44
|
+
# parameters are here defaulted to 5 seconds vs. the JetS3t
|
45
|
+
# 60 second originals.
|
46
|
+
#
|
47
|
+
# ==== Raises
|
48
|
+
# :S3ServiceException:: From JetS3t
|
49
|
+
# :RuntimeError:: On failure to provide required options
|
50
|
+
def initialize( opts = {} )
|
51
|
+
opts = opts.dup
|
52
|
+
|
53
|
+
creds = opts.delete( :credentials )
|
54
|
+
unless creds && (2..3) === creds.length
|
55
|
+
raise "Missing required :credentials [public,secret] keys"
|
84
56
|
end
|
57
|
+
creds = AWSCredentials.new( *creds )
|
85
58
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
59
|
+
http = opts.delete( :http_client )
|
60
|
+
unless http
|
61
|
+
hdefs = { 'httpclient.connection-timeout-ms' => 5000,
|
62
|
+
'httpclient.socket-timeout-ms' => 5000 }
|
63
|
+
opts = hdefs.merge( opts )
|
90
64
|
end
|
91
65
|
|
92
|
-
|
66
|
+
props = Jets3tProperties.new
|
67
|
+
opts.each { |k,v| props.set_property( k.to_s, v.to_s ) }
|
93
68
|
|
94
|
-
|
95
|
-
def buckets( opts = {} )
|
96
|
-
jbuckets = @jservice.list_all_buckets
|
97
|
-
jbuckets.map { |jb| S3Bucket.new( self, jb, opts ) }
|
98
|
-
end
|
69
|
+
@jservice = RestS3Service.new( creds, nil, nil, props )
|
99
70
|
|
100
|
-
|
101
|
-
|
102
|
-
jbucket = JS3Bucket.new( bucket_name )
|
103
|
-
yield jbucket if block_given?
|
104
|
-
jbucket = @jservice.create_bucket( jbucket )
|
105
|
-
S3Bucket.new( self, jbucket, opts )
|
106
|
-
end
|
71
|
+
@jservice.http_client = http if http
|
72
|
+
end
|
107
73
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
74
|
+
# Return the S3Bucket with the specified name
|
75
|
+
def []( bucket_name, opts = {} )
|
76
|
+
jbucket = @jservice.get_bucket( bucket_name )
|
77
|
+
S3Bucket.new( self, jbucket, opts )
|
78
|
+
end
|
112
79
|
|
80
|
+
alias :bucket :[]
|
81
|
+
|
82
|
+
# Return Array of all buckets in this S3Service account instance.
|
83
|
+
def buckets( opts = {} )
|
84
|
+
jbuckets = @jservice.list_all_buckets
|
85
|
+
jbuckets.map { |jb| S3Bucket.new( self, jb, opts ) }
|
86
|
+
end
|
87
|
+
|
88
|
+
# Create new bucket with the specified name
|
89
|
+
def create_bucket( bucket_name, opts = {} )
|
90
|
+
jbucket = JS3Bucket.new( bucket_name )
|
91
|
+
yield jbucket if block_given?
|
92
|
+
jbucket = @jservice.create_bucket( jbucket )
|
93
|
+
S3Bucket.new( self, jbucket, opts )
|
94
|
+
end
|
95
|
+
|
96
|
+
# Delete the specified S3Bucket instance
|
97
|
+
def delete_bucket( bucket )
|
98
|
+
@jservice.delete_bucket( bucket.jbucket )
|
113
99
|
end
|
114
100
|
|
115
101
|
end
|
102
|
+
|
116
103
|
end
|
data/pom.xml
CHANGED
data/test/test_jets3t.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env jruby
|
2
2
|
#.hashdot.profile += jruby-shortlived
|
3
|
+
|
3
4
|
#--
|
4
|
-
# Copyright (c) 2009-
|
5
|
+
# Copyright (c) 2009-2012 David Kellum
|
5
6
|
#
|
6
7
|
# Licensed under the Apache License, Version 2.0 (the "License"); you
|
7
8
|
# may not use this file except in compliance with the License. You
|
@@ -16,18 +17,22 @@
|
|
16
17
|
# permissions and limitations under the License.
|
17
18
|
#++
|
18
19
|
|
19
|
-
$LOAD_PATH.unshift File.join( File.dirname(__FILE__), "..", "lib" )
|
20
|
-
|
21
20
|
require 'rubygems'
|
21
|
+
require 'bundler/setup'
|
22
|
+
|
22
23
|
require 'rjack-logback'
|
23
24
|
|
24
|
-
RJack::Logback.config_console( :
|
25
|
+
RJack::Logback.config_console( :stderr => true )
|
26
|
+
if ARGV.include?( '-v' ) || ARGV.include?( '--verbose' )
|
27
|
+
RJack::Logback.root.level = RJack::Logback::DEBUG
|
28
|
+
end
|
25
29
|
|
26
|
-
require '
|
30
|
+
require 'minitest/unit'
|
31
|
+
require 'minitest/autorun'
|
27
32
|
|
28
|
-
require '
|
33
|
+
require 'rjack-jets3t'
|
29
34
|
|
30
|
-
class TestJets3t <
|
35
|
+
class TestJets3t < MiniTest::Unit::TestCase
|
31
36
|
include RJack::JetS3t
|
32
37
|
|
33
38
|
import "java.io.ByteArrayInputStream"
|
@@ -58,7 +63,7 @@ class TestJets3t < Test::Unit::TestCase
|
|
58
63
|
@s3.delete_bucket( @tbucket ) if @tbucket
|
59
64
|
end
|
60
65
|
|
61
|
-
def
|
66
|
+
def test_write_stream
|
62
67
|
assert( @s3.buckets.any? { |b| b.name == @tbucket.name } )
|
63
68
|
|
64
69
|
url = @tbucket.put( "testkey", "text/plain" ) do |obj|
|
@@ -68,6 +73,31 @@ class TestJets3t < Test::Unit::TestCase
|
|
68
73
|
end
|
69
74
|
assert_equal( 'http://s3.amazonaws.com/test.rjack.rubyforge.org/testkey',
|
70
75
|
url )
|
76
|
+
called = false
|
77
|
+
@tbucket.get( "testkey" ) do |obj|
|
78
|
+
assert_equal( "text/plain", obj.content_type )
|
79
|
+
assert_equal( "hello", obj.data_input_stream.to_io.read )
|
80
|
+
called = true
|
81
|
+
end
|
82
|
+
assert( called )
|
83
|
+
|
84
|
+
@tbucket.delete( "testkey" )
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_write_bytes
|
88
|
+
assert( @s3.buckets.any? { |b| b.name == @tbucket.name } )
|
89
|
+
|
90
|
+
url = @tbucket.put( "testkey", "text/plain", "hello" )
|
91
|
+
assert_equal( 'http://s3.amazonaws.com/test.rjack.rubyforge.org/testkey',
|
92
|
+
url )
|
93
|
+
called = false
|
94
|
+
@tbucket.get( "testkey" ) do |obj|
|
95
|
+
assert_equal( "text/plain", obj.content_type )
|
96
|
+
assert_equal( "hello", obj.data_input_stream.to_io.read )
|
97
|
+
called = true
|
98
|
+
end
|
99
|
+
assert( called )
|
100
|
+
|
71
101
|
@tbucket.delete( "testkey" )
|
72
102
|
end
|
73
103
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rjack-jets3t
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.9.0.0
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- David Kellum
|
@@ -10,13 +10,11 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
14
|
-
default_executable:
|
13
|
+
date: 2012-07-30 00:00:00 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: rjack-slf4j
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
19
|
requirements:
|
22
20
|
- - ">="
|
@@ -25,34 +23,40 @@ dependencies:
|
|
25
23
|
- - <
|
26
24
|
- !ruby/object:Gem::Version
|
27
25
|
version: "1.7"
|
26
|
+
requirement: *id001
|
27
|
+
prerelease: false
|
28
28
|
type: :runtime
|
29
|
-
version_requirements: *id001
|
30
29
|
- !ruby/object:Gem::Dependency
|
31
|
-
name: rjack-httpclient-
|
32
|
-
|
33
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
name: rjack-httpclient-4
|
31
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
34
32
|
none: false
|
35
33
|
requirements:
|
36
|
-
- -
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 4.1.2
|
37
|
+
- - <
|
37
38
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
+
version: "4.3"
|
40
|
+
requirement: *id002
|
41
|
+
prerelease: false
|
39
42
|
type: :runtime
|
40
|
-
version_requirements: *id002
|
41
43
|
- !ruby/object:Gem::Dependency
|
42
44
|
name: rjack-commons-codec
|
43
|
-
|
44
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
45
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
45
46
|
none: false
|
46
47
|
requirements:
|
47
|
-
- -
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 1.4.2
|
51
|
+
- - <
|
48
52
|
- !ruby/object:Gem::Version
|
49
|
-
version: 1.
|
53
|
+
version: "1.7"
|
54
|
+
requirement: *id003
|
55
|
+
prerelease: false
|
50
56
|
type: :runtime
|
51
|
-
version_requirements: *id003
|
52
57
|
- !ruby/object:Gem::Dependency
|
53
58
|
name: rjack-logback
|
54
|
-
|
55
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
59
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
56
60
|
none: false
|
57
61
|
requirements:
|
58
62
|
- - ">="
|
@@ -61,23 +65,32 @@ dependencies:
|
|
61
65
|
- - <
|
62
66
|
- !ruby/object:Gem::Version
|
63
67
|
version: "2.0"
|
68
|
+
requirement: *id004
|
69
|
+
prerelease: false
|
64
70
|
type: :development
|
65
|
-
version_requirements: *id004
|
66
71
|
- !ruby/object:Gem::Dependency
|
67
|
-
name:
|
72
|
+
name: minitest
|
73
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "2.2"
|
79
|
+
requirement: *id005
|
68
80
|
prerelease: false
|
69
|
-
|
81
|
+
type: :development
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: rjack-tarpit
|
84
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
70
85
|
none: false
|
71
86
|
requirements:
|
72
87
|
- - ~>
|
73
88
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
89
|
+
version: "2.0"
|
90
|
+
requirement: *id006
|
91
|
+
prerelease: false
|
75
92
|
type: :development
|
76
|
-
|
77
|
-
description: |-
|
78
|
-
A gem packaging and initialization facade for the
|
79
|
-
{JetS3t}[http://jets3t.s3.amazonaws.com/index.html]
|
80
|
-
Amazon Simple Storage Service (S3) client.
|
93
|
+
description:
|
81
94
|
email:
|
82
95
|
- dek-oss@gravitext.com
|
83
96
|
executables: []
|
@@ -85,8 +98,6 @@ executables: []
|
|
85
98
|
extensions: []
|
86
99
|
|
87
100
|
extra_rdoc_files:
|
88
|
-
- Manifest.txt
|
89
|
-
- NOTICE.txt
|
90
101
|
- History.rdoc
|
91
102
|
- README.rdoc
|
92
103
|
files:
|
@@ -99,12 +110,12 @@ files:
|
|
99
110
|
- pom.xml
|
100
111
|
- lib/rjack-jets3t/base.rb
|
101
112
|
- lib/rjack-jets3t.rb
|
113
|
+
- lib/rjack-jets3t/java.rb
|
102
114
|
- lib/rjack-jets3t/s3_bucket.rb
|
103
115
|
- lib/rjack-jets3t/s3_service.rb
|
104
116
|
- test/test_jets3t.rb
|
105
117
|
- lib/rjack-jets3t/java-xmlbuilder-0.4.jar
|
106
|
-
- lib/rjack-jets3t/jets3t-0.
|
107
|
-
has_rdoc: true
|
118
|
+
- lib/rjack-jets3t/jets3t-0.9.0.jar
|
108
119
|
homepage: http://rjack.rubyforge.org/jets3t
|
109
120
|
licenses: []
|
110
121
|
|
@@ -119,19 +130,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
130
|
requirements:
|
120
131
|
- - ">="
|
121
132
|
- !ruby/object:Gem::Version
|
133
|
+
hash: 2
|
134
|
+
segments:
|
135
|
+
- 0
|
122
136
|
version: "0"
|
123
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
138
|
none: false
|
125
139
|
requirements:
|
126
140
|
- - ">="
|
127
141
|
- !ruby/object:Gem::Version
|
142
|
+
hash: 2
|
143
|
+
segments:
|
144
|
+
- 0
|
128
145
|
version: "0"
|
129
146
|
requirements: []
|
130
147
|
|
131
|
-
rubyforge_project:
|
132
|
-
rubygems_version: 1.
|
148
|
+
rubyforge_project:
|
149
|
+
rubygems_version: 1.8.15
|
133
150
|
signing_key:
|
134
151
|
specification_version: 3
|
135
|
-
summary: A gem packaging and
|
136
|
-
test_files:
|
137
|
-
|
152
|
+
summary: A gem packaging and ruby wrapper for the JetS3t Amazon Web Services client.
|
153
|
+
test_files: []
|
154
|
+
|