Sha256: a4a0912cfa06658f72ac9d7c9d3bc4c7f680cb63f47e9170a71cb9868f286ce9

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require 'socky/authenticator'
require 'multi_json'
require 'crack/core_extensions' # Used for Hash#to_params

module Socky
  class Client
    class Request
      
      attr_reader :client, :event, :channel, :data

      def initialize(client, event, channel, data = nil)
        @client = client
        @event = event
        @channel = channel
        @data = MultiJson.encode(data)
      end
            
      def timestamp
        @timestamp ||= Time.now.to_i
      end
      
      def body
        content = {}
        content['event'] = @event
        content['channel'] = @channel
        content['timestamp'] = timestamp
        content['data'] = @data
        content['auth'] = auth_string
        content.to_params
      end
      
      private
      
      def auth_string
        Authenticator.authenticate({
          :connection_id => timestamp,
          :channel => @channel,
          :event => @event,
          :data => @data
        }, {
          :secret => @client.secret,
          :method => :http
        })['auth']
      rescue => e
        raise AuthenticationError, e.message
      end
      
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
socky-client-0.5.0 lib/socky/client/request.rb
socky-client-0.5.0.beta1 lib/socky/client/request.rb