711 lines
13 KiB
Markdown
711 lines
13 KiB
Markdown
---
|
|
title: danog\MadelineProto\Tools: Some tools.
|
|
description:
|
|
|
|
image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png
|
|
---
|
|
# `danog\MadelineProto\Tools`
|
|
[Back to index](../../index.md)
|
|
|
|
> Author: Daniil Gentili <daniil@daniil.it>
|
|
|
|
|
|
Some tools.
|
|
|
|
|
|
|
|
|
|
## Method list:
|
|
* `genVectorHash(array $ints): \int Vector hash`
|
|
* `randomInt(int $modulus): int`
|
|
* `random(int $length): \string Random string`
|
|
* `posmod(int $a, int $b): \int Modulo`
|
|
* `unpackSignedInt(string $value): int`
|
|
* `unpackSignedLong(string $value): int`
|
|
* `unpackSignedLongString(string $value): string`
|
|
* `packSignedInt(int $value): string`
|
|
* `packSignedLong(int $value): string`
|
|
* `packUnsignedInt(int $value): string`
|
|
* `packDouble(float $value): string`
|
|
* `unpackDouble(string $value): float`
|
|
* `wait(\Generator|\Amp\Promise $promise, bool $ignoreSignal): mixed`
|
|
* `all((\Generator|\Amp\Promise)[] $promises): \Amp\Promise`
|
|
* `any((\Amp\Promise|\Generator)[] $promises): \Amp\Promise`
|
|
* `some((\Amp\Promise|\Generator)[] $promises): \Amp\Promise`
|
|
* `first((\Amp\Promise|\Generator)[] $promises): \Amp\Promise`
|
|
* `timeout(\Generator|\Amp\Promise $promise, int $timeout): \Amp\Promise`
|
|
* `timeoutWithDefault(\Amp\Promise|\Generator $promise, int $timeout, mixed $default): \Amp\Promise<\TReturn>|\Amp\Promise<\TReturnAlt>`
|
|
* `call(\Generator|\Amp\Promise|mixed $promise): \Amp\Promise`
|
|
* `callFork(\Generator|\Amp\Promise $promise, ?\Generator|\Amp\Promise $actual, string $file): \Amp\Promise|mixed`
|
|
* `callForkDefer(\Generator|\Amp\Promise $promise): void`
|
|
* `rethrow(\Throwable $e, string $file): void`
|
|
* `after(\Generator|\Amp\Promise $a, \Generator|\Amp\Promise $b): \Amp\Promise`
|
|
* `flock(string $file, int $operation, float $polling, ?\Amp\Promise $token, ?callable $failureCb): \Amp\Promise<?callable>`
|
|
* `sleep(int|float $time): \Amp\Promise`
|
|
* `readLine(string $prompt): \Amp\Promise<string>`
|
|
* `echo(string $string): \Amp\Promise`
|
|
* `isArrayOrAlike(mixed $var): bool`
|
|
* `arr(mixed $params): array`
|
|
* `base64urlDecode(string $data): string`
|
|
* `base64urlEncode(string $data): string`
|
|
* `rleDecode(string $string): string`
|
|
* `rleEncode(string $string): string`
|
|
* `inflateStripped(string $stripped): \string JPG payload`
|
|
* `end(array $what): mixed`
|
|
* `isAltervista(): bool`
|
|
* `hasVar(object $obj, string $var): bool`
|
|
* `getVar(object $obj, string $var): mixed`
|
|
* `setVar(object $obj, string $var, mixed $val): void`
|
|
* `toCamelCase(string $input): string`
|
|
* `toSnakeCase(string $input): string`
|
|
* `markdownEscape(string $hwat): string`
|
|
* `typeEscape(string $type): string`
|
|
* `methodEscape(string $method): string`
|
|
* `getMimeFromExtension(string $extension, string $default): string`
|
|
* `getExtensionFromMime(string $mime): string`
|
|
* `getExtensionFromLocation(mixed $location, string $default): string`
|
|
* `getMimeFromFile(string $file): string`
|
|
* `getMimeFromBuffer(string $buffer): string`
|
|
|
|
## Methods:
|
|
### `genVectorHash(array $ints): \int Vector hash`
|
|
|
|
Generate MTProto vector hash.
|
|
|
|
|
|
Parameters:
|
|
* `$ints`: `array` IDs
|
|
|
|
|
|
Return value: Vector hash
|
|
|
|
|
|
### `randomInt(int $modulus): int`
|
|
|
|
Get random integer.
|
|
|
|
|
|
Parameters:
|
|
* `$modulus`: `int` Modulus
|
|
|
|
|
|
|
|
### `random(int $length): \string Random string`
|
|
|
|
Get random string of specified length.
|
|
|
|
|
|
Parameters:
|
|
* `$length`: `int` Length
|
|
|
|
|
|
Return value: Random string
|
|
|
|
|
|
### `posmod(int $a, int $b): \int Modulo`
|
|
|
|
Positive modulo
|
|
Works just like the % (modulus) operator, only returns always a postive number.
|
|
|
|
|
|
Parameters:
|
|
* `$a`: `int` A
|
|
* `$b`: `int` B
|
|
|
|
|
|
Return value: Modulo
|
|
|
|
|
|
### `unpackSignedInt(string $value): int`
|
|
|
|
Unpack base256 signed int.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `string` base256 int
|
|
|
|
|
|
|
|
### `unpackSignedLong(string $value): int`
|
|
|
|
Unpack base256 signed long.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `string` base256 long
|
|
|
|
|
|
|
|
### `unpackSignedLongString(string $value): string`
|
|
|
|
Unpack base256 signed long to string.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `string` base256 long
|
|
|
|
|
|
|
|
### `packSignedInt(int $value): string`
|
|
|
|
Convert integer to base256 signed int.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `int` Value to convert
|
|
|
|
|
|
|
|
### `packSignedLong(int $value): string`
|
|
|
|
Convert integer to base256 long.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `int` Value to convert
|
|
|
|
|
|
|
|
### `packUnsignedInt(int $value): string`
|
|
|
|
Convert value to unsigned base256 int.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `int` Value
|
|
|
|
|
|
|
|
### `packDouble(float $value): string`
|
|
|
|
Convert double to binary version.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `float` Value to convert
|
|
|
|
|
|
|
|
### `unpackDouble(string $value): float`
|
|
|
|
Unpack binary double.
|
|
|
|
|
|
Parameters:
|
|
* `$value`: `string` Value to unpack
|
|
|
|
|
|
|
|
### `wait(\Generator|\Amp\Promise $promise, bool $ignoreSignal): mixed`
|
|
|
|
Synchronously wait for a promise|generator.
|
|
|
|
|
|
Parameters:
|
|
* `$promise`: `\Generator|\Amp\Promise` The promise to wait for
|
|
* `$ignoreSignal`: `bool` Whether to ignore shutdown signals
|
|
|
|
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `all((\Generator|\Amp\Promise)[] $promises): \Amp\Promise`
|
|
|
|
Returns a promise that succeeds when all promises succeed, and fails if any promise fails.
|
|
Returned promise succeeds with an array of values used to succeed each contained promise, with keys corresponding to the array of promises.
|
|
|
|
Parameters:
|
|
* `$promises`: `(\Generator|\Amp\Promise)[]` Promises
|
|
|
|
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `any((\Amp\Promise|\Generator)[] $promises): \Amp\Promise`
|
|
|
|
Returns a promise that is resolved when all promises are resolved. The returned promise will not fail.
|
|
|
|
|
|
Parameters:
|
|
* `$promises`: `(\Amp\Promise|\Generator)[]` Promises
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
* `\Generator`
|
|
|
|
|
|
|
|
|
|
### `some((\Amp\Promise|\Generator)[] $promises): \Amp\Promise`
|
|
|
|
Resolves with a two-item array delineating successful and failed Promise results.
|
|
The returned promise will only fail if the given number of required promises fail.
|
|
|
|
Parameters:
|
|
* `$promises`: `(\Amp\Promise|\Generator)[]` Promises
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
* `\Generator`
|
|
|
|
|
|
|
|
|
|
### `first((\Amp\Promise|\Generator)[] $promises): \Amp\Promise`
|
|
|
|
Returns a promise that succeeds when the first promise succeeds, and fails only if all promises fail.
|
|
|
|
|
|
Parameters:
|
|
* `$promises`: `(\Amp\Promise|\Generator)[]` Promises
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
* `\Generator`
|
|
|
|
|
|
|
|
|
|
### `timeout(\Generator|\Amp\Promise $promise, int $timeout): \Amp\Promise`
|
|
|
|
Create an artificial timeout for any \Generator or Promise.
|
|
|
|
|
|
Parameters:
|
|
* `$promise`: `\Generator|\Amp\Promise`
|
|
* `$timeout`: `int`
|
|
|
|
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `timeoutWithDefault(\Amp\Promise|\Generator $promise, int $timeout, mixed $default): \Amp\Promise<\TReturn>|\Amp\Promise<\TReturnAlt>`
|
|
|
|
Creates an artificial timeout for any `Promise`.
|
|
If the promise is resolved before the timeout expires, the result is returned
|
|
|
|
If the timeout expires before the promise is resolved, a default value is returned
|
|
|
|
Parameters:
|
|
* `$promise`: `\Amp\Promise|\Generator` Promise to which the timeout is applied.
|
|
Full type:
|
|
```
|
|
\Amp\Promise<\TReturn>|\TGenerator
|
|
```
|
|
* `$timeout`: `int` Timeout in milliseconds.
|
|
* `$default`: `mixed`
|
|
Full type:
|
|
```
|
|
\TReturnAlt
|
|
```
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
* `\Generator`
|
|
* `\TReturn`
|
|
* `\TGenerator`
|
|
* `\TReturnAlt`
|
|
|
|
|
|
|
|
|
|
### `call(\Generator|\Amp\Promise|mixed $promise): \Amp\Promise`
|
|
|
|
Convert generator, promise or any other value to a promise.
|
|
|
|
|
|
Parameters:
|
|
* `$promise`: `\Generator|\Amp\Promise|mixed`
|
|
Full type:
|
|
```
|
|
\Generator<mixed, mixed, mixed, \TReturn>|\Amp\Promise<\TReturn>|\TReturn
|
|
```
|
|
|
|
|
|
Fully typed return value:
|
|
```
|
|
\Amp\Promise<\TReturn>
|
|
```
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
* `\TReturn`
|
|
|
|
|
|
|
|
|
|
### `callFork(\Generator|\Amp\Promise $promise, ?\Generator|\Amp\Promise $actual, string $file): \Amp\Promise|mixed`
|
|
|
|
Call promise in background.
|
|
|
|
|
|
Parameters:
|
|
* `$promise`: `\Generator|\Amp\Promise` Promise to resolve
|
|
* `$actual`: `?\Generator|\Amp\Promise` Promise to resolve instead of $promise
|
|
* `$file`: `string` File
|
|
|
|
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `callForkDefer(\Generator|\Amp\Promise $promise): void`
|
|
|
|
Call promise in background, deferring execution.
|
|
|
|
|
|
Parameters:
|
|
* `$promise`: `\Generator|\Amp\Promise` Promise to resolve
|
|
|
|
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `rethrow(\Throwable $e, string $file): void`
|
|
|
|
Rethrow error catched in strand.
|
|
|
|
|
|
Parameters:
|
|
* `$e`: `\Throwable` Exception
|
|
* `$file`: `string` File where the strand started
|
|
|
|
|
|
#### See also:
|
|
* `\Throwable`
|
|
|
|
|
|
|
|
|
|
### `after(\Generator|\Amp\Promise $a, \Generator|\Amp\Promise $b): \Amp\Promise`
|
|
|
|
Call promise $b after promise $a.
|
|
|
|
|
|
Parameters:
|
|
* `$a`: `\Generator|\Amp\Promise` Promise A
|
|
* `$b`: `\Generator|\Amp\Promise` Promise B
|
|
|
|
|
|
#### See also:
|
|
* `\Generator`
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `flock(string $file, int $operation, float $polling, ?\Amp\Promise $token, ?callable $failureCb): \Amp\Promise<?callable>`
|
|
|
|
Asynchronously lock a file
|
|
Resolves with a callbable that MUST eventually be called in order to release the lock.
|
|
|
|
|
|
Parameters:
|
|
* `$file`: `string` File to lock
|
|
* `$operation`: `int` Locking mode
|
|
* `$polling`: `float` Polling interval
|
|
* `$token`: `?\Amp\Promise` Cancellation token
|
|
* `$failureCb`: `?callable` Failure callback, called only once if the first locking attempt fails.
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `sleep(int|float $time): \Amp\Promise`
|
|
|
|
Asynchronously sleep.
|
|
|
|
|
|
Parameters:
|
|
* `$time`: `int|float` Number of seconds to sleep for
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `readLine(string $prompt): \Amp\Promise<string>`
|
|
|
|
Asynchronously read line.
|
|
|
|
|
|
Parameters:
|
|
* `$prompt`: `string` Prompt
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `echo(string $string): \Amp\Promise`
|
|
|
|
Asynchronously write to stdout/browser.
|
|
|
|
|
|
Parameters:
|
|
* `$string`: `string` Message to echo
|
|
|
|
|
|
#### See also:
|
|
* `\Amp\Promise`
|
|
|
|
|
|
|
|
|
|
### `isArrayOrAlike(mixed $var): bool`
|
|
|
|
Check if is array or similar (traversable && countable && arrayAccess).
|
|
|
|
|
|
Parameters:
|
|
* `$var`: `mixed` Value to check
|
|
|
|
|
|
|
|
### `arr(mixed $params): array`
|
|
|
|
Create array.
|
|
|
|
|
|
Parameters:
|
|
* `$params`: `mixed` Params
|
|
|
|
|
|
|
|
### `base64urlDecode(string $data): string`
|
|
|
|
base64URL decode.
|
|
|
|
|
|
Parameters:
|
|
* `$data`: `string` Data to decode
|
|
|
|
|
|
|
|
### `base64urlEncode(string $data): string`
|
|
|
|
Base64URL encode.
|
|
|
|
|
|
Parameters:
|
|
* `$data`: `string` Data to encode
|
|
|
|
|
|
|
|
### `rleDecode(string $string): string`
|
|
|
|
null-byte RLE decode.
|
|
|
|
|
|
Parameters:
|
|
* `$string`: `string` Data to decode
|
|
|
|
|
|
|
|
### `rleEncode(string $string): string`
|
|
|
|
null-byte RLE encode.
|
|
|
|
|
|
Parameters:
|
|
* `$string`: `string` Data to encode
|
|
|
|
|
|
|
|
### `inflateStripped(string $stripped): \string JPG payload`
|
|
|
|
Inflate stripped photosize to full JPG payload.
|
|
|
|
|
|
Parameters:
|
|
* `$stripped`: `string` Stripped photosize
|
|
|
|
|
|
Return value: JPG payload
|
|
|
|
|
|
### `end(array $what): mixed`
|
|
|
|
Get final element of array.
|
|
|
|
|
|
Parameters:
|
|
* `$what`: `array` Array
|
|
|
|
|
|
|
|
### `isAltervista(): bool`
|
|
|
|
Whether this is altervista.
|
|
|
|
|
|
|
|
### `hasVar(object $obj, string $var): bool`
|
|
|
|
Checks private property exists in an object.
|
|
|
|
|
|
Parameters:
|
|
* `$obj`: `object` Object
|
|
* `$var`: `string` Attribute name
|
|
|
|
|
|
|
|
### `getVar(object $obj, string $var): mixed`
|
|
|
|
Accesses a private variable from an object.
|
|
|
|
|
|
Parameters:
|
|
* `$obj`: `object` Object
|
|
* `$var`: `string` Attribute name
|
|
|
|
|
|
|
|
### `setVar(object $obj, string $var, mixed $val): void`
|
|
|
|
Sets a private variable in an object.
|
|
|
|
|
|
Parameters:
|
|
* `$obj`: `object` Object
|
|
* `$var`: `string` Attribute name
|
|
* `$val`: `mixed` Attribute value
|
|
|
|
|
|
|
|
### `toCamelCase(string $input): string`
|
|
|
|
Convert to camelCase.
|
|
|
|
|
|
Parameters:
|
|
* `$input`: `string` String
|
|
|
|
|
|
|
|
### `toSnakeCase(string $input): string`
|
|
|
|
Convert to snake_case.
|
|
|
|
|
|
Parameters:
|
|
* `$input`: `string` String
|
|
|
|
|
|
|
|
### `markdownEscape(string $hwat): string`
|
|
|
|
Escape string for markdown.
|
|
|
|
|
|
Parameters:
|
|
* `$hwat`: `string` String to escape
|
|
|
|
|
|
|
|
### `typeEscape(string $type): string`
|
|
|
|
Escape type name.
|
|
|
|
|
|
Parameters:
|
|
* `$type`: `string` String to escape
|
|
|
|
|
|
|
|
### `methodEscape(string $method): string`
|
|
|
|
Escape method name.
|
|
|
|
|
|
Parameters:
|
|
* `$method`: `string` Method name
|
|
|
|
|
|
|
|
### `getMimeFromExtension(string $extension, string $default): string`
|
|
|
|
Get mime type from file extension.
|
|
|
|
|
|
Parameters:
|
|
* `$extension`: `string` File extension
|
|
* `$default`: `string` Default mime type
|
|
|
|
|
|
|
|
### `getExtensionFromMime(string $mime): string`
|
|
|
|
Get extension from mime type.
|
|
|
|
|
|
Parameters:
|
|
* `$mime`: `string` MIME type
|
|
|
|
|
|
|
|
### `getExtensionFromLocation(mixed $location, string $default): string`
|
|
|
|
Get extension from file location.
|
|
|
|
|
|
Parameters:
|
|
* `$location`: `mixed` File location
|
|
* `$default`: `string` Default extension
|
|
|
|
|
|
|
|
### `getMimeFromFile(string $file): string`
|
|
|
|
Get mime type of file.
|
|
|
|
|
|
Parameters:
|
|
* `$file`: `string` File
|
|
|
|
|
|
|
|
### `getMimeFromBuffer(string $buffer): string`
|
|
|
|
Get mime type from buffer.
|
|
|
|
|
|
Parameters:
|
|
* `$buffer`: `string` Buffer
|
|
|
|
|
|
|
|
---
|
|
Generated by [danog/phpdoc](https://phpdoc.daniil.it)
|