Module: GrubY::TDLib::UserSession
- Defined in:
- lib/gruubY/tdlib/user_session.rb
Constant Summary collapse
- VERSION =
1
Class Method Summary collapse
- .build(session_name: "default", root: "storage/tdlib-sessions") ⇒ Object
- .client_kwargs(session_string) ⇒ Object
- .decode(session_string) ⇒ Object
- .encode(api_id:, api_hash:, database_directory:, files_directory:, database_encryption_key: "", session_name: nil) ⇒ Object
Class Method Details
.build(session_name: "default", root: "storage/tdlib-sessions") ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/gruubY/tdlib/user_session.rb', line 45 def build(session_name: "default", root: "storage/tdlib-sessions") normalized = session_name.to_s.strip normalized = "default" if normalized.empty? { session_name: normalized, database_directory: File.join(root, normalized, "db"), files_directory: File.join(root, normalized, "files"), database_encryption_key: SecureRandom.hex(24) } end |
.client_kwargs(session_string) ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/gruubY/tdlib/user_session.rb', line 57 def client_kwargs(session_string) payload = decode(session_string) { api_id: payload.fetch("api_id").to_i, api_hash: payload.fetch("api_hash").to_s, database_directory: payload.fetch("database_directory").to_s, files_directory: payload.fetch("files_directory").to_s, database_encryption_key: payload.fetch("database_encryption_key").to_s } end |
.decode(session_string) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/gruubY/tdlib/user_session.rb', line 32 def decode(session_string) raise ArgumentError, "session_string is empty" if session_string.to_s.strip.empty? payload = JSON.parse(Base64.urlsafe_decode64(session_string.to_s.strip)) unless payload.is_a?(Hash) && payload["v"].to_i == VERSION raise ArgumentError, "invalid session string version" end payload rescue ArgumentError, JSON::ParserError => e raise ArgumentError, "invalid session string: #{e.}" end |
.encode(api_id:, api_hash:, database_directory:, files_directory:, database_encryption_key: "", session_name: nil) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/gruubY/tdlib/user_session.rb', line 12 def encode( api_id:, api_hash:, database_directory:, files_directory:, database_encryption_key: "", session_name: nil ) payload = { "v" => VERSION, "api_id" => api_id.to_i, "api_hash" => api_hash.to_s, "database_directory" => database_directory.to_s, "files_directory" => files_directory.to_s, "database_encryption_key" => database_encryption_key.to_s, "session_name" => session_name.to_s } Base64.urlsafe_encode64(payload.to_json) end |