synaptic4r 0.1.6 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/synrest +17 -18
- data/lib/synaptic4r/client.rb +4 -7
- data/lib/synaptic4r/request.rb +4 -3
- data/lib/synaptic4r/rest.rb +11 -10
- data/lib/synaptic4r/result.rb +3 -3
- data/lib/synaptic4r.rb +1 -0
- data/synaptic4r.gemspec +8 -8
- data/test/create_dir_test.rb +0 -1
- data/test/create_file_messages.rb +31 -14
- data/test/create_file_test.rb +29 -4
- data/test/mock.rb +1 -1
- metadata +8 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.8
|
data/bin/synrest
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
#!/usr/bin/ruby
|
1
|
+
#!/usr/local/bin/ruby
|
2
2
|
|
3
3
|
####---------------------------------------------------------------------------------------------------------
|
4
4
|
SYNLIB = "#{File.dirname($0)}/../lib"
|
5
5
|
$:.unshift(SYNLIB) unless $:.include?(SYNLIB)
|
6
6
|
|
7
7
|
####---------------------------------------------------------------------------------------------------------
|
8
|
-
require 'yaml'
|
9
8
|
require 'optparse'
|
10
9
|
require 'synaptic4r'
|
11
10
|
require 'logger'
|
@@ -61,7 +60,7 @@ def run(cmd, input)
|
|
61
60
|
{:out => (input[:dump] or input[:payload]) ? dump(cmd, input, result) : result.print, :logger => :info}
|
62
61
|
rescue RestClient::RequestFailed, RestClient::ResourceNotFound, RestClient::Unauthorized,
|
63
62
|
RestClient::NotModified => err
|
64
|
-
{:out => "#{err.message}\n" + Synaptic4r::RequestError.new(err).print, :logger => :error}
|
63
|
+
{:out => "#{err.http_code}\n#{err.message}\n" + Synaptic4r::RequestError.new(err).print, :logger => :error}
|
65
64
|
rescue RestClient::Redirect, RestClient::ServerBrokeConnection, RestClient::RequestTimeout => err
|
66
65
|
{:out => err.message, :logger => :error}
|
67
66
|
rescue ArgumentError => err
|
@@ -86,7 +85,7 @@ end
|
|
86
85
|
####---------------------------------------------------------------------------------------------------------
|
87
86
|
def format_required_args(args)
|
88
87
|
args.inject("") do |f,a|
|
89
|
-
aname = lambda{|v,l| arg_name(Synaptic4r::
|
88
|
+
aname = lambda{|v,l| arg_name(Synaptic4r::StorageRequest.rest_arg(v),l)}
|
90
89
|
if a.kind_of?(Array)
|
91
90
|
f + [aname[a.first,false],a[1..-1].map{|v| aname[v,true]}].join('|') + ' '
|
92
91
|
else
|
@@ -97,7 +96,7 @@ end
|
|
97
96
|
|
98
97
|
####---------------------------------------------------------------------------------------------------------
|
99
98
|
def diagnostic_args(opts, input, cmd)
|
100
|
-
if Synaptic4r::
|
99
|
+
if Synaptic4r::StorageRequest.diagnostics(cmd)
|
101
100
|
opts.separator "\ndiagnostic options"
|
102
101
|
opts.on('-q', '--dump', 'do not send request but print headers and service url to STDOUT'){|d| input[:dump] = true}
|
103
102
|
opts.on('-p', '--payload', 'do not send request print payload to STDOUT if present'){|p| input[:payload] = true}
|
@@ -120,7 +119,7 @@ def set_opts(opts, input, opt_args)
|
|
120
119
|
unless opt_args.empty?
|
121
120
|
opts.separator "\noptions"
|
122
121
|
opt_args.sort_by{|m| m.to_s}.each do |a|
|
123
|
-
arg_info = Synaptic4r::
|
122
|
+
arg_info = Synaptic4r::StorageRequest.rest_arg(a)
|
124
123
|
sopt = arg_info[:cli][1]
|
125
124
|
lopt = "--#{arg_info[:cli][0]}" + (arg_info[:cli][2].eql?(:flag) ? '' : " #{arg_info[:cli][0]}")
|
126
125
|
opts.on(sopt, lopt, arg_info[:desc]) do |v|
|
@@ -133,11 +132,11 @@ end
|
|
133
132
|
####---------------------------------------------------------------------------------------------------------
|
134
133
|
def set_args(opts, meths, input, cmd)
|
135
134
|
extract_positional_args(meths, input, cmd)
|
136
|
-
all_args = Synaptic4r::
|
135
|
+
all_args = Synaptic4r::StorageRequest.required_rest_args(cmd)
|
137
136
|
fmt = " %-32s %s"
|
138
137
|
unless all_args.empty?
|
139
138
|
opts.separator "\nargs"
|
140
|
-
arg_row = lambda{|a,l| arg_info = Synaptic4r::
|
139
|
+
arg_row = lambda{|a,l| arg_info = Synaptic4r::StorageRequest.rest_arg(a)
|
141
140
|
opts.separator fmt % [arg_name(arg_info,l), arg_info[:desc]]}
|
142
141
|
all_args.each do |a|
|
143
142
|
if a.kind_of?(Array)
|
@@ -173,11 +172,11 @@ end
|
|
173
172
|
|
174
173
|
####---------------------------------------------------------------------------------------------------------
|
175
174
|
def extract_positional_args(meths, input, cmd)
|
176
|
-
eargs = Synaptic4r::
|
175
|
+
eargs = Synaptic4r::StorageRequest.required_rest_args(cmd)
|
177
176
|
elength = eargs.length
|
178
177
|
pvals= prep_argv.first(elength)
|
179
|
-
nvals = if Synaptic4r::
|
180
|
-
Synaptic4r::
|
178
|
+
nvals = if Synaptic4r::StorageRequest.map_required_args(cmd)
|
179
|
+
Synaptic4r::StorageRequest.map_required_args(cmd)[pvals]
|
181
180
|
else
|
182
181
|
{:pvals => pvals, :dlen => 0}
|
183
182
|
end
|
@@ -200,7 +199,7 @@ end
|
|
200
199
|
|
201
200
|
####---------------------------------------------------------------------------------------------------------
|
202
201
|
def set_positional_args(input, nvals, eargs)
|
203
|
-
assign_input = lambda{|a,v| info = Synaptic4r::
|
202
|
+
assign_input = lambda{|a,v| info = Synaptic4r::StorageRequest.rest_arg(a);
|
204
203
|
input[a] = info[:map].nil? ? v : info[:map][v]}
|
205
204
|
length = 0
|
206
205
|
nvals[:pvals].each_index do |i|
|
@@ -210,7 +209,7 @@ def set_positional_args(input, nvals, eargs)
|
|
210
209
|
if /^-/.match(pv)
|
211
210
|
matched = false
|
212
211
|
ea[1..-1].each do |a|
|
213
|
-
info = Synaptic4r::
|
212
|
+
info = Synaptic4r::StorageRequest.rest_arg(a)
|
214
213
|
flag = info[:cli][1]
|
215
214
|
next unless flag
|
216
215
|
if /^#{flag}/.match(pv)
|
@@ -246,8 +245,8 @@ end
|
|
246
245
|
|
247
246
|
####---------------------------------------------------------------------------------------------------------
|
248
247
|
def build_banner(opts, cmd)
|
249
|
-
exp_args = Synaptic4r::
|
250
|
-
opts.banner = Synaptic4r::
|
248
|
+
exp_args = Synaptic4r::StorageRequest.required_rest_args(cmd)
|
249
|
+
opts.banner = Synaptic4r::StorageRequest.banner(cmd) || \
|
251
250
|
"\nUsage: synrest #{cmd.to_s.gsub(/_/,'-')} #{format_required_args(exp_args)} [options]"
|
252
251
|
|
253
252
|
end
|
@@ -256,7 +255,7 @@ end
|
|
256
255
|
def process_input(opts, meths, input, cmd)
|
257
256
|
build_banner(opts, cmd)
|
258
257
|
set_args(opts, meths, input, cmd)
|
259
|
-
set_opts(opts, input, Synaptic4r::
|
258
|
+
set_opts(opts, input, Synaptic4r::StorageRequest.optional_rest_args(cmd))
|
260
259
|
diagnostic_args(opts, input, cmd)
|
261
260
|
end
|
262
261
|
|
@@ -268,7 +267,7 @@ def cmd_help(meths)
|
|
268
267
|
meths.sort_by{|m| m.to_s}.each do |m|
|
269
268
|
next if m.eql?(:get_started)
|
270
269
|
meth_str = " %-30s" % m.to_s.gsub(/_/,'-')
|
271
|
-
puts "#{meth_str} #{Synaptic4r::
|
270
|
+
puts "#{meth_str} #{Synaptic4r::StorageRequest.desc(m)}"
|
272
271
|
end
|
273
272
|
puts "\nCommand args and options\n synrest command -h"
|
274
273
|
puts "\nGet Started\n synrest get-started"
|
@@ -276,7 +275,7 @@ def cmd_help(meths)
|
|
276
275
|
end
|
277
276
|
|
278
277
|
####---------------------------------------------------------------------------------------------------------
|
279
|
-
meths = Synaptic4r::
|
278
|
+
meths = Synaptic4r::StorageRequest.rest_methods << :get_started
|
280
279
|
input = {}
|
281
280
|
cmd = extract_cmd(meths)
|
282
281
|
|
data/lib/synaptic4r/client.rb
CHANGED
@@ -17,7 +17,7 @@ module Synaptic4r
|
|
17
17
|
end
|
18
18
|
|
19
19
|
#.........................................................................................................
|
20
|
-
attr_reader :
|
20
|
+
attr_reader :credentials
|
21
21
|
|
22
22
|
#.........................................................................................................
|
23
23
|
def initialize(args = nil)
|
@@ -40,16 +40,13 @@ module Synaptic4r
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
unary_args_given?(symbolize(config_params), args.keys)
|
43
|
-
@subtenant
|
44
|
-
@uid = args[:uid]
|
45
|
-
@key = args[:key]
|
46
|
-
@site = args[:site]
|
43
|
+
@credentials= {:subtenant => args[:subtenant], :uid => args[:uid], :key => args[:key], :site => args[:site]}
|
47
44
|
end
|
48
45
|
|
49
46
|
#.........................................................................................................
|
50
47
|
def method_missing(meth, *args, &blk)
|
51
|
-
if
|
52
|
-
|
48
|
+
if StorageRequest.has_rest_method?(meth)
|
49
|
+
StorageRequest.new(credentials).execute(meth, *args, &blk)
|
53
50
|
else
|
54
51
|
super
|
55
52
|
end
|
data/lib/synaptic4r/request.rb
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
module Synaptic4r
|
3
3
|
|
4
4
|
####------------------------------------------------------------------------------------------------------
|
5
|
-
|
5
|
+
####------------------------------------------------------------------------------------------------------
|
6
|
+
class StorageRequest
|
6
7
|
|
7
8
|
####------------------------------------------------------------------------------------------------------
|
8
|
-
include
|
9
|
+
include StorageRest
|
9
10
|
|
10
11
|
|
11
12
|
#.......................................................................................................
|
@@ -288,7 +289,7 @@ module Synaptic4r
|
|
288
289
|
end
|
289
290
|
|
290
291
|
|
291
|
-
####
|
292
|
+
#### SorageRequest
|
292
293
|
end
|
293
294
|
|
294
295
|
#### Synaptic4r
|
data/lib/synaptic4r/rest.rb
CHANGED
@@ -28,8 +28,9 @@ module Synaptic4r
|
|
28
28
|
case file
|
29
29
|
when String
|
30
30
|
IO.read(file, length, offset)
|
31
|
-
else
|
32
|
-
file.
|
31
|
+
else
|
32
|
+
file.seek(offset)
|
33
|
+
file.read(length)
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
@@ -37,7 +38,7 @@ module Synaptic4r
|
|
37
38
|
end
|
38
39
|
|
39
40
|
###########################################################################################################
|
40
|
-
module
|
41
|
+
module StorageRest
|
41
42
|
|
42
43
|
#------------------------------------------------------------------------------------------------------
|
43
44
|
class << self
|
@@ -202,12 +203,12 @@ module Synaptic4r
|
|
202
203
|
attr_reader :headers, :uid, :key, :site, :subtenant, :payload, :meth, :sign, :url
|
203
204
|
|
204
205
|
#.......................................................................................................
|
205
|
-
def initialize(
|
206
|
-
unary_args_given?([:uid, :subtenant, :key, :site],
|
207
|
-
@uid =
|
208
|
-
@key =
|
209
|
-
@site =
|
210
|
-
@subtenant =
|
206
|
+
def initialize(cred)
|
207
|
+
unary_args_given?([:uid, :subtenant, :key, :site], cred)
|
208
|
+
@uid = cred[:uid]
|
209
|
+
@key = cred[:key]
|
210
|
+
@site = cred[:site]
|
211
|
+
@subtenant = cred[:subtenant]
|
211
212
|
@headers = credentials
|
212
213
|
end
|
213
214
|
|
@@ -364,7 +365,7 @@ module Synaptic4r
|
|
364
365
|
end
|
365
366
|
|
366
367
|
|
367
|
-
### Rest
|
368
|
+
### Storage Rest
|
368
369
|
end
|
369
370
|
|
370
371
|
#### Synaptic4r
|
data/lib/synaptic4r/result.rb
CHANGED
@@ -327,16 +327,16 @@ module Synaptic4r
|
|
327
327
|
|
328
328
|
#.......................................................................................................
|
329
329
|
def code
|
330
|
-
@err.elements.to_a('Code').first.text
|
330
|
+
@err.elements.to_a('Code').first.text if @err.elements.to_a('Code').first
|
331
331
|
end
|
332
332
|
|
333
333
|
#.......................................................................................................
|
334
334
|
def message
|
335
|
-
@err.elements.to_a('Message').first.text
|
335
|
+
@err.elements.to_a('Message').first.text if @err.elements.to_a('Message').first
|
336
336
|
end
|
337
337
|
|
338
338
|
#.......................................................................................................
|
339
|
-
def print
|
339
|
+
def print
|
340
340
|
@err.nil? ? '' : "#{code}: #{message}"
|
341
341
|
end
|
342
342
|
|
data/lib/synaptic4r.rb
CHANGED
data/synaptic4r.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{synaptic4r}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["troystribling-att"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-03-23}
|
13
13
|
s.default_executable = %q{synrest}
|
14
14
|
s.email = %q{troy.stribling@usi.com}
|
15
15
|
s.executables = ["synrest"]
|
@@ -49,15 +49,15 @@ Gem::Specification.new do |s|
|
|
49
49
|
s.rubygems_version = %q{1.3.5}
|
50
50
|
s.summary = %q{CLI and Ruby REST Client for ATT Synaptic Storage}
|
51
51
|
s.test_files = [
|
52
|
-
"test/
|
53
|
-
"test/create_file_messages.rb",
|
52
|
+
"test/create_dir_test.rb",
|
54
53
|
"test/get_test.rb",
|
54
|
+
"test/create_file_messages.rb",
|
55
|
+
"test/mock.rb",
|
56
|
+
"test/matchers.rb",
|
55
57
|
"test/create_dir_messages.rb",
|
56
|
-
"test/
|
57
|
-
"test/create_dir_test.rb",
|
58
|
+
"test/get_messages.rb",
|
58
59
|
"test/create_file_test.rb",
|
59
|
-
"test/
|
60
|
-
"test/matchers.rb"
|
60
|
+
"test/helper.rb"
|
61
61
|
]
|
62
62
|
|
63
63
|
if s.respond_to? :specification_version then
|
data/test/create_dir_test.rb
CHANGED
@@ -15,7 +15,6 @@ class CreateDirTest < Test::Unit::TestCase
|
|
15
15
|
@client.create_dir(a).should send_request(CreateDirMessages.request(a))
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
18
|
#.........................................................................................................
|
20
19
|
should "return OID, location and creation date for created directory" do
|
21
20
|
a = @args.merge({:rpath=>'newdir'})
|
@@ -8,34 +8,51 @@ module CreateFileMessages
|
|
8
8
|
class << self
|
9
9
|
|
10
10
|
#......................................................................................................
|
11
|
-
attr_reader :oid, :date, :
|
11
|
+
attr_reader :oid, :date, :payload
|
12
12
|
attr_accessor :response_method
|
13
13
|
|
14
14
|
#......................................................................................................
|
15
15
|
def namespace_request(args)
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
payload = args[:file].kind_of?(String) ? IO.read(args[:file]) : (args[:file].rewind; args[:file].read)
|
17
|
+
size = payload.length
|
18
|
+
content_md5 = Base64.encode64(Digest::MD5.digest(payload)).chomp()
|
19
19
|
{:url => "#{args[:site]}/namespace/#{args[:rpath]}",
|
20
20
|
:http_request => :post,
|
21
|
-
:headers => {'content-length' =>
|
22
|
-
'content-md5' =>
|
21
|
+
:headers => {'content-length' => size,
|
22
|
+
'content-md5' => content_md5,
|
23
23
|
'content-type' => 'application/octet-stream'},
|
24
|
-
:payload =>
|
24
|
+
:payload => payload}
|
25
|
+
end
|
26
|
+
|
27
|
+
#......................................................................................................
|
28
|
+
def namespace_partial_request(args)
|
29
|
+
size = args[:create_endoffset] - args[:create_beginoffset] + 1
|
30
|
+
payload = if args[:file].kind_of?(String)
|
31
|
+
IO.read(args[:file], length, args[:create_beginoffset])
|
32
|
+
else
|
33
|
+
args[:file].rewind; args[:file].seek(args[:create_beginoffset]); args[:file].read(size)
|
34
|
+
end
|
35
|
+
content_md5 = Base64.encode64(Digest::MD5.digest(payload)).chomp()
|
36
|
+
{:url => "#{args[:site]}/namespace/#{args[:rpath]}",
|
37
|
+
:http_request => :post,
|
38
|
+
:headers => {'content-length' => size,
|
39
|
+
'content-md5' => content_md5,
|
40
|
+
'content-type' => 'application/octet-stream'},
|
41
|
+
:payload => payload}
|
25
42
|
end
|
26
43
|
|
27
44
|
#......................................................................................................
|
28
45
|
def listable_metadata_request(args)
|
29
|
-
|
30
|
-
|
31
|
-
|
46
|
+
payload = IO.read(args[:file])
|
47
|
+
size = payload.length
|
48
|
+
content_md5 = Base64.encode64(Digest::MD5.digest(payload)).chomp()
|
32
49
|
{:url => "#{args[:site]}/objects",
|
33
50
|
:http_request => :post,
|
34
|
-
:headers => {'content-length' =>
|
35
|
-
'content-md5' =>
|
51
|
+
:headers => {'content-length' => size,
|
52
|
+
'content-md5' => content_md5,
|
36
53
|
'x-emc-listable-meta' => args[:listable_meta],
|
37
54
|
'content-type' => 'application/octet-stream'},
|
38
|
-
:payload =>
|
55
|
+
:payload => payload}
|
39
56
|
end
|
40
57
|
|
41
58
|
#......................................................................................................
|
@@ -45,7 +62,7 @@ module CreateFileMessages
|
|
45
62
|
|
46
63
|
#......................................................................................................
|
47
64
|
def file_response(args)
|
48
|
-
HttpMessages::Result.new(:headers=> {:x_emc_delta =>
|
65
|
+
HttpMessages::Result.new(:headers=> {:x_emc_delta => size,
|
49
66
|
:date => date,
|
50
67
|
:content_type => "text/plain; charset=UTF-8",
|
51
68
|
:location => "/rest/objects/#{oid}"},
|
data/test/create_file_test.rb
CHANGED
@@ -24,10 +24,10 @@ class CreateFileTest < Test::Unit::TestCase
|
|
24
24
|
end
|
25
25
|
|
26
26
|
#.........................................................................................................
|
27
|
-
should "build request to create file with specified name and read entire file from disk when file IO object specified" do
|
27
|
+
should "build request to create file with specified name and read entire file from disk when local file IO object specified" do
|
28
28
|
CreateFileMessages.response_method = :file_response
|
29
|
-
|
30
|
-
a = @args.merge({:rpath=>'test.text', :file =>
|
29
|
+
payload = File.new('test/test.txt')
|
30
|
+
a = @args.merge({:rpath=>'test.text', :file => payload, :payload => true})
|
31
31
|
@client.create_file(a).should send_request(CreateFileMessages.namespace_request(a))
|
32
32
|
end
|
33
33
|
|
@@ -39,7 +39,32 @@ class CreateFileTest < Test::Unit::TestCase
|
|
39
39
|
res[:oid].should be(CreateFileMessages.oid)
|
40
40
|
res[:location].should be("/rest/objects/#{CreateFileMessages.oid}")
|
41
41
|
res[:date].should be(CreateFileMessages.date)
|
42
|
-
res[:size].should be(
|
42
|
+
res[:size].should be(File.size('test/test.txt'))
|
43
|
+
end
|
44
|
+
|
45
|
+
#.........................................................................................................
|
46
|
+
should "build request to create file with specified name and read a portion file from disk when local file name is specified" do
|
47
|
+
CreateFileMessages.response_method = :file_response
|
48
|
+
a = @args.merge({:rpath=>'test.text', :file => 'test/test.txt', :payload => true, :create_beginoffset => 10, :create_endoffset => 20})
|
49
|
+
@client.create_file(a).should send_request(CreateFileMessages.namespace_request(a))
|
50
|
+
end
|
51
|
+
|
52
|
+
#.........................................................................................................
|
53
|
+
should "build request to create file with specified name and read a portion file from disk when local file IO object is specified" do
|
54
|
+
CreateFileMessages.response_method = :file_response
|
55
|
+
a = @args.merge({:rpath=>'test.text', :file => 'test/test.txt', :payload => true, :create_beginoffset => 10, :create_endoffset => 20})
|
56
|
+
@client.create_file(a).should send_request(CreateFileMessages.namespace_request(a))
|
57
|
+
end
|
58
|
+
|
59
|
+
#.........................................................................................................
|
60
|
+
should "return OID, location and creation date for created file when partial file is uploaded" do
|
61
|
+
CreateFileMessages.response_method = :file_response
|
62
|
+
a = @args.merge({:listable_meta=>'test', :file => 'test/test.txt', :payload => true, :create_beginoffset => 10, :create_endoffset => 20})
|
63
|
+
res = @client.create_file(a)
|
64
|
+
res[:oid].should be(CreateFileMessages.oid)
|
65
|
+
res[:location].should be("/rest/objects/#{CreateFileMessages.oid}")
|
66
|
+
res[:date].should be(CreateFileMessages.date)
|
67
|
+
res[:size].should be(args[:create_endoffset] - args[:create_beginoffset] + 1)
|
43
68
|
end
|
44
69
|
|
45
70
|
end
|
data/test/mock.rb
CHANGED
@@ -11,7 +11,7 @@ module Synaptic4r
|
|
11
11
|
|
12
12
|
#......................................................................................................
|
13
13
|
def to_message_class(meth)
|
14
|
-
eval("#{meth.to_s.split('_').
|
14
|
+
eval("#{meth.to_s.split('_').map{|s| s.capitalize}.join}Messages")
|
15
15
|
end
|
16
16
|
|
17
17
|
### Rest
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synaptic4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- troystribling-att
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-03-23 00:00:00 -04:00
|
13
13
|
default_executable: synrest
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -85,12 +85,12 @@ signing_key:
|
|
85
85
|
specification_version: 3
|
86
86
|
summary: CLI and Ruby REST Client for ATT Synaptic Storage
|
87
87
|
test_files:
|
88
|
-
- test/get_messages.rb
|
89
|
-
- test/create_file_messages.rb
|
90
|
-
- test/get_test.rb
|
91
|
-
- test/create_dir_messages.rb
|
92
|
-
- test/helper.rb
|
93
88
|
- test/create_dir_test.rb
|
94
|
-
- test/
|
89
|
+
- test/get_test.rb
|
90
|
+
- test/create_file_messages.rb
|
95
91
|
- test/mock.rb
|
96
92
|
- test/matchers.rb
|
93
|
+
- test/create_dir_messages.rb
|
94
|
+
- test/get_messages.rb
|
95
|
+
- test/create_file_test.rb
|
96
|
+
- test/helper.rb
|