sambal 0.2.0 → 0.2.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 +5 -5
- data/lib/sambal/client.rb +40 -7
- data/lib/sambal/version.rb +1 -1
- data/spec/sambal/client_spec.rb +11 -0
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: fd8dcc698177728a2089a8ef9bf157d4e1e0d11e59083399b5b0fceecf9b0331
         | 
| 4 | 
            +
              data.tar.gz: 8ff8321bc0480bc5fe4422c697dceceb0a2743e0a4ac6e35cfc4ef4dab739ee4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 313f5d0d5ae699228ba5874cc69f72debe1ae7364643e2040d19aa98ae81e874017be52978c576e67478a7bb63ce27170db00f3801dc262b9620778a367f22f1
         | 
| 7 | 
            +
              data.tar.gz: 040f2c1e8d7bf126feeda45bdf28c6aeba75778f9491afd5d2999e1b15953540e74239ad0d1ca92518ba51ccff030df3ec84175a172609800f6e7a9671f5bb61
         | 
    
        data/lib/sambal/client.rb
    CHANGED
    
    | @@ -31,18 +31,21 @@ module Sambal | |
| 31 31 | 
             
                    options = parsed_options(user_options)
         | 
| 32 32 | 
             
                    @timeout = options[:timeout].to_i
         | 
| 33 33 |  | 
| 34 | 
            -
                     | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 34 | 
            +
                    password =
         | 
| 35 | 
            +
                      if options[:authfile]
         | 
| 36 | 
            +
                        "--authentication-file #{options[:authfile]}"
         | 
| 37 | 
            +
                      elsif options[:password]
         | 
| 38 | 
            +
                        options[:password]
         | 
| 39 | 
            +
                      else
         | 
| 40 | 
            +
                        '--no-pass'
         | 
| 41 | 
            +
                      end
         | 
| 38 42 | 
             
                    command = "COLUMNS=#{options[:columns]} smbclient \"//#{options[:host]}/#{options[:share]}\" #{password}"
         | 
| 39 43 |  | 
| 40 | 
            -
                    @output, @input, @pid = PTY.spawn(command  | 
| 44 | 
            +
                    @output, @input, @pid = PTY.spawn("#{command} #{option_flags(options)}")
         | 
| 41 45 |  | 
| 42 46 | 
             
                    res = @output.expect(/(.*\n)?smb:.*\\>/, @timeout)[0] rescue nil
         | 
| 43 47 | 
             
                    @connected = case res
         | 
| 44 48 | 
             
                    when nil
         | 
| 45 | 
            -
                      $stderr.puts "Failed to connect"
         | 
| 46 49 | 
             
                      false
         | 
| 47 50 | 
             
                    when /^put/
         | 
| 48 51 | 
             
                      res['putting'].nil? ? false : true
         | 
| @@ -58,7 +61,7 @@ module Sambal | |
| 58 61 |  | 
| 59 62 | 
             
                    unless @connected
         | 
| 60 63 | 
             
                      close if @pid
         | 
| 61 | 
            -
                       | 
| 64 | 
            +
                      raise 'Failed to connect'
         | 
| 62 65 | 
             
                    end
         | 
| 63 66 | 
             
                  rescue => e
         | 
| 64 67 | 
             
                    raise RuntimeError, "Unknown Process Failed!! (#{$!.to_s}): #{e.message.inspect}\n"+e.backtrace.join("\n")
         | 
| @@ -123,6 +126,17 @@ module Sambal | |
| 123 126 | 
             
                  end
         | 
| 124 127 | 
             
                end
         | 
| 125 128 |  | 
| 129 | 
            +
                def rename(old_filename, new_filename)
         | 
| 130 | 
            +
                  response = ask_wrapped 'rename', [old_filename, new_filename]
         | 
| 131 | 
            +
                  if response =~ /renaming\sfile/ # "renaming" reponse only exist if has error
         | 
| 132 | 
            +
                    Response.new(response, false)
         | 
| 133 | 
            +
                  else
         | 
| 134 | 
            +
                    Response.new(response, true)
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
                rescue InternalError => e
         | 
| 137 | 
            +
                  Response.new(e.message, false)
         | 
| 138 | 
            +
                end
         | 
| 139 | 
            +
             | 
| 126 140 | 
             
                def put(file, destination)
         | 
| 127 141 | 
             
                  response = ask_wrapped 'put', [file, destination]
         | 
| 128 142 | 
             
                  if response =~ /^putting\sfile.*$/
         | 
| @@ -286,5 +300,24 @@ module Sambal | |
| 286 300 | 
             
                  end
         | 
| 287 301 | 
             
                  Hash[listing.sort]
         | 
| 288 302 | 
             
                end
         | 
| 303 | 
            +
             | 
| 304 | 
            +
                private
         | 
| 305 | 
            +
             | 
| 306 | 
            +
                def option_flags(options)
         | 
| 307 | 
            +
                  flags = []
         | 
| 308 | 
            +
                  flags << "--workgroup \"#{options[:domain]}\"" if options[:domain] && !options[:authfile]
         | 
| 309 | 
            +
                  flags << "--user \"#{options[:user]}\"" if options[:user] && !options[:authfile]
         | 
| 310 | 
            +
                  flags << "--ip-address #{options[:ip_address]}" if options[:ip_address]
         | 
| 311 | 
            +
                  flags << "--send-buffer #{options[:buffer_size]}" if options[:buffer_size]
         | 
| 312 | 
            +
                  flags << "--debuglevel #{options[:debug_level]}" if options[:debug_level]
         | 
| 313 | 
            +
                  flags << '--encrypt' if options[:encrypt]
         | 
| 314 | 
            +
                  flags << "--max-protocol #{options[:max_protocol]}" if options[:max_protocol]
         | 
| 315 | 
            +
                  flags << '--use-ccache' if options[:use_ccache]
         | 
| 316 | 
            +
                  flags << "--socket-options #{options[:socket_options]}" if options[:socket_options]
         | 
| 317 | 
            +
                  flags << "--port #{options[:port]}" if options[:port]
         | 
| 318 | 
            +
                  flags << "--name-resolve #{options[:name_resolve]}" if options[:name_resolve]
         | 
| 319 | 
            +
                  flags << (options[:configfile] ? "--configfile #{options[:configfile]}" : '--configfile /dev/null')
         | 
| 320 | 
            +
                  flags.join(' ')
         | 
| 321 | 
            +
                end
         | 
| 289 322 | 
             
              end
         | 
| 290 323 | 
             
            end
         | 
    
        data/lib/sambal/version.rb
    CHANGED
    
    
    
        data/spec/sambal/client_spec.rb
    CHANGED
    
    | @@ -140,6 +140,17 @@ describe Sambal::Client do | |
| 140 140 | 
             
                end
         | 
| 141 141 | 
             
              end
         | 
| 142 142 |  | 
| 143 | 
            +
              describe 'rename' do
         | 
| 144 | 
            +
                it 'is successful when renaming an existing file' do
         | 
| 145 | 
            +
                  expect(@sambal_client.rename(TESTFILE, 'renamed_file.txt')).to be_successful
         | 
| 146 | 
            +
                  expect(File.exists?(File.join(test_server.share_path, 'renamed_file.txt'))).to eq true
         | 
| 147 | 
            +
                end
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                it 'is unsuccessful when the file does not exist' do
         | 
| 150 | 
            +
                  expect(@sambal_client.rename('unknown_file.txt', 'renamed_file.txt')).not_to be_successful
         | 
| 151 | 
            +
                end
         | 
| 152 | 
            +
              end
         | 
| 153 | 
            +
             | 
| 143 154 | 
             
              it "should get files from an smb server" do
         | 
| 144 155 | 
             
                expect(@sambal_client.get(TESTFILE, "/tmp/sambal_spec_testfile.txt")).to be_successful
         | 
| 145 156 | 
             
                expect(File.exists?("/tmp/sambal_spec_testfile.txt")).to eq true
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sambal
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - John Axel Eriksson
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2018-08-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rspec
         | 
| @@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 66 66 | 
             
                  version: '0'
         | 
| 67 67 | 
             
            requirements: []
         | 
| 68 68 | 
             
            rubyforge_project: 
         | 
| 69 | 
            -
            rubygems_version: 2.6 | 
| 69 | 
            +
            rubygems_version: 2.7.6
         | 
| 70 70 | 
             
            signing_key: 
         | 
| 71 71 | 
             
            specification_version: 4
         | 
| 72 72 | 
             
            summary: Ruby Samba Client
         |