Overview

Namespaces

  • Comprobo
    • Verify
      • Auth
      • Exceptions
      • HTTP

Classes

  • Comprobo\Verify\Api
  • Comprobo\Verify\Auth\Server
  • Comprobo\Verify\Factory
  • Comprobo\Verify\HTTP\Request
  • Comprobo\Verify\State
  • Comprobo\Verify\User
  • Comprobo\Verify\Workflow

Exceptions

  • Comprobo\Verify\Exceptions\Auth
  • Comprobo\Verify\Exceptions\Misconfiguration
  • Comprobo\Verify\Exceptions\Upload
  • Comprobo\Verify\Exceptions\User
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 
<?php
namespace Comprobo\Verify;

/**
 * Workflow service integration
 */
class Workflow
{
    private $config;
    private $factory;
    private $state;

    public function __construct(Factory $factory)
    {
        $this->factory = $factory;
        $this->config = $factory->getConfig();
        $this->state = $factory->getState();
    }

    /**
     * Assign a local ID and settings to the given template ready for use.
     *
     * @param  string $templateId    the chosen template ID (uuidv4)
     * @param  string $monitorableId an app-specific identifier to target this monitoring workflow in future
     * @param  string $friendyName   The name that will appear in Reporting and elsewhere, human readable
     * @param  array  $customFields  any merge fields defined by the template.
     * @return array                 Service response. It is the caller's responsibility to validate and extract info
     *
     * @see Comprobo\Verify\Workflow::listTemplates for how to find available templates
     * @see Comprobo\Verify\Workflow::getMergeFields for how to fetch available merge fields for a template
     */
    public function link($templateId, $monitorableId, $friendyName, array $customFields = [])
    {
        if (!$this->state->has('token')) {
            throw new Exceptions\Auth("Could not authenticate link template request");
        }

        $url = str_replace('{templateId}', $templateId, $this->config['urls']['linkTemplate']);

        $request = $this->factory->getRequest();
        $request->authorize($this->state->get('token'));

        $params = [
            'name'          => $friendyName . ' [' . time() . ']',
            'monitorableId' => $monitorableId
        ];

        if (!empty($customFields)) {
            $params['mergeValues'] = $customFields;
        }

        $response = $request->post($url, ['json' => $params]);
        $body     = json_decode((string) $response->getBody(), true);

        return $body;
    }

    /**
     * Request the parameters to give to the JavaScript SDK in order to
     * begin the monitoring for your monitorable activity.
     *
     * Once this has been called the configuration for the `link`ed template
     * identified by $monitorableId will be locked.
     *
     * @see self::link
     *
     * @param $userId your local user ID
     * @param $monitorableId your local monitorable ID provided during the `link` call
     */
    public function activate($userId, $monitorableId)
    {
        if (!$this->state->has('token')) {
            throw new Exceptions\Auth("Could not authenticate activate monitoring request");
        }

        $url = str_replace('{monitorableId}', $monitorableId, $this->config['urls']['begin']);

        $request = $this->factory->getRequest();
        $request->authorize($this->state->get('token'));

        $response = $request->post($url, ['json' => ['userId' => $userId]]);
        $body     = json_decode((string) $response->getBody(), true);

        return $body;
    }

    /**
     * Fetch the list of available template types.
     *
     * @return array The list of results from the service
     */
    public function listTemplates()
    {
        if (!$this->state->has('token')) {
            throw new Exceptions\Auth("Could not authenticate list templates request");
        }

        $request = $this->factory->getRequest();
        $request->authorize($this->state->get('token'));
        $response = $request->get($this->config['urls']['templateList']);
        $body = json_decode((string) $response->getBody(), true);

        return $body['results'];
    }
}
API documentation generated by ApiGen