2captcha.com/rucaptcha.com PHP-client with PSRs support

#1
Convenient PHP wrapper for the captcha recognition service rucaptcha.com.
The original documentation is available here.

Install
$ composer require --prefer-dist gladyshev/rucaptcha-client "*"
or
Code:
"require": {
  ...
  "gladyshev/rucaptcha-client": "*"
  ...
}
Examples
More examples in the examples folder .

Code:
/* Simple */



$rucaptcha = new Rucaptcha\Client(

    Rucaptcha\Config::fromApiKey(getenv('__RUCAPTCHA_KEY__')),

    new GuzzleHttp\Client() // Any PSR-18 HTTP-client

);



$captchaText = $rucaptcha->recognizeFile('captcha.png');

print_r($captchaText); // h54g6

/* Advanced example */



$rucaptcha = new \Rucaptcha\Client(

    \Rucaptcha\Config::fromApiKey('YOUR_API_KEY'),

    new \GuzzleHttp\Client(['base_uri' => 'https://2captcha.com']),

    new \Monolog\Logger('2Captcha', [new \Monolog\Handler\StreamHandler('php://stdout')])

);



$taskIds = [];



$taskIds[] = $rucaptcha->sendCaptcha(file_get_contents('captcha1.png'));

$taskIds[] = $rucaptcha->sendCaptcha(file_get_contents('captcha2.jpg'));

$taskIds[] = $rucaptcha->sendCaptcha(file_get_contents('captcha3.gif'), [

    Rucaptcha\Extra::NUMERIC => 1

]);



$results = [];



while (count($taskIds) > 0)

{

    // Try get results

    foreach ($taskIds as $i=>$taskId)

    {   

        // Wait 5 sec

        sleep(5);

        

        $results[$taskId] = $rucaptcha->getCaptchaResult($taskId);

        

        // false === is not ready, on error we've got an exception

        if ($results[$taskId] === false) {

            continue;

        } else {

            unset($taskIds[$i]);

        }

    }

}



print_r($results);
Methods of Rucaptcha\Client
Code:
use Rucaptcha\Client;



/* Solving captcha methods */



Client::recognize(string $content, array $extra = []): string;

Client::recognizeFile(string $path, array $extra = []): string;

Client::sendCaptcha(string $content, array $extra = []): int;

Client::getCaptchaResult(int $captchaId): string;

Client::getCaptchaResultBulk(array $captchaIds): array;



/* Pingback stuff */



Client::addPingback(string $uri): void;

Client::getPingbacks(): array;

Client::deletePingback(string $uri): void;

Client::deleteAllPingbacks(): void;



/* Google Recaptcha V2 */



Client :: sendRecapthaV2 ( $ googleKey , $ pageUrl , $ extra = []): int

 Client :: recognizeRecapthaV2 ( $ googleKey , $ pageUrl , $ extra = []): string



/* Other */



Client::getLastCaptchaId(): string;

Client::getBalance(): string;

Client::reportGood(string $captchaId): bool;

Client::reportBad(string $captchaId): bool;
Documentation https://packagist.org/packages/gladyshev/rucaptcha-client