Sha256: 185837fc95386a03f66c1b0465a70860d6bf418fc85563e6639ac57b6f22ae76

Contents?: true

Size: 1.08 KB

Versions: 5

Compression:

Stored size: 1.08 KB

Contents

require 'xftp/helpers/logging'
require 'xftp/dsl/block_evaluator'

module XFTP
  module Session
    # @abstract Base class for xftp session adapters
    # @api private
    class Base
      include DSL::BlockEvaluator
      include Helpers::Logging

      attr_reader :uri, :credentials, :settings

      # Creates a session adapter instance
      # @param [URI] uri the remote uri
      # @param [Hash] settings the adapter connection settings
      def initialize(uri, settings = {})
        @uri = uri
        @credentials = settings.delete(:credentials) || {}
        @settings = settings
      end

      # Opens a new connection, evaluates the given block and closes the connection
      # @param [Proc] callback the callback to operate on a connection session
      def start(&callback)
        log 'starting'
        open
        evaluate(&callback)
        close
        log 'done'
      end

      protected

      def ensure_relative_path!(operation, path)
        fail ArgumentError, "Absolute path can't be specified for `#{operation}`" if Pathname.new(path).absolute?
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
xftp-0.5.0 lib/xftp/session/base.rb
xftp-0.4.4 lib/xftp/session/base.rb
xftp-0.4.3 lib/xftp/session/base.rb
xftp-0.4.2 lib/xftp/session/base.rb
xftp-0.4.1 lib/xftp/session/base.rb