Add API, add routes and DatabaseScript
continuous-integration/drone/push Build encountered an error
Details
continuous-integration/drone/push Build encountered an error
Details
parent
808c2a0a13
commit
03f010ffa4
@ -0,0 +1,67 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: API_Formulaire
|
||||||
|
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# docker image build
|
||||||
|
- name: set_api
|
||||||
|
image: plugins/docker
|
||||||
|
settings:
|
||||||
|
dockerfile: ./API/Dockerfile
|
||||||
|
context: API
|
||||||
|
registry: hub.codefirst.iut.uca.fr
|
||||||
|
repo: hub.codefirst.iut.uca.fr/dorian.hodin/api_android
|
||||||
|
username:
|
||||||
|
from_secret: SECRET_USERNAME
|
||||||
|
password:
|
||||||
|
from_secret: SECRET_PASSWD
|
||||||
|
|
||||||
|
# conteneur deployment
|
||||||
|
- name: deploy_api
|
||||||
|
image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest
|
||||||
|
environment:
|
||||||
|
IMAGENAME: hub.codefirst.iut.uca.fr/dorian.hodin/api_android:latest
|
||||||
|
CONTAINERNAME: deploy_api
|
||||||
|
COMMAND: create
|
||||||
|
OVERWRITE: true
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_HOST:
|
||||||
|
from_secret: db_host
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_DATABASE:
|
||||||
|
from_secret: db_database
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_USER:
|
||||||
|
from_secret: db_user
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_PASSWORD:
|
||||||
|
from_secret: db_password
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_ROOT_PASSWORD:
|
||||||
|
from_secret: db_root_password
|
||||||
|
ADMINS: dorianhodin, mathildejean3
|
||||||
|
depends_on: [ set_api ]
|
||||||
|
|
||||||
|
|
||||||
|
# database container deployment
|
||||||
|
- name: db
|
||||||
|
image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest
|
||||||
|
environment:
|
||||||
|
IMAGENAME: mariadb:10.5
|
||||||
|
CONTAINERNAME: db
|
||||||
|
PRIVATE : true
|
||||||
|
COMMAND: create
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_MARIADB_ROOT_PASSWORD:
|
||||||
|
from_secret: db_root_password
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_MARIADB_DATABASE:
|
||||||
|
from_secret: db_database
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_MARIADB_USER:
|
||||||
|
from_secret: db_user
|
||||||
|
CODEFIRST_CLIENTDRONE_ENV_MARIADB_PASSWORD:
|
||||||
|
from_secret: db_password
|
||||||
|
ADMINS: dorianhodin, mathildejean3
|
||||||
|
depends_on: [ deploy_api_form ]
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
/API/script/Config/vendor/
|
@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/API/script" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="@localhost" uuid="982f6949-bc46-41d7-8c10-2ed5fb64bb7d">
|
||||||
|
<driver-ref>mariadb</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mariadb://localhost:3306</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/API_Android.iml" filepath="$PROJECT_DIR$/.idea/API_Android.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MessDetectorOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCSFixerOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||||
|
<option name="highlightLevel" value="WARNING" />
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
|
||||||
|
<component name="PhpStanOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PsalmOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="SqlDialectMappings">
|
||||||
|
<file url="file://$PROJECT_DIR$/API/script/Config/DatabaseScript.php" dialect="GenericSQL" />
|
||||||
|
<file url="file://$PROJECT_DIR$/API/script/Gateway/GatewaySouvenir.php" dialect="GenericSQL" />
|
||||||
|
<file url="file://$PROJECT_DIR$/API/script/Gateway/GatewayUser.php" dialect="GenericSQL" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,10 @@
|
|||||||
|
FROM php:8.1-apache
|
||||||
|
RUN apt-get update && apt-get install -y git
|
||||||
|
RUN docker-php-ext-install pdo pdo_mysql
|
||||||
|
COPY ./script /var/www/html
|
||||||
|
WORKDIR /var/www/html/Config
|
||||||
|
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||||
|
RUN composer update && composer install
|
||||||
|
RUN a2enmod rewrite
|
||||||
|
RUN a2enmod actions
|
||||||
|
RUN service apache2 restart
|
@ -0,0 +1,4 @@
|
|||||||
|
RewriteEngine On
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule ^ index.php [QSA,L]
|
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Config;
|
||||||
|
|
||||||
|
use ExceptionHandle\PDOError;
|
||||||
|
use PDOException;
|
||||||
|
|
||||||
|
require_once __DIR__ ."/Connection.php";
|
||||||
|
|
||||||
|
class ConnectClass{
|
||||||
|
|
||||||
|
private string $dsn;
|
||||||
|
private string $login;
|
||||||
|
private string $password;
|
||||||
|
|
||||||
|
function __construct(){
|
||||||
|
if ($_ENV["HOST"] == null || $_ENV["DATABASE"] == null || $_ENV["USER"] == null || $_ENV["PASSWORD"] == null){
|
||||||
|
throw new PDOException("ENV variable not found");
|
||||||
|
}
|
||||||
|
$this->dsn = "mysql:host=".$_ENV["HOST"].";dbname=".$_ENV["DATABASE"].";charset=UTF8";
|
||||||
|
$this->login = $_ENV["USER"];
|
||||||
|
$this->password = $_ENV["PASSWORD"];
|
||||||
|
}
|
||||||
|
|
||||||
|
function connect(): int|Connection
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
echo " ";
|
||||||
|
$connection = new Connection($this->dsn,$this->login,$this->password);
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOException($e->getMessage(), $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
return $connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Config;
|
||||||
|
|
||||||
|
use PDO;
|
||||||
|
use PDOStatement;
|
||||||
|
|
||||||
|
class Connection extends PDO
|
||||||
|
{
|
||||||
|
private PDOStatement $stmt;
|
||||||
|
|
||||||
|
public function __construct(string $dsn, string $username, string $password)
|
||||||
|
{
|
||||||
|
parent::__construct($dsn, $username, $password);
|
||||||
|
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** * @param string $query
|
||||||
|
* @param array $parameters *
|
||||||
|
* @return bool Returns `true` on success, `false` otherwise
|
||||||
|
*/
|
||||||
|
public function executeQuery(string $query, array $parameters = []): bool
|
||||||
|
{
|
||||||
|
$this->stmt = parent::prepare($query);
|
||||||
|
foreach ($parameters as $name => $value) {
|
||||||
|
$this->stmt->bindValue($name, $value[0], $value[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getResults(): array
|
||||||
|
{
|
||||||
|
return $this->stmt->fetchAll();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Config;
|
||||||
|
|
||||||
|
use PDOException;
|
||||||
|
|
||||||
|
class DatabaseScript {
|
||||||
|
|
||||||
|
private Connection $connection;
|
||||||
|
public function __construct() {
|
||||||
|
try{
|
||||||
|
$this->connection = (new ConnectClass)->connect();
|
||||||
|
}catch(PDOException $e){
|
||||||
|
throw new PDOException($e->getMessage(), $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function executeScript(): void
|
||||||
|
{
|
||||||
|
$queryScript = '
|
||||||
|
|
||||||
|
CREATE TABLE `souvenir` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`title` varchar(50) NOT NULL,
|
||||||
|
`linkImage` text NOT NULL,
|
||||||
|
`description` text NOT NULL,
|
||||||
|
`longitude` float NOT NULL,
|
||||||
|
`latitude` float NOT NULL,
|
||||||
|
`altitude` float NOT NULL,
|
||||||
|
`userId` int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `user` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`login` varchar(50) NOT NULL,
|
||||||
|
`password` varchar(200) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
ALTER TABLE `souvenir`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
ALTER TABLE `user`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
|
||||||
|
ALTER TABLE `souvenir`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
|
||||||
|
|
||||||
|
ALTER TABLE `user`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
|
||||||
|
|
||||||
|
ALTER TABLE `souvenir`
|
||||||
|
ADD CONSTRAINT `Categorize_ibfk_2` FOREIGN KEY (`userId`) REFERENCES `user` (`id`),
|
||||||
|
';
|
||||||
|
$this->connection->executeQuery($queryScript);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "dorian/script",
|
||||||
|
"description": "Composer for API",
|
||||||
|
"type": "project",
|
||||||
|
"require": {
|
||||||
|
"slim/slim": "^4.11",
|
||||||
|
"slim/psr7": "dev-master",
|
||||||
|
"psr/http-message": "^1.0"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"ExceptionHandle\\" : "../ExceptionHandle",
|
||||||
|
"Gateway\\" : "../Gateway",
|
||||||
|
"Config\\" : "../Config"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,777 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "b8d6986e2c44c0b590a755b914d29bb4",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "fig/http-message-util",
|
||||||
|
"version": "1.1.5",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-message-util.git",
|
||||||
|
"reference": "9d94dc0154230ac39e5bf89398b324a86f63f765"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765",
|
||||||
|
"reference": "9d94dc0154230ac39e5bf89398b324a86f63f765",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.3 || ^7.0 || ^8.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"psr/http-message": "The package containing the PSR-7 interfaces"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Fig\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Utility classes and constants for use with PSR-7 (psr/http-message)",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-message",
|
||||||
|
"psr",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/http-message-util/issues",
|
||||||
|
"source": "https://github.com/php-fig/http-message-util/tree/1.1.5"
|
||||||
|
},
|
||||||
|
"time": "2020-11-24T22:02:12+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nikic/fast-route",
|
||||||
|
"version": "v1.3.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nikic/FastRoute.git",
|
||||||
|
"reference": "181d480e08d9476e61381e04a71b34dc0432e812"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
|
||||||
|
"reference": "181d480e08d9476e61381e04a71b34dc0432e812",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.8.35|~5.7"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/functions.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"FastRoute\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-3-Clause"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nikita Popov",
|
||||||
|
"email": "nikic@php.net"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Fast request router for PHP",
|
||||||
|
"keywords": [
|
||||||
|
"router",
|
||||||
|
"routing"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/nikic/FastRoute/issues",
|
||||||
|
"source": "https://github.com/nikic/FastRoute/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2018-02-13T20:26:39+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/container",
|
||||||
|
"version": "2.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/container.git",
|
||||||
|
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
||||||
|
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.4.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Container\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common Container Interface (PHP FIG PSR-11)",
|
||||||
|
"homepage": "https://github.com/php-fig/container",
|
||||||
|
"keywords": [
|
||||||
|
"PSR-11",
|
||||||
|
"container",
|
||||||
|
"container-interface",
|
||||||
|
"container-interop",
|
||||||
|
"psr"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/container/issues",
|
||||||
|
"source": "https://github.com/php-fig/container/tree/2.0.2"
|
||||||
|
},
|
||||||
|
"time": "2021-11-05T16:47:00+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-factory",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-factory.git",
|
||||||
|
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
|
||||||
|
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0.0",
|
||||||
|
"psr/http-message": "^1.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interfaces for PSR-7 HTTP message factories",
|
||||||
|
"keywords": [
|
||||||
|
"factory",
|
||||||
|
"http",
|
||||||
|
"message",
|
||||||
|
"psr",
|
||||||
|
"psr-17",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-factory/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2019-04-30T12:38:16+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-message",
|
||||||
|
"version": "1.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-message.git",
|
||||||
|
"reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
|
||||||
|
"reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP messages",
|
||||||
|
"homepage": "https://github.com/php-fig/http-message",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-message",
|
||||||
|
"psr",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-message/tree/1.1"
|
||||||
|
},
|
||||||
|
"time": "2023-04-04T09:50:52+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-server-handler",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-server-handler.git",
|
||||||
|
"reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
|
||||||
|
"reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0",
|
||||||
|
"psr/http-message": "^1.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Server\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP server-side request handler",
|
||||||
|
"keywords": [
|
||||||
|
"handler",
|
||||||
|
"http",
|
||||||
|
"http-interop",
|
||||||
|
"psr",
|
||||||
|
"psr-15",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response",
|
||||||
|
"server"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/http-server-handler/issues",
|
||||||
|
"source": "https://github.com/php-fig/http-server-handler/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2018-10-30T16:46:14+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-server-middleware",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-server-middleware.git",
|
||||||
|
"reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5",
|
||||||
|
"reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.0",
|
||||||
|
"psr/http-message": "^1.0",
|
||||||
|
"psr/http-server-handler": "^1.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Server\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP server-side middleware",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-interop",
|
||||||
|
"middleware",
|
||||||
|
"psr",
|
||||||
|
"psr-15",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-fig/http-server-middleware/issues",
|
||||||
|
"source": "https://github.com/php-fig/http-server-middleware/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2018-10-30T17:12:04+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/log",
|
||||||
|
"version": "3.0.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/log.git",
|
||||||
|
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
|
||||||
|
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Log\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for logging libraries",
|
||||||
|
"homepage": "https://github.com/php-fig/log",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"psr",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/log/tree/3.0.0"
|
||||||
|
},
|
||||||
|
"time": "2021-07-14T16:46:02+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ralouphie/getallheaders",
|
||||||
|
"version": "3.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ralouphie/getallheaders.git",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.6"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"php-coveralls/php-coveralls": "^2.1",
|
||||||
|
"phpunit/phpunit": "^5 || ^6.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/getallheaders.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Ralph Khattar",
|
||||||
|
"email": "ralph.khattar@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A polyfill for getallheaders.",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
||||||
|
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
||||||
|
},
|
||||||
|
"time": "2019-03-08T08:55:37+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "slim/psr7",
|
||||||
|
"version": "dev-master",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/slimphp/Slim-Psr7.git",
|
||||||
|
"reference": "a6f0caef429144986bd3d1325f4924f7c3b75969"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/a6f0caef429144986bd3d1325f4924f7c3b75969",
|
||||||
|
"reference": "a6f0caef429144986bd3d1325f4924f7c3b75969",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"fig/http-message-util": "^1.1.5",
|
||||||
|
"php": "^8.0",
|
||||||
|
"psr/http-factory": "^1.0",
|
||||||
|
"psr/http-message": "^1.0",
|
||||||
|
"ralouphie/getallheaders": "^3.0",
|
||||||
|
"symfony/polyfill-php80": "^1.27"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-factory-implementation": "1.0",
|
||||||
|
"psr/http-message-implementation": "1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"adriansuter/php-autoload-override": "^1.4",
|
||||||
|
"ext-json": "*",
|
||||||
|
"http-interop/http-factory-tests": "^0.9.0",
|
||||||
|
"php-http/psr7-integration-tests": "dev-master",
|
||||||
|
"phpspec/prophecy": "^1.17",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.0",
|
||||||
|
"phpstan/phpstan": "^1.10",
|
||||||
|
"phpunit/phpunit": "^9.6",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7"
|
||||||
|
},
|
||||||
|
"default-branch": true,
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Slim\\Psr7\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Josh Lockhart",
|
||||||
|
"email": "hello@joshlockhart.com",
|
||||||
|
"homepage": "http://joshlockhart.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andrew Smith",
|
||||||
|
"email": "a.smith@silentworks.co.uk",
|
||||||
|
"homepage": "http://silentworks.co.uk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rob Allen",
|
||||||
|
"email": "rob@akrabat.com",
|
||||||
|
"homepage": "http://akrabat.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Pierre Berube",
|
||||||
|
"email": "pierre@lgse.com",
|
||||||
|
"homepage": "http://www.lgse.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Strict PSR-7 implementation",
|
||||||
|
"homepage": "https://www.slimframework.com",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"psr-7",
|
||||||
|
"psr7"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/slimphp/Slim-Psr7/issues",
|
||||||
|
"source": "https://github.com/slimphp/Slim-Psr7/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2023-03-07T02:37:20+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "slim/slim",
|
||||||
|
"version": "4.11.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/slimphp/Slim.git",
|
||||||
|
"reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/slimphp/Slim/zipball/b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7",
|
||||||
|
"reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-json": "*",
|
||||||
|
"nikic/fast-route": "^1.3",
|
||||||
|
"php": "^7.4 || ^8.0",
|
||||||
|
"psr/container": "^1.0 || ^2.0",
|
||||||
|
"psr/http-factory": "^1.0",
|
||||||
|
"psr/http-message": "^1.0",
|
||||||
|
"psr/http-server-handler": "^1.0",
|
||||||
|
"psr/http-server-middleware": "^1.0",
|
||||||
|
"psr/log": "^1.1 || ^2.0 || ^3.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"adriansuter/php-autoload-override": "^1.3",
|
||||||
|
"ext-simplexml": "*",
|
||||||
|
"guzzlehttp/psr7": "^2.4",
|
||||||
|
"httpsoft/http-message": "^1.0",
|
||||||
|
"httpsoft/http-server-request": "^1.0",
|
||||||
|
"laminas/laminas-diactoros": "^2.17",
|
||||||
|
"nyholm/psr7": "^1.5",
|
||||||
|
"nyholm/psr7-server": "^1.0",
|
||||||
|
"phpspec/prophecy": "^1.15",
|
||||||
|
"phpspec/prophecy-phpunit": "^2.0",
|
||||||
|
"phpstan/phpstan": "^1.8",
|
||||||
|
"phpunit/phpunit": "^9.5",
|
||||||
|
"slim/http": "^1.2",
|
||||||
|
"slim/psr7": "^1.5",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-simplexml": "Needed to support XML format in BodyParsingMiddleware",
|
||||||
|
"ext-xml": "Needed to support XML format in BodyParsingMiddleware",
|
||||||
|
"php-di/php-di": "PHP-DI is the recommended container library to be used with Slim",
|
||||||
|
"slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Slim\\": "Slim"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Josh Lockhart",
|
||||||
|
"email": "hello@joshlockhart.com",
|
||||||
|
"homepage": "https://joshlockhart.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andrew Smith",
|
||||||
|
"email": "a.smith@silentworks.co.uk",
|
||||||
|
"homepage": "http://silentworks.co.uk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rob Allen",
|
||||||
|
"email": "rob@akrabat.com",
|
||||||
|
"homepage": "http://akrabat.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Pierre Berube",
|
||||||
|
"email": "pierre@lgse.com",
|
||||||
|
"homepage": "http://www.lgse.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gabriel Manricks",
|
||||||
|
"email": "gmanricks@me.com",
|
||||||
|
"homepage": "http://gabrielmanricks.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
|
||||||
|
"homepage": "https://www.slimframework.com",
|
||||||
|
"keywords": [
|
||||||
|
"api",
|
||||||
|
"framework",
|
||||||
|
"micro",
|
||||||
|
"router"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"docs": "https://www.slimframework.com/docs/v4/",
|
||||||
|
"forum": "https://discourse.slimframework.com/",
|
||||||
|
"irc": "irc://irc.freenode.net:6667/slimphp",
|
||||||
|
"issues": "https://github.com/slimphp/Slim/issues",
|
||||||
|
"rss": "https://www.slimframework.com/blog/feed.rss",
|
||||||
|
"slack": "https://slimphp.slack.com/",
|
||||||
|
"source": "https://github.com/slimphp/Slim",
|
||||||
|
"wiki": "https://github.com/slimphp/Slim/wiki"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://opencollective.com/slimphp",
|
||||||
|
"type": "open_collective"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/slim/slim",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-11-06T16:33:39+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/polyfill-php80",
|
||||||
|
"version": "v1.27.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||||
|
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||||
|
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "1.27-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Php80\\": ""
|
||||||
|
},
|
||||||
|
"classmap": [
|
||||||
|
"Resources/stubs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Ion Bazan",
|
||||||
|
"email": "ion.bazan@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"polyfill",
|
||||||
|
"portable",
|
||||||
|
"shim"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": {
|
||||||
|
"slim/psr7": 20
|
||||||
|
},
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": [],
|
||||||
|
"plugin-api-version": "2.3.0"
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ExceptionHandle;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Slim\Exception\HttpSpecializedException;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class HttpNotFoundError extends HttpSpecializedException {
|
||||||
|
|
||||||
|
protected $code = 404;
|
||||||
|
protected string $title = "Method Not Found";
|
||||||
|
protected $message = "You have to add a method name in the URL. Example !: 'http://url/method'";
|
||||||
|
|
||||||
|
public function __construct(ServerRequestInterface $request,?Throwable $previous = null)
|
||||||
|
{
|
||||||
|
parent::__construct($request, $this->message, $previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ExceptionHandle;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Slim\Exception\HttpSpecializedException;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class PDOError extends HttpSpecializedException {
|
||||||
|
|
||||||
|
protected $code = 408;
|
||||||
|
protected string $title = "PDO connection failed";
|
||||||
|
protected string $file;
|
||||||
|
protected int $line;
|
||||||
|
|
||||||
|
public function __construct(ServerRequestInterface $request,string $message,?Throwable $previous = null)
|
||||||
|
{
|
||||||
|
$this->file = $previous->getFile();
|
||||||
|
$this->line = $previous->getLine();
|
||||||
|
parent::__construct($request,$message,$previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ExceptionHandle;
|
||||||
|
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Slim\Exception\HttpSpecializedException;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class TypeErrorParameters extends HttpSpecializedException {
|
||||||
|
|
||||||
|
protected $code = 400;
|
||||||
|
protected string $title = "Method query params is not specified";
|
||||||
|
protected $message = "Bad Parameters, The API need parameters for this method. Exemple :'http://url/method?param1=1'";
|
||||||
|
|
||||||
|
public function __construct(ServerRequestInterface $request,?Throwable $previous = null)
|
||||||
|
{
|
||||||
|
parent::__construct($request, $this->message, $previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Gateway;
|
||||||
|
|
||||||
|
use Config\ConnectClass;
|
||||||
|
use Config\Connection;
|
||||||
|
use PDO;
|
||||||
|
use PDOException;
|
||||||
|
|
||||||
|
class GatewaySouvenir
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Connection
|
||||||
|
*/
|
||||||
|
private Connection $connection;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
$this->connection = (new ConnectClass)->connect();
|
||||||
|
}catch(PDOException $e){
|
||||||
|
throw new PDOException($e->getMessage(), $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permet de récupérer le mot de passe de l'administrateur en fonction de son login.
|
||||||
|
* @param int $id
|
||||||
|
* @return array Le souvenir de l'utilisateur sélectionné
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function getSouvenirForUser(int $id): array
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM `souvenir` WHERE userId = :userId";
|
||||||
|
$this->connection->executeQuery($query, array(
|
||||||
|
':userId' => array($id, PDO::PARAM_INT)
|
||||||
|
));
|
||||||
|
return $this->connection->getResults();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addSouvenir(String $title, String $linkImage, String $description, float $longitude, float $latitude, float $altitude, int $userId): void
|
||||||
|
{
|
||||||
|
$query = "INSERT INTO `souvenir`(title, linkImage, description, longitude, latitude, altitude, userId) VALUES
|
||||||
|
(:title, :linkImage, :description, :longitude, :latitude, :altitude, :userId)";
|
||||||
|
$this->connection->executeQuery($query, array(
|
||||||
|
':title' => array($title, PDO::PARAM_STR),
|
||||||
|
':linkImage' => array($linkImage, PDO::PARAM_STR),
|
||||||
|
':description' => array($description, PDO::PARAM_STR),
|
||||||
|
':longitude' => array($longitude, PDO::PARAM_STR),
|
||||||
|
':latitude' => array($latitude, PDO::PARAM_STR),
|
||||||
|
':altitude' => array($altitude, PDO::PARAM_STR),
|
||||||
|
':userId' => array($userId, PDO::PARAM_INT)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteSouvenir(int $id): void
|
||||||
|
{
|
||||||
|
$query = "DELETE FROM `souvenir` WHERE id=:id";
|
||||||
|
$this->connection->executeQuery($query, array(
|
||||||
|
':id' => array($id, PDO::PARAM_INT)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Gateway;
|
||||||
|
|
||||||
|
use Config\ConnectClass;
|
||||||
|
use Config\Connection;
|
||||||
|
use PDO;
|
||||||
|
use PDOException;
|
||||||
|
|
||||||
|
class GatewayUser
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Connection
|
||||||
|
*/
|
||||||
|
private Connection $connection;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
try{
|
||||||
|
$this->connection = (new ConnectClass)->connect();
|
||||||
|
}catch(PDOException $e){
|
||||||
|
throw new PDOException($e->getMessage(), $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUserPassword(string $login): ?string
|
||||||
|
{
|
||||||
|
$query = "SELECT password FROM `user` WHERE login = :login";
|
||||||
|
$this->connection->executeQuery($query, array(
|
||||||
|
':login' => array($login, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
$result = $this->connection->getResults();
|
||||||
|
if(empty($result))
|
||||||
|
return null;
|
||||||
|
return $result[0]['password'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function addUser(String $login, String $password): void
|
||||||
|
{
|
||||||
|
$query = "INSERT INTO `user`(login,password) VALUES(:login, :password)";
|
||||||
|
$this->connection->executeQuery($query, array(
|
||||||
|
':login' => array($login, PDO::PARAM_STR),
|
||||||
|
':password' => array($password, PDO::PARAM_STR)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllUsers(): ?string
|
||||||
|
{
|
||||||
|
$queryScript = '
|
||||||
|
|
||||||
|
CREATE TABLE `souvenir` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`title` varchar(50) NOT NULL,
|
||||||
|
`linkImage` text NOT NULL,
|
||||||
|
`description` text NOT NULL,
|
||||||
|
`longitude` float NOT NULL,
|
||||||
|
`latitude` float NOT NULL,
|
||||||
|
`altitude` float NOT NULL,
|
||||||
|
`userId` int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `user` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`login` varchar(50) NOT NULL,
|
||||||
|
`password` varchar(200) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
ALTER TABLE `souvenir`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
ALTER TABLE `user`
|
||||||
|
ADD PRIMARY KEY (`id`),
|
||||||
|
|
||||||
|
ALTER TABLE `souvenir`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
|
||||||
|
|
||||||
|
ALTER TABLE `user`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
|
||||||
|
|
||||||
|
ALTER TABLE `souvenir`
|
||||||
|
ADD CONSTRAINT `Categorize_ibfk_2` FOREIGN KEY (`userId`) REFERENCES `user` (`id`),
|
||||||
|
';
|
||||||
|
$this->connection->executeQuery($queryScript);
|
||||||
|
$query = "SELECT login FROM `user`";
|
||||||
|
$this->connection->executeQuery($query);
|
||||||
|
$result = $this->connection->getResults();
|
||||||
|
if(empty($result))
|
||||||
|
return null;
|
||||||
|
return $result[0]['login'];
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,130 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use ExceptionHandle\HttpNotFoundError;
|
||||||
|
use ExceptionHandle\PDOError;
|
||||||
|
use ExceptionHandle\TypeErrorParameters;
|
||||||
|
use Gateway\GatewaySouvenir;
|
||||||
|
use Gateway\GatewayUser;
|
||||||
|
use Psr\Http\Message\ResponseInterface as Response;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
|
use Slim\Factory\AppFactory;
|
||||||
|
|
||||||
|
require './Config/vendor/autoload.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiate App
|
||||||
|
*/
|
||||||
|
$app = AppFactory::create();
|
||||||
|
|
||||||
|
// Add Routing Middleware
|
||||||
|
$app->addRoutingMiddleware();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Error Handling Middleware
|
||||||
|
*
|
||||||
|
* @param bool $displayErrorDetails -> Should be set to false in production
|
||||||
|
* @param bool $logErrors -> Parameter is passed to the default ErrorHandler
|
||||||
|
* @param bool $logErrorDetails -> Display error details in error log
|
||||||
|
*/
|
||||||
|
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a route for the API
|
||||||
|
*/
|
||||||
|
$app->get('/', function (Request $request) {
|
||||||
|
throw new HttpNotFoundError($request);
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->get('/getSouvenirForUser', function(Request $request, Response $response){
|
||||||
|
$parameters = $request->getQueryParams();
|
||||||
|
if (empty($parameters['id'])){
|
||||||
|
throw new TypeErrorParameters($request);
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
$response->getBody()->write(json_encode((new GatewaySouvenir)->getSouvenirForUser($parameters['id']), JSON_UNESCAPED_UNICODE));
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOError($request,$e->getMessage(),$e);
|
||||||
|
}
|
||||||
|
return $response->withHeader('Content-type', 'application/json')->withStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->post('/addSouvenir', function(Request $request, Response $response){
|
||||||
|
$parameters = $request->getQueryParams();
|
||||||
|
if (empty($parameters['title'])
|
||||||
|
|| empty($parameters['linkImage'])
|
||||||
|
|| empty($parameters['description'])
|
||||||
|
|| empty($parameters['longitude'])
|
||||||
|
|| empty($parameters['latitude'])
|
||||||
|
|| empty($parameters['altitude'])
|
||||||
|
|| empty($parameters['userId'])){
|
||||||
|
throw new TypeErrorParameters($request);
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
(new GatewaySouvenir)->addSouvenir($parameters['title'],
|
||||||
|
$parameters['linkImage'],
|
||||||
|
$parameters['description'],
|
||||||
|
$parameters['longitude'],
|
||||||
|
$parameters['latitude'],
|
||||||
|
$parameters['altitude'],
|
||||||
|
$parameters['userId']);
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOError($request,$e->getMessage(),$e);
|
||||||
|
}
|
||||||
|
$response->getBody()->write("OK");
|
||||||
|
return $response->withStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->delete('/deleteSouvenir', function(Request $request, Response $response){
|
||||||
|
$parameters = $request->getQueryParams();
|
||||||
|
if (empty($parameters['id'])){
|
||||||
|
throw new TypeErrorParameters($request);
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
(new GatewaySouvenir)->deleteSouvenir($parameters['id']);
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOError($request,$e->getMessage(),$e);
|
||||||
|
}
|
||||||
|
$response->getBody()->write("OK");
|
||||||
|
return $response->withStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->get('/getAllUsers', function(Request $request, Response $response){
|
||||||
|
try{
|
||||||
|
$response->getBody()->write(json_encode((new GatewayUser)->getAllUsers(), JSON_UNESCAPED_UNICODE));
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOError($request,$e->getMessage(),$e);
|
||||||
|
}
|
||||||
|
return $response->withHeader('Content-type', 'application/json')->withStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->get('/getUserPassword', function(Request $request, Response $response){
|
||||||
|
$parameters = $request->getQueryParams();
|
||||||
|
if (empty($parameters['login'])){
|
||||||
|
throw new TypeErrorParameters($request);
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
$response->getBody()->write(json_encode((new GatewayUser)->getUserPassword($parameters['login']), JSON_UNESCAPED_UNICODE));
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOError($request,$e->getMessage(),$e);
|
||||||
|
}
|
||||||
|
return $response->withHeader('Content-type', 'application/json')->withStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
$app->post('/addUser', function(Request $request, Response $response){
|
||||||
|
$parameters = $request->getQueryParams();
|
||||||
|
if (empty($parameters['login']) || empty($parameters['password'])){
|
||||||
|
throw new TypeErrorParameters($request);
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
(new GatewayUser)->addUser($parameters['login'],$parameters['password']);
|
||||||
|
}catch (PDOException $e){
|
||||||
|
throw new PDOError($request,$e->getMessage(),$e);
|
||||||
|
}
|
||||||
|
$response->getBody()->write("OK");
|
||||||
|
return $response->withStatus(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Run app
|
||||||
|
$app->run();
|
Loading…
Reference in new issue