Sha256: b2896694095227db7d1c14ee68f807d55c9a4b013ab98a0dcf9d2ad79398a2d0

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 KB

Contents

require 'json'
require 'fileutils'
module KNSEmailEndpoint
  module Storage
    class FileStorage < AbstractStorage
      attr_reader :name

      def initialize(settings={})
        @dir = settings[:file_location]
        raise "Unknown file_location" unless @dir
        FileUtils.mkdir_p @dir

        super(settings)
        @name = "file"
                
      end

      def delete
        return false unless @current_file
        FileUtils.rm @current_file if File.exists? @current_file
        reset_storage
        return true
      end

      def create(opts={})
        options = {
          :state => :unprocessed,
          :retry_count => 0
        }.merge! opts
        raise ":unique_id is required" unless options[:unique_id]
        raise ":message_id is required" unless options[:message_id]

        @current_file = File.join(@dir, options[:unique_id]) 

        if File.exists? @current_file
          raise "unique_id #{options[:unique_id]} already exists"
        end
        
        set_vars(options)
        save!
        
        return true
      end

      def find(unique_id)
        lookup_file = File.join(@dir, unique_id)
        if File.exists? lookup_file
          @current_file = lookup_file
          set_vars JSON.parse(File.open(@current_file, 'r').read)
          return self
        else
          reset_storage
          return nil
        end
      end

      def delete_all
        FileUtils.remove_dir(@dir, true)
        FileUtils.mkdir_p @dir
      end


      private

      def save!
        File.open(@current_file, "w") do |f|
          f.write to_h.to_json
        end
      end


    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kns_email_endpoint-0.1.2 lib/kns_email_endpoint/storage/file_storage.rb
kns_email_endpoint-0.1.1 lib/kns_email_endpoint/storage/file_storage.rb
kns_email_endpoint-0.1.0 lib/kns_email_endpoint/storage/file_storage.rb