Open Source
Open Source - Service

Storage API Service

Visit Our Github Repository
By
2am.
June 19, 2024
6 min read
This library is a microservice that stores files using league/flysystem filesystem abstraction. It was built to allow our development teams at 2am.tech to avoid having to configure storage adapters over and over on projects involving a microservices infrastructure. It's a combination of two separate applications, one being Symfony's CI application and the other being an API built with Slim3.

The project uses Monolog for logging, Fractal as a serializer, Tactician as a command bus, Basic access authentication and Json Web Tokens for authentication (this is optional), Zend filter for data filtering and validation, and Phinx for database migrations.

Docker compose and Postman collection files are included for easy development, even though docker is not strictly necessary for development as you could easily use the built-in PHP server.

Install

Install the latest version using composer.

$ composer create-project --no-interaction --stability=dev 2amigos/storage-service app

Configuration

The project uses environment files to configure secrets. For that reason, you must create a file named .env in the root directory of the project. An .env.example file has been provided with all required environment values. Modify that file and save it as .env in the root directory.

By default, the API application is configured to work under basic authentication processes. It uses an array of users for that purpose but you could easily change that behavior by configuring the authenticator option of the HttpBasicAuthentication middleware by creating your own or using one provided by the library. Check the PdoAuthenticator.

If authentication is successful, the action will return a Json Web Token to be used for subsequent calls.

Authentication, or the usage of scopes, are optional. If you don't wish to work with this kind of setup, simply remove the middleware configurations of HttpBasicAuthentication, JwtAuthentication and ScopeMiddleware middlewares.

Usage

Create a database with the credentials that you used in .env file. Now you can run Phinx database migrations with this command:

./vendor/bin/phinx migrate -e development

For the sake of this example, go to the public folder of the app and start the built-in PHP server like this:

php -S localhost:8080

Now we can access the api at http://127.0.0.1:8080.

Get a token

To get a token, do the following:

1$ curl "https://127.0.0.1:8080/token" \
2--request POST \ 
3--include \ 
4--insecure \ 
5--header "Content-Type: application/json" \ 
6--data '["mail.all"]' \ 
7 --user test:test
8
9# response
10HTTP/1.1 201 Created
11Content-Type: application/json
12{ 
13"data": { "token": "XXXXXXXXXX", "expires": 1550271641 }
14}

For further information, please refer to its documentation at GitHub.

Contributors

Thank you all for your invaluable efforts!

Share This Post
Back to Open Source
Don't miss out on
our latest insights
– Subscribe Now!
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Navigate
Start Now