class Richpresence::Ipc
Public Class Methods
new()
click to toggle source
# File lib/ipc.rb, line 11 def initialize @socket = UNIXSocket.new("#{ipc_path}discord-ipc-0") end
Public Instance Methods
decode(data)
click to toggle source
# File lib/ipc.rb, line 26 def decode(data) code, = data[0..3].unpack 'i<' [code, data[8..-1]] end
encode(opcode, payload)
click to toggle source
# File lib/ipc.rb, line 20 def encode(opcode, payload) payload[:nonce] = format '%.20f', Time.now payload = payload.to_json [opcode, payload.length].pack('ii<') + payload end
ipc_path()
click to toggle source
# File lib/ipc.rb, line 31 def ipc_path %w[XDG_RUNTIME_DIR TMPDIR TMP TEMP].each do |directory| directory = ENV[directory] return directory if directory end '/tmp' end
send(opcode, payload)
click to toggle source
# File lib/ipc.rb, line 15 def send(opcode, payload) @socket.write(encode(opcode, payload)) decode(@socket.recvfrom(1024).first) end