Class: Richpresence::Ipc
- Inherits:
-
Object
- Object
- Richpresence::Ipc
- Defined in:
- lib/ipc.rb
Instance Method Summary collapse
- #decode(data) ⇒ Object
- #encode(opcode, payload) ⇒ Object
-
#initialize ⇒ Ipc
constructor
A new instance of Ipc.
- #ipc_path ⇒ Object
- #send(opcode, payload) ⇒ Object
Constructor Details
#initialize ⇒ Ipc
Returns a new instance of Ipc.
11 12 13 |
# File 'lib/ipc.rb', line 11 def initialize @socket = UNIXSocket.new("#{ipc_path}discord-ipc-0") end |
Instance Method Details
#decode(data) ⇒ Object
26 27 28 29 |
# File 'lib/ipc.rb', line 26 def decode(data) code, = data[0..3].unpack 'i<' [code, data[8..-1]] end |
#encode(opcode, payload) ⇒ Object
20 21 22 23 24 |
# 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 ⇒ Object
31 32 33 34 35 36 37 38 |
# 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) ⇒ Object
15 16 17 18 |
# File 'lib/ipc.rb', line 15 def send(opcode, payload) @socket.write(encode(opcode, payload)) decode(@socket.recvfrom(1024).first) end |