Sha256: 3902bc36bf487c7b98a6131a2e2274dc24ce9232ce92fdf1b603a88044c03766

Contents?: true

Size: 1.03 KB

Versions: 9

Compression:

Stored size: 1.03 KB

Contents

require 'hushed/response'
require 'hushed/request'
module Hushed
  class Blackboard
    attr_reader :client

    def initialize(client)
      @client = client
    end

    def post(document)
      bucket = client.to_quiet_bucket
      if bucket.objects[document.filename].write(document.to_xml)
        Message.new(:client => @client, :document => document)
      end
    end

    def fetch(message)
      bucket = client.from_quiet_bucket
      contents = bucket.objects[message.document_name].read
      build_document(message.document_type, contents)
    end

    def remove(message)
      bucket = client.from_quiet_bucket
      object = bucket.objects[message.document_name]
      if object.exists?
        object.delete
        true
      else
        false
      end
    end

    def build_document(type, contents)
      namespace = if Response.valid_type?(type)
        Documents::Response
      elsif Request.valid_type?(type)
        Documents::Request
      end
      namespace.const_get(type).new(:io => contents) if namespace
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hushed-0.0.9 lib/hushed/blackboard.rb
hushed-0.0.8 lib/hushed/blackboard.rb
hushed-0.0.7 lib/hushed/blackboard.rb
hushed-0.0.6 lib/hushed/blackboard.rb
hushed-0.0.5 lib/hushed/blackboard.rb
hushed-0.0.4 lib/hushed/blackboard.rb
hushed-0.0.3 lib/hushed/blackboard.rb
hushed-0.0.2 lib/hushed/blackboard.rb
hushed-0.0.1 lib/hushed/blackboard.rb