class Metybur::Client
Attributes
websocket[W]
Public Class Methods
new(credentials)
click to toggle source
# File lib/metybur/client.rb, line 8 def initialize(credentials) @credentials = credentials.freeze @subscription_messages = [] @collections = [] end
Public Instance Methods
call(method_name, params, &block)
click to toggle source
# File lib/metybur/client.rb, line 35 def call(method_name, params, &block) method(method_name).call(params, &block) end
collection(name)
click to toggle source
# File lib/metybur/client.rb, line 25 def collection(name) Metybur::Collection.new(name, @websocket).tap do |collection| @collections << collection end end
connect()
click to toggle source
# File lib/metybur/client.rb, line 58 def connect connect_message = { msg: 'connect', version: '1', support: ['1'] } @websocket.send(connect_message.to_json) credentials = @credentials.dup password = credentials.delete(:password) if password this = self login(user: credentials, password: password) { this.resubscribe } else resubscribe end end
method(name)
click to toggle source
# File lib/metybur/client.rb, line 31 def method(name) Metybur::Method.new(name, @websocket) end
method_missing(method, *params, &block)
click to toggle source
# File lib/metybur/client.rb, line 39 def method_missing(method, *params, &block) method = method.to_s.camelize(:lower) params.map! do |param| case param when Hash param_array = param.map { |k, v| [k.to_s.camelize(:lower), v] } Hash[param_array] else param end end call(method, params, &block) end
resubscribe()
click to toggle source
# File lib/metybur/client.rb, line 53 def resubscribe @subscription_messages.each { |message| @websocket.send(message) } @collections.each { |collection| collection.websocket = @websocket } end
subscribe(record_set_name, *params)
click to toggle source
# File lib/metybur/client.rb, line 14 def subscribe(record_set_name, *params) message = { msg: 'sub', id: 'cde', name: record_set_name, params: params }.to_json @subscription_messages << message @websocket.send message end