2017 © Pedro Peláez
 

library yaroc

YAROC: Yet Another Random.Org Client.

image

drupol/yaroc

YAROC: Yet Another Random.Org Client.

  • Thursday, May 17, 2018
  • by drupol
  • Repository
  • 1 Watchers
  • 5 Stars
  • 16 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

![Latest Stable Version][latest stable version] GitHub stars ![Total Downloads][total downloads] GitHub Workflow Status ![Scrutinizer code quality][code quality] ![Type Coverage][type coverage] ![Code Coverage][code coverage] License ![Donate!][donate github] , (*1)

YAROC

Yet Another Random.Org Client., (*2)

YAROC fully supports V1 and V2 API., (*3)

Most of the classes of this library are stateless and immutable., (*4)

Requirements

Installation

composer require drupol/yaroc

YAROC needs an HTTP client in order to work, do, (*5)

composer require symfony/http-client

or provide one., (*6)

Usage

First request an API Key or use the temporary key., (*7)

The temporary API key used in the examples will be disabled when the beta ends., (*8)

You can call any API methods described in the documentation from Random.org., (*9)

Currently support all the Random.org API method calls in the basic and signed APIs., (*10)

Examples

<?php

require 'vendor/autoload.php';

use drupol\Yaroc\Plugin\Provider;
use drupol\Yaroc\RandomOrgAPI;

$generateIntegers = (new Provider())->withResource('generateIntegers')
    ->withParameters(['n' => 10, 'min' => 0, 'max' => 100]);

$result = (new RandomOrgAPI())
    ->withApiKey('00000000-0000-0000-0000-000000000000')
    ->getData($generateIntegers);

print_r($result);

$provider = (new Provider())->withResource('generateStrings')
    ->withParameters([
        'n' => 10,
        'length' => 15,
        'characters' => implode(array_merge(range('A', 'Z'), range('a', 'z'), range(0, 9))),
    ]);

$result = (new RandomOrgAPI(null, ['apiKey' => '00000000-0000-0000-0000-000000000000']))->getData($provider);

print_r($result);

Providing the API key can be accomplished using an environment variable RANDOM_ORG_APIKEY or by using the method proper parameters in the RandomOrgAPI constructor, or by using (new RandomOrgAPI())->withApiKey(string $apiKey)., (*11)

Third party libraries integration

ircmaxell/RandomLib integration

YAROC provides a Source for ircmaxell/RandomLib., (*12)

<?php

require 'vendor/autoload.php';

use drupol\Yaroc\RandomOrgAPI;
use drupol\Yaroc\Plugin\RandomLib\Source\RandomOrg;

$randomOrgApi = new RandomOrgAPI();

$randomLib = new RandomLib\Factory();
$generator = $randomLib->getGenerator(new SecurityLib\Strength(SecurityLib\Strength::HIGH))
  ->addSource(new RandomOrg($randomOrgApi));
$randomString = $generator->generateString(10);

echo $randomString;

rchouinard/rych-random integration

YAROC provides a Generator for rchouinard/rych-random., (*13)

<?php

require 'vendor/autoload.php';

use drupol\Yaroc\RandomOrgAPI;
use drupol\Yaroc\Plugin\RychRandom\Generator\RandomOrg;

$randomOrgApi = new RandomOrgAPI();

$rychRandom = new Rych\Random\Random(new RandomOrg($randomOrgApi));
$randomString = $rychRandom->getRandomString(8);

echo $randomString;

History

I discovered the Random.Org the 22 November 2016, by chance and I found the idea amazing., (*14)

I had the idea to build a library that would be following the best development practice and up to date., (*15)

Feel free to contact me at: pol.dellaiera@protonmail.com, (*16)

Code quality, tests and benchmarks

To run the tests, run this command:, (*17)

RANDOM_ORG_APIKEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx composer grumphp

Every time changes are introduced into the library, Travis CI run the tests and the benchmarks., (*18)

The library has tests written with PHPSpec. Feel free to check them out in the spec directory. Run composer phpspec to trigger the tests., (*19)

Before each commit some inspections are executed with GrumPHP, run ./vendor/bin/grumphp run to check manually., (*20)

PHPInfection is used to ensure that your code is properly tested, run composer infection to test your code., (*21)

Contributing

Feel free to contribute by sending Github pull requests. I'm quite reactive :-), (*22)

If you can't contribute to the code, you can also sponsor me on Github or Paypal., (*23)

Changelog

See CHANGELOG.md for a changelog based on git commits., (*24)

The Versions