Sha256: b5d34af6930d16c1f141f069873acb198b50d77426e986b4a932fc4dc8b3eea7

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

require 'json'

module Deepstream
  module Helpers
    SCHEME = 'ws://'
    DEFAULT_PORT = 6020
    DEFAULT_PATH = 'deepstream'

    def self.to_deepstream_type(value)
      case value
      when Hash then "O#{value.to_json}"
      when String then "S#{value}"
      when Numeric then "N#{value}"
      when TrueClass then 'T'
      when FalseClass then 'F'
      when NilClass then 'L'
      end
    end

    def self.to_type(payload)
      case payload[0]
      when 'O' then JSON.parse(payload[1..-1])
      when '{' then JSON.parse(payload)
      when 'S' then payload[1..-1]
      when 'N' then payload[1..-1].to_f
      when 'T' then true
      when 'F' then false
      when 'L' then nil
      else JSON.parse(payload)
      end
    end

    def self.default_options
      {
        ack_timeout: nil,
        autologin: true,
        credentials: {},
        heartbeat_interval: nil,
        max_reconnect_attempts: 5,
        max_reconnect_interval: 30,
        reconnect_interval: 1,
        verbose: false,
        debug: false
      }
    end

    def self.url(url)
      url.tap do |url|
        url.prepend(SCHEME) unless url.start_with?(SCHEME)
        url.concat(":#{DEFAULT_PORT}") unless url[/\:\d+/]
        url.concat("/#{DEFAULT_PATH}") unless url[/\/\w+$/]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
deepstream-0.2.0 lib/deepstream/helpers.rb