mtproto 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f989bd9b9704f0fbb46d0c538a2f0dfea8e1c9a387830e875ffecc44b0ad872a
4
- data.tar.gz: acd4865006b5a95364fd5cfaf4db71366137571faeedd1623edf20bae0e3bf9e
3
+ metadata.gz: ef5c11c5bf0b9bfe4f3b80e905270264b5658bc55a2932e92c945df8ba0dc723
4
+ data.tar.gz: 58fec06d053d66b52c382049e7fb917dbf0c4af2395c7f81f5dcb66d70778228
5
5
  SHA512:
6
- metadata.gz: 20d07a1e57c051d9ca1a3617191e7222b7bd2a6674546473c00130a5cec94ef6dae02c0ce2f0c1cc2df5fd924aadeea3d0405a39f931ec345ba87575bb0183ad
7
- data.tar.gz: 91f8f836e61180a4fb41b1ca9a56807449e809acf794b7b01fbf7c3bd34ae7ebb4d18c704fc1c53045777e49bc73fb0f604fc2b20c59f54c41afe5a12ff689ff
6
+ metadata.gz: b108736ec52172e501b8609b6c8b5596052b7fa80d72bfaa6cadb393baddbe89ec009148da487f3b8c16b9a6000e5bdea4aa5b15c77fd9ddd19ce43ae8db6763
7
+ data.tar.gz: 3268f1b6943ea7c470ee274a56cbc3e4d3c5a2aebff7e8b5b4522805e8a922756932cb396909650f520cb3153d75d8e34a61e5952916602421ed01df2b9e5c7e
@@ -99,7 +99,7 @@ module MTProto
99
99
 
100
100
  offset = schema.skip(data, offset) if flags.anybits?(1 << 8) # from_id (Peer)
101
101
  offset += 4 if flags.anybits?(1 << 29) # from_boosts_applied
102
- offset = schema.skip(data, offset) # peer_id (Peer, always present)
102
+ peer_type, peer_id, offset = parse_peer(data, offset)
103
103
  offset = schema.skip(data, offset) if flags.anybits?(1 << 28) # saved_peer_id
104
104
  offset = schema.skip(data, offset) if flags.anybits?(1 << 2) # fwd_from
105
105
  offset += 8 if flags.anybits?(1 << 11) # via_bot_id
@@ -110,7 +110,23 @@ module MTProto
110
110
  offset += 4
111
111
  message_text, = read_tl_string(data, offset)
112
112
 
113
- { id: id, date: date, message: message_text }
113
+ { id: id, date: date, message: message_text, peer_type: peer_type, peer_id: peer_id }
114
+ end
115
+
116
+ def parse_peer(data, offset)
117
+ constructor = data[offset, 4].unpack1('L<')
118
+ offset += 4
119
+
120
+ case constructor
121
+ when Constructors::PEER_USER
122
+ [:user, data[offset, 8].unpack1('Q<'), offset + 8]
123
+ when Constructors::PEER_CHAT
124
+ [:chat, data[offset, 8].unpack1('Q<'), offset + 8]
125
+ when Constructors::PEER_CHANNEL
126
+ [:channel, data[offset, 8].unpack1('Q<'), offset + 8]
127
+ else
128
+ raise "Unknown peer constructor: 0x#{constructor.to_s(16)}"
129
+ end
114
130
  end
115
131
 
116
132
  def read_tl_string(data, offset)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MTProto
4
- VERSION = '0.0.12'
4
+ VERSION = '0.0.13'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mtproto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Levenkov