sambal 0.0.6 → 0.0.7

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/lib/sambal.rb CHANGED
@@ -70,6 +70,24 @@ module Sambal
70
70
  raise RuntimeError.exception("Unknown Process Failed!! (#{$!.to_s})")
71
71
  end
72
72
  end
73
+
74
+ def file_context(path)
75
+ if (path_parts = path.split('/')).length>1
76
+ file = path_parts.pop
77
+ subdirs = path_parts.length
78
+ dir = path_parts.join('/')
79
+ cd dir
80
+ else
81
+ file = path
82
+ end
83
+ begin
84
+ yield(file)
85
+ ensure
86
+ unless subdirs.nil?
87
+ subdirs.times { cd '..' }
88
+ end
89
+ end
90
+ end
73
91
 
74
92
  def ls
75
93
  parse_files(ask("ls"))
@@ -84,14 +102,18 @@ module Sambal
84
102
  end
85
103
 
86
104
  def get(file, output)
87
- response = ask "get #{file} #{output}"
88
- if response =~ /^getting\sfile.*$/
89
- Response.new(response, true)
90
- else
91
- Response.new(response, false)
105
+ begin
106
+ file_context(file) do |file|
107
+ response = ask "get #{file} #{output}"
108
+ if response =~ /^getting\sfile.*$/
109
+ Response.new(response, true)
110
+ else
111
+ Response.new(response, false)
112
+ end
113
+ end
114
+ rescue InternalError => e
115
+ Response.new(e.message, false)
92
116
  end
93
- rescue InternalError => e
94
- Response.new(e.message, false)
95
117
  end
96
118
 
97
119
  def put(file, destination)
@@ -123,29 +145,47 @@ module Sambal
123
145
  end
124
146
 
125
147
  def del(file)
126
- if (path_parts = file.split('/')).length>1
127
- file = path_parts.pop
128
- subdirs = path_parts.length
129
- dir = path_parts.join('/')
130
- cd dir
131
- end
132
- response = ask "del #{file}"
133
- next_line = response.split("\n")[1]
134
- if next_line =~ /^smb:.*\\>/
135
- Response.new(response, true)
136
- #elsif next_line =~ /^NT_STATUS_NO_SUCH_FILE.*$/
137
- # Response.new(response, false)
138
- #elsif next_line =~ /^NT_STATUS_ACCESS_DENIED.*$/
139
- # Response.new(response, false)
140
- else
141
- Response.new(response, false)
142
- end
143
- rescue InternalError => e
144
- Response.new(e.message, false)
145
- ensure
146
- unless subdirs.nil?
147
- subdirs.times { cd '..' }
148
+ begin
149
+ file_context(file) do |file|
150
+ response = ask "del #{file}"
151
+ next_line = response.split("\n")[1]
152
+ if next_line =~ /^smb:.*\\>/
153
+ Response.new(response, true)
154
+ #elsif next_line =~ /^NT_STATUS_NO_SUCH_FILE.*$/
155
+ # Response.new(response, false)
156
+ #elsif next_line =~ /^NT_STATUS_ACCESS_DENIED.*$/
157
+ # Response.new(response, false)
158
+ else
159
+ Response.new(response, false)
160
+ end
161
+ end
162
+ rescue InternalError => e
163
+ Response.new(e.message, false)
148
164
  end
165
+ #end
166
+ #if (path_parts = file.split('/')).length>1
167
+ # file = path_parts.pop
168
+ # subdirs = path_parts.length
169
+ # dir = path_parts.join('/')
170
+ # cd dir
171
+ #end
172
+ # response = ask "del #{file}"
173
+ # next_line = response.split("\n")[1]
174
+ # if next_line =~ /^smb:.*\\>/
175
+ # Response.new(response, true)
176
+ # #elsif next_line =~ /^NT_STATUS_NO_SUCH_FILE.*$/
177
+ # # Response.new(response, false)
178
+ # #elsif next_line =~ /^NT_STATUS_ACCESS_DENIED.*$/
179
+ # # Response.new(response, false)
180
+ # else
181
+ # Response.new(response, false)
182
+ # end
183
+ #rescue InternalError => e
184
+ # Response.new(e.message, false)
185
+ #ensure
186
+ # unless subdirs.nil?
187
+ # subdirs.times { cd '..' }
188
+ # end
149
189
  end
150
190
 
151
191
  def close
@@ -1,5 +1,5 @@
1
1
  # coding: UTF-8
2
2
 
3
3
  module Sambal
4
- VERSION = "0.0.6"
4
+ VERSION = "0.0.7"
5
5
  end
@@ -14,8 +14,15 @@ describe Sambal::Client do
14
14
  f << "Hello"
15
15
  end
16
16
  FileUtils.mkdir_p "#{test_server.share_path}/#{test_directory}"
17
+ FileUtils.mkdir_p "#{test_server.share_path}/#{test_directory}/#{test_sub_directory}"
18
+ File.open("#{test_server.share_path}/#{test_directory}/#{test_sub_directory}/#{testfile_sub}", 'w') do |f|
19
+ f << "Hello"
20
+ end
21
+ FileUtils.chmod 0775, "#{test_server.share_path}/#{test_directory}/#{test_sub_directory}/#{testfile_sub}"
22
+ FileUtils.chmod 0775, "#{test_server.share_path}/#{test_directory}/#{test_sub_directory}"
17
23
  FileUtils.chmod 0775, "#{test_server.share_path}/#{test_directory}"
18
24
  FileUtils.chmod 0777, "#{test_server.share_path}/#{testfile}"
25
+ @sambal_client.cd('/')
19
26
  end
20
27
 
21
28
  after(:all) do
@@ -34,10 +41,26 @@ describe Sambal::Client do
34
41
  'testdir'
35
42
  end
36
43
 
44
+ let(:test_sub_directory) do
45
+ 'testdir_sub'
46
+ end
47
+
48
+ let(:sub_directory_path) do
49
+ "#{test_directory}/#{test_sub_directory}"
50
+ end
51
+
37
52
  let(:testfile) do
38
53
  'testfile.txt'
39
54
  end
40
55
 
56
+ let(:testfile_sub) do
57
+ 'testfile_sub.txt'
58
+ end
59
+
60
+ let(:testfile_sub_path) do
61
+ "#{sub_directory_path}/#{testfile_sub}"
62
+ end
63
+
41
64
  it "should list files on an smb server" do
42
65
  @sambal_client.ls.should have_key(testfile)
43
66
  end
@@ -48,6 +71,13 @@ describe Sambal::Client do
48
71
  File.size("/tmp/sambal_spec_testfile.txt").should == @sambal_client.ls[testfile][:size].to_i
49
72
  end
50
73
 
74
+ it "should get files in a subdirectory while in a higher level directory from an smb server" do
75
+ @sambal_client.get(testfile_sub_path, "/tmp/sambal_spec_testfile_sub.txt").should be_successful
76
+ File.exists?("/tmp/sambal_spec_testfile_sub.txt").should == true
77
+ @sambal_client.cd(sub_directory_path)
78
+ File.size("/tmp/sambal_spec_testfile_sub.txt").should == @sambal_client.ls[testfile_sub][:size].to_i
79
+ end
80
+
51
81
  it "should not be successful when getting a file from an smb server fails" do
52
82
  result = @sambal_client.get("non_existant_file.txt", "/tmp/sambal_spec_non_existant_file.txt")
53
83
  result.should_not be_successful
@@ -98,7 +128,8 @@ describe Sambal::Client do
98
128
  @sambal_client.put_content("some content", "file_to_delete").should be_successful
99
129
  @sambal_client.cd('/')
100
130
  @sambal_client.del("#{test_directory}/file_to_delete").should be_successful
101
- @sambal_client.ls.should have_key(testfile)
131
+ @sambal_client.cd('/')
132
+ @sambal_client.ls.should have_key("#{testfile}")
102
133
  end
103
134
 
104
135
  it "should not be successful when command fails" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sambal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70205361140100 !ruby/object:Gem::Requirement
16
+ requirement: &70291248058060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 2.6.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70205361140100
24
+ version_requirements: *70291248058060
25
25
  description: Ruby Samba Client using the cmdline smbclient
26
26
  email:
27
27
  - john@insane.se