Sha256: 775ef9d6fd3205e1662ce81f2c11fd6fdf00fff9c30f592ff6bca4532dcbefca

Contents?: true

Size: 2 KB

Versions: 3

Compression:

Stored size: 2 KB

Contents

module Pione
  # Resource is a module for data resources.
  module Resource
    # ResourceError is raised when any resource errors happen.
    class ResourceError < Exception
      def initialize(uri)
        @uri = uri
      end
    end

    class NotFound < ResourceError; end

    # @api private
    @@schemes = {}

    # Returns the resource object corresponding to the uri.
    # @return [BasicResource]
    #   resouce object
    def self.[](uri)
      uri = uri.kind_of?(::URI::Generic) ? uri : ::URI.parse(uri)
      @@schemes[uri.scheme].new(uri)
    end

    # BasicResource is an interface class for all resouce classes.
    class BasicResource
      attr_reader :uri
      attr_reader :path

      # Creates a data resource on URI.
      # @param [String] data
      #   data content
      # @return[void]
      def create(data)
        raise NotImplementedError
      end

      # Reads a resource data from URI.
      # @return [String]
      #   data content
      def read
        raise NotImplementedError
      end

      # Updates a resource data on URI.
      # @param [String] data
      #   new data content
      # @return [void]
      def update(data)
        raise NotImplementedError
      end

      # Deletes a resource data on URI.
      # @return [void]
      def delete
        raise NotImplementedError
      end

      # Returns mtime of the resource.
      # @return [Time]
      #   mtime
      def mtime
        raise NotImplementedError
      end

      # Returns entries of the resource path.
      # @return [Array<Resource>]
      #   resource entries of the resource path
      def entries
        raise NotImplementedError
      end

      # Returns the basename of resource.
      # @return [String]
      #   basename
      def basename
        raise NotImplementedError
      end

      def exist?
        raise NotImplementedError
      end

      def link_to(dist)
        raise NotImplementedError
      end

      def link_from(dist)
        raise NotImplementedError
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.1.2 lib/pione/resource/basic-resource.rb
pione-0.1.1 lib/pione/resource/basic-resource.rb
pione-0.1.0 lib/pione/resource/basic-resource.rb