Este repositorio pertenece a un reto que consiste en construir la misma aplicación en 3 lenguajes diferentes. Los lenguajes elegidos fueron los siguientes
- Python [ repositorio | live ]
- NodeJS [ repositorio | live ]
- PHP [ repositorio ]
La única regla es que el flujo de tareas y navegación que siguen los usuarios para completar las tareas sea el mismo en los 3 lenguajes. Puedes elegir los que más te gusten. Puedes seguir diferentes paradigmas, principios y buenas prácticas de programación. Pero la aplicación debe verse absolutamente igual en los 3 proyectos.
Link del reto aqui
3er lugar 🎖️ (resultados aquí)
Tema principal es un API REST CRUD sobre alquiler de vehículos, todos los proyectos apuntan a una base de datos en firebase, tiene sistema a AUTH. En la introducción de este documento se ha explicado donde encontrar cada proyecto y donde puedes ver el proyecto funcionando perfectamente.
En el caso de PHP explicaremos como hacer que funcione en nuestra local.
Para este proyecto se usaron las siguientes versiones con los siguientes modulos/plugins:
- php7.2-curl
- php7.2-xml
- php7.2-grpc
- php7.2-mbstring
Espero no estar olvidando alguno, de ser así no te preocupes, al momento de la instalación te solicitará instalarlo.
Para saber la versión de tu php:
~$ php -v
PHP 7.2.19-0ubuntu0.18.04.2 (cli) (built: Aug 12 2019 19:34:28) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans
with Zend OPcache v7.2.19-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies
Para saber la version de tu linux:
~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
Para saber que modulos de php ya tienes disponibles:
~$ php -m
[PHP Modules]
...
...
...
Para saber la version del composer:
~$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer 1.6.3 2018-01-31 16:28:17
Localizamos el directorio donde deseamos bajar este repositorio y ejecutamos lo siguiente:
~$ git clone git@github.com:vidaldev/3en1-PHP.git
Puedes hacer un fork en caso de tu poseer una cuenta github (acepto mejoras de código). Luego de esto ingresa a la carpeta:
~$ cd 3en1-PHP
/3en1-PHP ~$ composer install
Si todo marcha bien las siguientes líneas serán en verde y estaremos listos para usar el proyecto
Para este proyecto, una vez hecho los pasos anteriores, es necesario activar el gRPC para que no de ningun error las librerías relacionadas a Firebase. Lo haremos de la siguiente manera:
- Instalamos el PECL
~$ sudo apt-get install autoconf libz-dev php7.2-dev php-pear
- Instalamos la extensión gRPC
~$ sudo pecl install grpc
- Editamos el archivo
php.ini
(Su ruta normalmente es /etc/php/7.2/cli/php.ini) y agregamos la siguiente línea:
extension=grpc.so
- Ya en el composer.json se encuentra requerido
Para correr las pruebas basta con situarse en el directorio del proyecto y ejecutar
~$ php -S localhost:8080
El servidor de prueba estaría corriendo en el puerto 8080
Para todos los request de manera obligatoria deben ir el correo y la contraseña
DESCRIPCION | URL | METODO | PARAMETROS |
---|---|---|---|
Comprobar usuario | /login | GET | email, password |
Crear usuario | /createUser | POST | email, password |
Recuperar Clave | /forgotPassword | POST | |
Abrir un alquiler | /alquilar | POST | email, password, modelo, marca, year, color, responsable |
Cerrar un alquiler | /cerrarAlquiler | POST | email, password, id (Del alquiler abierto), filtro (entregado) |
Corregir datos del alquiler | /corregirDatos | POST | email, password, id (Del alquiler), parametros a corregir (modelo, marca, year,color, responsable) |
Listar todos los alquileres | /alquileres | POST | email, password, filtro (entregado, pendiente o todo) |
Listar todos los alquileres del usuario | /alquileres/user | POST | email, password, filtro (entregado, pendiente o todo) |
No olvides configurar el archivo .env
y descargar el ServiceAccountKey.json
de tu cuenta firebase