/** * @param ConnectionRequest $request * @throws ConnectionException */ public function __construct(ConnectionRequest $request) { if (null !== $request->getOntimeUrl()) { $this->setOntimeUrl($request->getOntimeUrl()); } else { throw new ConnectionException('OnTime URL undefined'); } if (null !== $request->getApiVersion()) { $this->setApiVersion($request->getApiVersion()); } else { throw new ConnectionException('API version undefined'); } $this->setOntimeApiUrl($this->getOntimeUrl() . 'api/' . $this->getApiVersion() . '/'); if (null !== $request->getClientId()) { $this->setClientId($request->getClientId()); } else { throw new ConnectionException('Client ID undefined'); } $this->setScope($request->getScope()); $this->setHttpClient(new Client(['base_url' => $this->getOntimeApiUrl()])); }
/** * @param ConnectionRequest $request * @return null|ConnectionAbstract * @throws ConnectionException */ public static function getConnection(ConnectionRequest $request) { $result = null; if (null === $request->getOntimeUrl()) { throw new ConnectionException('No OnTime URL specified'); } $connectionType = null; if (null !== $request->getClientId() && null !== $request->getRedirectUri()) { $connectionType = self::CT_APP; } elseif (null !== $request->getUsername() && null !== $request->getPassword() && null !== $request->getClientId() && null !== $request->getClientSecret()) { $connectionType = self::CT_USR; } if (null !== $connectionType) { $result = self::getInstance($connectionType, $request); } else { throw new ConnectionException('Connection type not found because of wrong parameters'); } return $result; }