Sha256: 715f45e64211c64a1718d095e7bd94d414d0d14647e0f92ee9345d229b4631d3

Contents?: true

Size: 918 Bytes

Versions: 2

Compression:

Stored size: 918 Bytes

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
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xftp-0.3.3 lib/xftp/session/base.rb
xftp-0.3.1 lib/xftp/session/base.rb