getMethod()) == 'post' && array_key_exists('grant_type', $request->getParsedBody()) && $request->getParsedBody()['grant_type'] == 'authorization_code'; } function isIndieAuthAuthorizationRequest(ServerRequestInterface $request, $permittedMethods=['get']) { return in_array(strtolower($request->getMethod()), array_map('strtolower', $permittedMethods)) && array_key_exists('response_type', $request->getQueryParams()) && $request->getQueryParams()['response_type'] == 'code'; } function isAuthorizationApprovalRequest(ServerRequestInterface $request) { return strtolower($request->getMethod()) == 'post' && array_key_exists('taproot_indieauth_action', $request->getParsedBody()) && $request->getParsedBody()['taproot_indieauth_action'] == 'approve'; } function buildQueryString(array $parameters) { $qs = []; foreach ($parameters as $k => $v) { $qs[] = urlencode($k) . '=' . urlencode($v); } return join('&', $qs); } /** * Append Query Parameters * * Converts `$queryParams` into a query string, then checks `$uri` for an * existing query string. Then appends the newly generated query string * with either ? or & as appropriate. */ function appendQueryParams(string $uri, array $queryParams) { $queryString = buildQueryString($queryParams); $separator = parse_url($uri, \PHP_URL_QUERY) ? '&' : '?'; return "{$uri}{$separator}{$queryString}"; } /** * Try setLogger * * If `$target` implements `LoggerAwareInterface`, set it’s logger * to `$logger`. Returns `$target`. */ function trySetLogger($target, LoggerInterface $logger) { if ($target instanceof LoggerAwareInterface) { $target->setLogger($logger); } return $target; }