|
@@ -4,176 +4,154 @@ import {Api} from "../tl";
|
|
|
|
|
|
export abstract class Session {
|
|
|
|
|
|
- /**
|
|
|
- * Creates a clone of this session file
|
|
|
- * @param toInstance {Session|null}
|
|
|
- * @returns {Session}
|
|
|
- */
|
|
|
-
|
|
|
- /* CONTEST
|
|
|
- clone(toInstance = null) {
|
|
|
- return toInstance || new this.constructor()
|
|
|
- }*/
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the information of the data center address and port that
|
|
|
- * the library should connect to, as well as the data center ID,
|
|
|
- * which is currently unused.
|
|
|
- * @param dcId {number}
|
|
|
- * @param serverAddress {string}
|
|
|
- * @param port {number}
|
|
|
- */
|
|
|
- abstract setDC(dcId: number, serverAddress: string, port: number): void;
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the currently-used data center ID.
|
|
|
- */
|
|
|
- abstract get dcId(): number ;
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the server address where the library should connect to.
|
|
|
- */
|
|
|
- abstract get serverAddress(): string | undefined;
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns the port to which the library should connect to.
|
|
|
- */
|
|
|
- abstract get port(): number | undefined ;
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns an ``AuthKey`` instance associated with the saved
|
|
|
- * data center, or `None` if a new one should be generated.
|
|
|
- */
|
|
|
- abstract get authKey(): AuthKey | undefined ;
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the ``AuthKey`` to be used for the saved data center.
|
|
|
- * @param value
|
|
|
- */
|
|
|
- abstract set authKey(value: AuthKey | undefined) ;
|
|
|
-
|
|
|
- /**
|
|
|
- * Called before using the session
|
|
|
- */
|
|
|
- abstract load(): Promise<void>
|
|
|
-
|
|
|
- /**
|
|
|
- * sets auth key for a dc
|
|
|
- */
|
|
|
- abstract setAuthKey(authKey?: AuthKey, dcId?: number): void;
|
|
|
-
|
|
|
- /**
|
|
|
- * gets auth key for a dc
|
|
|
- */
|
|
|
-
|
|
|
- abstract getAuthKey(dcId?: number): AuthKey | undefined ;
|
|
|
-
|
|
|
- /**
|
|
|
- *
|
|
|
- * @param key
|
|
|
- */
|
|
|
- abstract getInputEntity(key: EntityLike): Api.TypeInputPeer;
|
|
|
-
|
|
|
- /**
|
|
|
- * Returns an ID of the takeout process initialized for this session,
|
|
|
- * or `None` if there's no were any unfinished takeout requests.
|
|
|
- */
|
|
|
- /*CONTEST
|
|
|
- get takeoutId() {
|
|
|
- throw new Error('Not Implemented')
|
|
|
- }
|
|
|
- */
|
|
|
- /**
|
|
|
- * Sets the ID of the unfinished takeout process for this session.
|
|
|
- * @param value
|
|
|
- */
|
|
|
- /*CONTEST
|
|
|
- set takeoutId(value) {
|
|
|
- throw new Error('Not Implemented')
|
|
|
- }
|
|
|
- */
|
|
|
- /**
|
|
|
- * Returns the ``UpdateState`` associated with the given `entity_id`.
|
|
|
- * If the `entity_id` is 0, it should return the ``UpdateState`` for
|
|
|
- * no specific channel (the "general" state). If no state is known
|
|
|
- * it should ``return None``.
|
|
|
- * @param entityId
|
|
|
- */
|
|
|
- /*CONTEST
|
|
|
- getUpdateState(entityId) {
|
|
|
- throw new Error('Not Implemented')
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
- /**
|
|
|
- * Sets the given ``UpdateState`` for the specified `entity_id`, which
|
|
|
- * should be 0 if the ``UpdateState`` is the "general" state (and not
|
|
|
- * for any specific channel).
|
|
|
- * @param entityId
|
|
|
- * @param state
|
|
|
- */
|
|
|
- /*CONTEST
|
|
|
- setUpdateState(entityId, state) {
|
|
|
- throw new Error('Not Implemented')
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
- /**
|
|
|
- * Called on client disconnection. Should be used to
|
|
|
- * free any used resources. Can be left empty if none.
|
|
|
- */
|
|
|
-
|
|
|
- /*CONTEST
|
|
|
- close() {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
- /**
|
|
|
- * called whenever important properties change. It should
|
|
|
- * make persist the relevant session information to disk.
|
|
|
- */
|
|
|
- abstract save(): void;
|
|
|
-
|
|
|
- /**
|
|
|
- * Called upon client.log_out(). Should delete the stored
|
|
|
- * information from disk since it's not valid anymore.
|
|
|
- */
|
|
|
-
|
|
|
- abstract delete(): void;
|
|
|
-
|
|
|
- /**
|
|
|
- * Lists available sessions. Not used by the library itself.
|
|
|
- */
|
|
|
-
|
|
|
- /*CONTEST
|
|
|
- listSessions() {
|
|
|
- throw new Error('Not Implemented')
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
- /**
|
|
|
- * Processes the input ``TLObject`` or ``list`` and saves
|
|
|
- * whatever information is relevant (e.g., ID or access hash).
|
|
|
- * @param tlo
|
|
|
- */
|
|
|
- abstract processEntities(tlo: any): void;
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * Turns the given key into an ``InputPeer`` (e.g. ``InputPeerUser``).
|
|
|
- * The library uses this method whenever an ``InputPeer`` is needed
|
|
|
- * to suit several purposes (e.g. user only provided its ID or wishes
|
|
|
- * to use a cached username to avoid extra RPC).
|
|
|
- */
|
|
|
- /*CONTEST
|
|
|
- getInputEntity(key) {
|
|
|
- throw new Error('Not Implemented')
|
|
|
- }
|
|
|
-
|
|
|
- */
|
|
|
+ /**
|
|
|
+ * Creates a clone of this session file
|
|
|
+ * @param toInstance {Session|null}
|
|
|
+ * @returns {Session}
|
|
|
+ */
|
|
|
+
|
|
|
+ /* CONTEST
|
|
|
+ clone(toInstance = null) {
|
|
|
+ return toInstance || new this.constructor()
|
|
|
+ }*/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the information of the data center address and port that
|
|
|
+ * the library should connect to, as well as the data center ID,
|
|
|
+ * which is currently unused.
|
|
|
+ * @param dcId {number}
|
|
|
+ * @param serverAddress {string}
|
|
|
+ * @param port {number}
|
|
|
+ */
|
|
|
+ abstract setDC(dcId: number, serverAddress: string, port: number): void;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the currently-used data center ID.
|
|
|
+ */
|
|
|
+ abstract get dcId(): number ;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the server address where the library should connect to.
|
|
|
+ */
|
|
|
+ abstract get serverAddress(): string | undefined;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns the port to which the library should connect to.
|
|
|
+ */
|
|
|
+ abstract get port(): number | undefined ;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns an ``AuthKey`` instance associated with the saved
|
|
|
+ * data center, or `None` if a new one should be generated.
|
|
|
+ */
|
|
|
+ abstract get authKey(): AuthKey | undefined ;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the ``AuthKey`` to be used for the saved data center.
|
|
|
+ * @param value
|
|
|
+ */
|
|
|
+ abstract set authKey(value: AuthKey | undefined) ;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called before using the session
|
|
|
+ */
|
|
|
+ abstract load(): Promise<void>
|
|
|
+
|
|
|
+ /**
|
|
|
+ * sets auth key for a dc
|
|
|
+ */
|
|
|
+ abstract setAuthKey(authKey?: AuthKey, dcId?: number): void;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * gets auth key for a dc
|
|
|
+ */
|
|
|
+
|
|
|
+ abstract getAuthKey(dcId?: number): AuthKey | undefined ;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Turns the given key into an ``InputPeer`` (e.g. ``InputPeerUser``).
|
|
|
+ * The library uses this method whenever an ``InputPeer`` is needed
|
|
|
+ * to suit several purposes (e.g. user only provided its ID or wishes
|
|
|
+ * to use a cached username to avoid extra RPC).
|
|
|
+ */
|
|
|
+ abstract getInputEntity(key: EntityLike): Api.TypeInputPeer;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Returns an ID of the takeout process initialized for this session,
|
|
|
+ * or `None` if there's no were any unfinished takeout requests.
|
|
|
+ */
|
|
|
+ /*CONTEST
|
|
|
+ get takeoutId() {
|
|
|
+ throw new Error('Not Implemented')
|
|
|
+ }
|
|
|
+ */
|
|
|
+ /**
|
|
|
+ * Sets the ID of the unfinished takeout process for this session.
|
|
|
+ * @param value
|
|
|
+ */
|
|
|
+ /*CONTEST
|
|
|
+ set takeoutId(value) {
|
|
|
+ throw new Error('Not Implemented')
|
|
|
+ }
|
|
|
+ */
|
|
|
+ /**
|
|
|
+ * Returns the ``UpdateState`` associated with the given `entity_id`.
|
|
|
+ * If the `entity_id` is 0, it should return the ``UpdateState`` for
|
|
|
+ * no specific channel (the "general" state). If no state is known
|
|
|
+ * it should ``return None``.
|
|
|
+ * @param entityId
|
|
|
+ */
|
|
|
+ /*CONTEST
|
|
|
+ getUpdateState(entityId) {
|
|
|
+ throw new Error('Not Implemented')
|
|
|
+ }
|
|
|
+
|
|
|
+ */
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the given ``UpdateState`` for the specified `entity_id`, which
|
|
|
+ * should be 0 if the ``UpdateState`` is the "general" state (and not
|
|
|
+ * for any specific channel).
|
|
|
+ * @param entityId
|
|
|
+ * @param state
|
|
|
+ */
|
|
|
+
|
|
|
+ /*CONTEST
|
|
|
+ setUpdateState(entityId, state) {
|
|
|
+ throw new Error('Not Implemented')
|
|
|
+ }
|
|
|
+
|
|
|
+ */
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called on client disconnection. Should be used to
|
|
|
+ * free any used resources. Can be left empty if none.
|
|
|
+ */
|
|
|
+
|
|
|
+ abstract close(): void;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * called whenever important properties change. It should
|
|
|
+ * make persist the relevant session information to disk.
|
|
|
+ */
|
|
|
+ abstract save(): void;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Called upon client.log_out(). Should delete the stored
|
|
|
+ * information from disk since it's not valid anymore.
|
|
|
+ */
|
|
|
+
|
|
|
+ abstract delete(): void;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Processes the input ``TLObject`` or ``list`` and saves
|
|
|
+ * whatever information is relevant (e.g., ID or access hash).
|
|
|
+ * @param tlo
|
|
|
+ */
|
|
|
+ abstract processEntities(tlo: any): void;
|
|
|
+
|
|
|
+
|
|
|
}
|