Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release V7.0.0 #8

Merged
merged 39 commits into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
7bc8712
Slim app gets with routes
xsga Jun 6, 2024
619815a
Fix error
xsga Jun 6, 2024
aa71c9f
Update readme
xsga Jun 6, 2024
00aedbe
PSALM error level 6
xsga Jun 6, 2024
32f185d
Fix FilmParser errors
xsga Jun 6, 2024
1ead339
Fix parser errors
xsga Jun 6, 2024
ecb13c2
Fix parser errors
xsga Jun 6, 2024
9213633
Add lost commands
xsga Jun 6, 2024
75df39a
Include test user on start
xsga Jun 6, 2024
85362be
PSALM error level 5
xsga Jun 7, 2024
4759667
PSALM error level 4
xsga Jun 7, 2024
65bf1f2
Log4PHP PSALM revision
xsga Jun 7, 2024
da8fba3
Fix style
xsga Jun 10, 2024
611d966
Genre topics feature
xsga Jun 10, 2024
efd4fa3
Genre and country value objects
xsga Jun 10, 2024
8b88964
Genre topic value objects
xsga Jun 10, 2024
2e83095
Fix error
xsga Jun 10, 2024
a59d793
Director model object
xsga Jun 10, 2024
71618fc
Actors model
xsga Jun 10, 2024
2ef5cff
Film country
xsga Jun 11, 2024
4a45610
Parsers refactor
xsga Jun 11, 2024
2fc2f42
Get film service
xsga Jun 11, 2024
0b127f9
Update README.md
xsga Jun 11, 2024
9442020
Code revision
xsga Jun 13, 2024
303bfae
Simple search parser refactor
xsga Jun 13, 2024
e8df246
Fix error
xsga Jun 13, 2024
0530ed6
Search parsers refactor
xsga Jun 13, 2024
66a5b5e
Fix style
xsga Jun 13, 2024
f680fb0
Object models and value objects
xsga Jun 13, 2024
c1b74df
Domain objects
xsga Jun 13, 2024
70057fe
Update README.md
xsga Jun 13, 2024
de61bdb
Delete environment setting
xsga Jun 14, 2024
b8d10b4
Code revision
xsga Jun 17, 2024
b6abe96
HTTP Client generic
xsga Jun 17, 2024
9d70c82
Unused code
xsga Jun 17, 2024
e0ca92f
Docker revision
xsga Jun 17, 2024
4cd3648
Fix error
xsga Jun 17, 2024
e4b24ae
Fix errors
xsga Jun 18, 2024
9c572ae
Dockerfile revision
xsga Jun 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ARG DEBIAN_FRONTEND=noninteractive

# System dependencies.
RUN apt-get update \
&& apt-get install -y sendmail libpng-dev libzip-dev zlib1g-dev libonig-dev gcc make autoconf
&& apt-get install -y sendmail libpng-dev libzip-dev zlib1g-dev libonig-dev

# PHP libraries.
RUN pecl install apcu xdebug
Expand All @@ -21,8 +21,8 @@ RUN curl -L https://phar.phpunit.de/phploc.phar > /usr/local/bin/phploc \
&& chmod +x /usr/local/bin/phploc

# Setup application folder.
RUN mkdir -p /opt/filmaffinityapi/public
RUN ln -s /opt/filmaffinityapi/public /var/www/html/filmaffinityapi
RUN mkdir -p /opt/app/public
RUN ln -s /opt/app/public /var/www/html/app

# Configure PHP.
COPY config/etc/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
Expand All @@ -31,4 +31,4 @@ COPY config/etc/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

# Working directory.
WORKDIR /opt/filmaffinityapi
WORKDIR /opt/app
30 changes: 22 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![Language](https://img.shields.io/github/languages/top/xsga/filmaffinity-api)](https://php.net/)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%208.3-8892BF?style=flat)](https://php.net/)
[![Latest version](https://img.shields.io/github/v/release/xsga/filmaffinity-api)](https://github.com/xsga/filmaffinity-api/releases/tag/v6.0.0)
[![Latest version](https://img.shields.io/github/v/release/xsga/filmaffinity-api)](https://github.com/xsga/filmaffinity-api/releases/tag/v7.0.0)
[![License](https://img.shields.io/github/license/xsga/filmaffinity-api)](https://opensource.org/licenses/MIT)

FilmAffinity-API is a public and non offical API wich allow you to get information about films from [FilmAffinity](http://filmaffinity.com "FilmAffinity Home") website. You can search films and get their complet information, including cast, synopsis and cover.
Expand All @@ -23,10 +23,17 @@ Instructions:
```
docker compose up -d
```
* Create a user using command `app:create-user`:
* Run `composer install` to install the project dependencies:
```
composer install
```
* Rename `config/.env.example` to `config/.env` to activates environment settings.
* Setup API settings edditing `config/.env` file (don't change `URL_PATH` and database variables).
* Use test user (email `test@test.com` and password `test`) or create a user using command `app:create-user`:
```
docker exec -it filmaffinityapi-web-server php .bin/console app:create-user
```
* FilmAffinityAPI is available at the following URL: `http://localhost/app`


## Manual installation
Expand Down Expand Up @@ -122,11 +129,15 @@ docker exec -it filmaffinityapi-web-server php .bin/console <COMMAND>
"results": [
{
"id": 160882,
"title": "Pulp Fiction (1994)"
"title": "Pulp Fiction",
"year": 1994,
"directors": ["Quentin Taratino"]
},
{
"id": 991349,
"title": "8 Bit Cinema: Pulp Fiction (C) (2014)"
"title": "8 Bit Cinema: Pulp Fiction",
"year": 2014,
"directors": ["David Dutton"]
}
]
}
Expand Down Expand Up @@ -158,7 +169,9 @@ docker exec -it filmaffinityapi-web-server php .bin/console <COMMAND>
"results": [
{
"id": 160882,
"title": "Pulp Fiction (1994)"
"title": "Pulp Fiction",
"year": 1994,
"directors": ["Quentin Taratino"]
}
]
}
Expand All @@ -180,8 +193,8 @@ docker exec -it filmaffinityapi-web-server php .bin/console <COMMAND>
"filmAfinityId": "160882",
"title": "Pulp Fiction",
"originalTitle": "Pulp Fiction",
"year": "1994",
"duration": "153",
"year": 1994,
"duration": 153,
"coverUrl": "https://pics.filmaffinity.com/pulp_fiction-210382116-large.jpg",
"coverFile": "pulp_fiction-210382116-large.jpg",
"rating": "8,6",
Expand All @@ -192,7 +205,8 @@ docker exec -it filmaffinityapi-web-server php .bin/console <COMMAND>
"photography": "Andrzej Sekula",
"cast": ["John Travolta", "Samuel L. Jackson", "Uma Thurman", "Bruce Willis", "Ving Rhames", "Harvey Keitel", "Tim Roth", "Amanda Plummer", "María de Medeiros", "Eric Stoltz", "Rosanna Arquette", "Christopher Walken", "Paul Calderon", "Bronagh Gallagher", "Peter Greene", "Stephen Hibbert", "Angela Jones", "Phil LaMarr", "Robert Ruth", "Julia Sweeney", "Quentin Tarantino", "Frank Whaley", "Duane Whitaker", "Steve Buscemi", "Burr Steers"],
"producer": "Miramax, Band Apart, Jersey Films. Lawrence Bender",
"genres": ["Thriller", "Crimen", "Historias cruzadas", "Película de culto", "Comedia negra"],
"genres": ["Thriller"],
"genreTopics": ["Crimen", "Historias cruzadas", "Película de culto", "Comedia negra"],
"synopsis": "Jules y Vincent, dos asesinos a sueldo con no demasiadas luces, trabajan para el gángster Marsellus Wallace. Vincent le confiesa a Jules que Marsellus le ha pedido que cuide de Mia, su atractiva mujer. Jules le recomienda prudencia porque es muy peligroso sobrepasarse con la novia del jefe. Cuando llega la hora de trabajar, ambos deben ponerse \"manos a la obra\". Su misión: recuperar un misterioso maletín."
}
}
Expand Down
4 changes: 4 additions & 0 deletions bin/console
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ use Xsga\FilmAffinityApi\Modules\Users\Infrastructure\Console\CreateUserCommand;
use Xsga\FilmAffinityApi\Modules\Users\Infrastructure\Console\DeleteUserCommand;
use Xsga\FilmAffinityApi\Modules\Users\Infrastructure\Console\DisableUserCommand;
use Xsga\FilmAffinityApi\Modules\Users\Infrastructure\Console\EnableUserCommand;
use Xsga\FilmAffinityApi\Modules\Users\Infrastructure\Console\GetHashedPasswordCommand;
use Xsga\FilmAffinityApi\Modules\Users\Infrastructure\Console\GetTokenCommand;

chdir(realpath(dirname(__FILE__)));

Expand All @@ -28,5 +30,7 @@ $console->add($container->get(BackupCountriesCommand::class));
$console->add($container->get(EnableUserCommand::class));
$console->add($container->get(DisableUserCommand::class));
$console->add($container->get(DeleteUserCommand::class));
$console->add($container->get(GetHashedPasswordCommand::class));
$console->add($container->get(GetTokenCommand::class));

$console->run();
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"squizlabs/php_codesniffer": "^3.7",
"php-parallel-lint/php-parallel-lint": "^1.3",
"php-parallel-lint/php-console-highlighter": "^1.0",
"vimeo/psalm": "^4.27"
"vimeo/psalm": "^5.24"
},
"autoload": {
"files": [
Expand Down
9 changes: 2 additions & 7 deletions config/.env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
# ENVIRONMENT - Execution environment.
#
# Accepted values:
#
# dev (for development environment)
# pro (for production environment)
# FilmAffinityAPI environtment setting.
#
ENVIRONMENT="dev"

# URL_PATH - FilmAffinity's API URL path.
# Path in URL to access the API without domain or subdomain.
Expand All @@ -17,7 +12,7 @@ ENVIRONMENT="dev"
# - http://www.domain.com/api --> url_path = "api"
# - http://www.domain.com/api/folder --> url_path = "api/folder"
#
URL_PATH="filmaffinityapi"
URL_PATH="/app"

# ERROR_DETAIL - Flag to output error detail on error responses.
#
Expand Down
3 changes: 3 additions & 0 deletions config/app/SlimApp.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,8 @@ function getSlimApp(ContainerInterface $container): App
$errorMiddleware = $app->addErrorMiddleware($container->get('getErrorDetail'), true, true);
$errorMiddleware->setDefaultErrorHandler(ErrorHandler::class);

// Load routes.
getRoutes($app);

return $app;
}
24 changes: 7 additions & 17 deletions config/container/Container.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@
use Xsga\FilmAffinityApi\Modules\Films\Application\Services\BackupGenresService;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Parsers\AdvancedSearchFormParser;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Parsers\AdvancedSearchParser;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Parsers\FilmParser;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Parsers\SimpleSearchParser;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Repositories\AdvancedSearchRepository;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Repositories\CountriesRepository;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Repositories\FilmsRepository;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Repositories\GenresRepository;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Repositories\SearchRepository;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Services\GetFilmService;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Services\GetSimpleSearchResultsService;
use Xsga\FilmAffinityApi\Modules\Films\Domain\Services\UrlService;
use Xsga\FilmAffinityApi\Modules\Films\Infrastructure\Repositories\FilmAffinityAdvancedSearchRepository;
use Xsga\FilmAffinityApi\Modules\Films\Infrastructure\Repositories\FilmAffinityCountriesRepository;
Expand Down Expand Up @@ -68,7 +68,6 @@

// ENVIRONMENT.
'getLanguage' => $_ENV['LANGUAGE'],
'getEnvironment' => $_ENV['ENVIRONMENT'],
'getErrorDetail' => filter_var($_ENV['ERROR_DETAIL'], FILTER_VALIDATE_BOOLEAN),
'getUrlPath' => $_ENV['URL_PATH'],
'getJwtSecretKey' => $_ENV['JWT_SECRET_KEY'],
Expand All @@ -79,8 +78,6 @@
'token' => SecurityTypes::TOKEN
};
},
//'getDateMask' => $_ENV['DATE_MASK'],
//'getDateTimeMask' => $_ENV['DATETIME_MASK'],
'getDateMask' => 'd/m/Y',
'getDateTimeMask' => 'd/m/Y H:i:s',
'database.info' => [
Expand Down Expand Up @@ -109,12 +106,7 @@
// ENTITY MANAGER.
// --------------------------------------------------------------------------------------------
EntityManagerInterface::class => function (ContainerInterface $container) {
$isDevMode = match ($container->get('getEnvironment')) {
'dev' => true,
'pro' => false,
default => true
};

$isDevMode = true;
$entityPaths = $container->get('entity.folders');
$proxyPath = $container->get('entities.proxy.folder');
$connection = DriverManager::getConnection($container->get('database.info'));
Expand Down Expand Up @@ -175,14 +167,12 @@

// Application services.
BackupGenresService::class => DI\create(BackupGenresService::class)->constructor(
DI\get(LoggerInterface::class),
DI\get(FilmAffinityGenresRepository::class),
DI\get('getLanguage'),
DI\get('backup.folder')
),

BackupCountriesService::class => DI\create(BackupCountriesService::class)->constructor(
DI\get(LoggerInterface::class),
DI\get(FilmAffinityCountriesRepository::class),
DI\get('getLanguage'),
DI\get('backup.folder')
Expand All @@ -191,6 +181,7 @@
// Domain services.
UrlService::class => DI\create(UrlService::class)->constructor(
DI\get(LoggerInterface::class),
DI\get('filmaffinity.getBaseURL'),
DI\get('filmaffinity.filmURL'),
DI\get('filmaffinity.searchURL'),
DI\get('filmaffinity.advancedSearchURL')
Expand All @@ -200,7 +191,7 @@
FilmsRepository::class => DI\create(FilmAffinityFilmsRepository::class)->constructor(
DI\get(UrlService::class),
DI\get(HttpClientService::class),
DI\get(FilmParser::class)
DI\get(GetFilmService::class)
),
GenresRepository::class => DI\create(FilmAffinityGenresRepository::class)->constructor(
DI\get(LoggerInterface::class),
Expand All @@ -222,7 +213,7 @@
SearchRepository::class => DI\create(FilmAffinitySearchRepository::class)->constructor(
DI\get(UrlService::class),
DI\get(HttpClientService::class),
DI\get(SimpleSearchParser::class)
DI\get(GetSimpleSearchResultsService::class)
),

// --------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -252,8 +243,7 @@
// HTTP CLIENT application services.
HttpClientService::class => DI\create(GuzzleHttpClientService::class)->constructor(
DI\get(LoggerInterface::class),
DI\get(Client::class),
DI\get('filmaffinity.getBaseURL')
DI\get(Client::class)
),

// SLIM middleware.
Expand Down
1 change: 0 additions & 1 deletion config/env/Settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ function loadEnvironmentSettings(): void
$settings = Dotenv::createMutable(getPathTo('config'));
$settings->safeLoad();

$settings->required('ENVIRONMENT')->allowedValues(['dev', 'pro']);
$settings->required('URL_PATH');
$settings->required('ERROR_DETAIL')->isBoolean();
$settings->required('LANGUAGE')->allowedValues(['spa', 'en']);
Expand Down
Loading