Browse Source

Merge pull request #7063 from nupplaphil/task/mod_amcd

Move mod/amcd to src/Module/AccMgmtControlDoc
pull/7065/head
Hypolite Petovan 3 years ago
committed by GitHub
parent
commit
a4c2de7a0b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 49
      mod/amcd.php
  2. 167
      src/App/Router.php
  3. 65
      src/Module/AccountManagementControlDocument.php

49
mod/amcd.php

@ -1,49 +0,0 @@
<?php
function amcd_content()
{
echo <<< JSON
{
"version":1,
"sessionstatus":{
"method":"GET",
"path":"/session"
},
"auth-methods": {
"username-password-form": {
"connect": {
"method":"POST",
"path":"/login",
"params": {
"username":"login-name",
"password":"password"
},
"onsuccess": { "action":"reload" }
},
"disconnect": {
"method":"GET",
"path":"\/logout"
}
}
}
"methods": {
"username-password-form": {
"connect": {
"method":"POST",
"path":"\/login",
"params": {
"username":"login-name",
"password":"password"
},
"onsuccess": { "action":"reload" }
},
"disconnect": {
"method":"GET",
"path":"\/logout"
}
}
}
}
JSON;
exit();
}

167
src/App/Router.php

@ -1,83 +1,84 @@
<?php
namespace Friendica\App;
use FastRoute\DataGenerator\GroupCountBased;
use FastRoute\Dispatcher;
use FastRoute\RouteCollector;
use FastRoute\RouteParser\Std;
use Friendica\Module;
/**
* Wrapper for FastRoute\Router
*
* This wrapper only makes use of a subset of the router features, mainly parses a route rule to return the relevant
* module class.
*
* Actual routes are defined in App->collectRoutes.
*
* @package Friendica\App
*/
class Router
{
/** @var RouteCollector */
protected $routeCollector;
/**
* Static declaration of Friendica routes.
*
* Supports:
* - Route groups
* - Variable parts
* Disregards:
* - HTTP method other than GET
* - Named parameters
*
* Handler must be the name of a class extending Friendica\BaseModule.
*
* @brief Static declaration of Friendica routes.
*/
public function collectRoutes()
{
$this->routeCollector->addRoute(['GET', 'POST'], '/itemsource[/{guid}]', Module\Itemsource::class);
}
public function __construct(RouteCollector $routeCollector = null)
{
if (!$routeCollector) {
$routeCollector = new RouteCollector(new Std(), new GroupCountBased());
}
$this->routeCollector = $routeCollector;
}
public function getRouteCollector()
{
return $this->routeCollector;
}
/**
* Returns the relevant module class name for the given page URI or NULL if no route rule matched.
*
* @param string $cmd The path component of the request URL without the query string
* @return string|null A Friendica\BaseModule-extending class name if a route rule matched
*/
public function getModuleClass($cmd)
{
$cmd = '/' . ltrim($cmd, '/');
$dispatcher = new \FastRoute\Dispatcher\GroupCountBased($this->routeCollector->getData());
$moduleClass = null;
// @TODO: Enable method-specific modules
$httpMethod = 'GET';
$routeInfo = $dispatcher->dispatch($httpMethod, $cmd);
if ($routeInfo[0] === Dispatcher::FOUND) {
$moduleClass = $routeInfo[1];
}
return $moduleClass;
}
}
<?php
namespace Friendica\App;
use FastRoute\DataGenerator\GroupCountBased;
use FastRoute\Dispatcher;
use FastRoute\RouteCollector;
use FastRoute\RouteParser\Std;
use Friendica\Module;
/**
* Wrapper for FastRoute\Router
*
* This wrapper only makes use of a subset of the router features, mainly parses a route rule to return the relevant
* module class.
*
* Actual routes are defined in App->collectRoutes.
*
* @package Friendica\App
*/
class Router
{
/** @var RouteCollector */
protected $routeCollector;
/**
* Static declaration of Friendica routes.
*
* Supports:
* - Route groups
* - Variable parts
* Disregards:
* - HTTP method other than GET
* - Named parameters
*
* Handler must be the name of a class extending Friendica\BaseModule.
*
* @brief Static declaration of Friendica routes.
*/
public function collectRoutes()
{
$this->routeCollector->addRoute(['GET', 'POST'], '/itemsource[/{guid}]', Module\Itemsource::class);
$this->routeCollector->addRoute(['GET'], '/amcd', Module\AccountManagementControlDocument::class);
}
public function __construct(RouteCollector $routeCollector = null)
{
if (!$routeCollector) {
$routeCollector = new RouteCollector(new Std(), new GroupCountBased());
}
$this->routeCollector = $routeCollector;
}
public function getRouteCollector()
{
return $this->routeCollector;
}
/**
* Returns the relevant module class name for the given page URI or NULL if no route rule matched.
*
* @param string $cmd The path component of the request URL without the query string
* @return string|null A Friendica\BaseModule-extending class name if a route rule matched
*/
public function getModuleClass($cmd)
{
$cmd = '/' . ltrim($cmd, '/');
$dispatcher = new \FastRoute\Dispatcher\GroupCountBased($this->routeCollector->getData());
$moduleClass = null;
// @TODO: Enable method-specific modules
$httpMethod = 'GET';
$routeInfo = $dispatcher->dispatch($httpMethod, $cmd);
if ($routeInfo[0] === Dispatcher::FOUND) {
$moduleClass = $routeInfo[1];
}
return $moduleClass;
}
}

65
src/Module/AccountManagementControlDocument.php

@ -0,0 +1,65 @@
<?php
namespace Friendica\Module;
use Friendica\BaseModule;
/**
* Static definition for the Firefox Account Manager
*
* @see https://wiki.mozilla.org/Labs/Weave/Identity/Account_Manager/Spec/3#Contents_of_the_Account_Management_Control_Document
*/
class AccountManagementControlDocument extends BaseModule
{
public static function rawContent()
{
$output = [
'version' => 1,
'sessionstatus' => [
'method' => 'GET',
'path' => '/session',
],
'auth-methods' => [
'username-password-form' => [
'connect' => [
'method' => 'POST',
'path' => '/login',
'params' => [
'username' => 'login-name',
'password' => 'password',
],
'onsuccess' => [
'action' => 'reload',
],
],
'disconnect' => [
'method' => 'GET',
'path' => '/logout',
],
],
],
'methods' => [
'username-password-form' => [
'connect' => [
'method' => 'POST',
'path' => '/login',
'params' => [
'username' => 'login-name',
'password' => 'password',
],
'onsuccess' => [
'action' => 'reload',
],
],
'disconnect' => [
'method' => 'GET',
'path' => '/logout',
],
],
],
];
echo json_encode($output);
exit();
}
}
Loading…
Cancel
Save