Sha256: 51f1e2920d47e611ef967c9c2aabfd9e632d87b6717f8e4a4e33745cb921f23c

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

require 'json'
require 'base64'
require File.dirname(__FILE__) + '/response'

module NSISam
  class FakeClient

    attr_accessor :expire

    def initialize
      @storage = {}
    end

    def store(data)
      key = Time.now.to_i.to_s
      @storage[key] = JSON.load(data.to_json) unless @expire
      Response.new 'key' => key, 'checksum' => 0
    end

    def store_file(file, type=:file)
      key = Time.now.to_i.to_s
      @storage[key] = {type.to_s => Base64.encode64(file)}.to_json unless @expire
      Response.new "key" => key, "checksum" => 0
    end

    def get(key, expected_checksum=nil)
      if @storage.has_key?(key)
        Response.new 'data' => @storage[key]
      else
        raise NSISam::Errors::Client::KeyNotFoundError
      end
    end

    def get_file(key, type=:file)
      if @storage.has_key?(key)
        response = Hash.new 'data' => Base64.decode64(@storage[key][type.to_s])
        Response.new response
      else
        raise NSISam::Errors::Client::KeyNotFoundError
      end
    end

    def delete(key)
      if @storage.has_key?(key)
        @storage.delete key
        Response.new 'deleted' => true
      else
        raise NSISam::Errors::Client::KeyNotFoundError
      end
    end

    def update(key, value)
      if @storage.has_key?(key)
        if @expire
          @storage.delete(key)
        else
          @storage[key] = value 
        end
        Response.new 'key' => key, 'checksum' => 0 
      else
        raise NSISam::Errors::Client::KeyNotFoundError
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nsisam-0.6.4 lib/nsisam/fake_client.rb