This project uses composer. Just run :
Tuneefy needs a variety of tables to work properly; you can populate your database with the following :
mysql -u user -p database_name < ./structure.sql
Building assets & API doc
To build the assets and the API documentation, I use npm and some modules.
NB: Use Node 8 for aglio !
npm install npm run build-assets npm run api-documentation
Composer packages used
- Composer, providing a nice package manager and a practical PSR-4 autoloader
- Symfony\Yaml to parse the configuration files
- Slim, a lightweight RESTful framework
- Twig, a template engine
- XmlToJsonConverter to convert Amazon XML to correct JSON
- RKA Content-Type renderer to output JSON / XML / HTML for the API
- Slim basic auth for admin access
NPM (dev) packages used
- Gulp , including
pumpfor building assets
- Aglio for generating the API docs
On the frontend side of things
I'm using JQuery to cover the DOM manipulation tasks and related stuff.
This project is a very basic composer project with a PSR-4 autoloader.
The source is in
src/tuneefy and is organised as such :
- MusicalEntity includes the model for a musical entity (album or track)
- Controller includes the controllers for the various routes (api and frontend)
- Platform includes all the platform-related code, especially the specific methods for each remote API call
- Utils includes various utilities such as custom Slim error handlers
- and two top-level classes : Application and PlatformEngine that deal with the application itself and how it interacts with the platforms
The tests are under the
./tests folder and I use Codeception to run them.
Just run :
vendor/bin/codecept run --steps
Beforehand, do not forget to launch a development web server so that the functional tests have an endpoint to test. For instance :
php -S localhost:8000 -t web php -S localhost:8001 -t web_api
There should be 36 tests containing 673 assertions.
Sometimes a platform fails to respond correctly due to network latencies or such. Re-run the tests in this case, it should pass fine the second time.
The API endpoints require an OAuth access token. The token is necessary to authenticate all requests to the API.
OAuth 2.0 is a simple and secure authentication mechanism. It allows applications to acquire an access token for tuneefy via a POST request to a token endpoint. Authentication with OAuth can be accomplished in the following steps:
- Register for an API key by sending a mail to email@example.com
- Exchange your customer id and secret for an access token
- Make requests by passing the token in the Authorization header
- When your token expires, you can get a new one
Apply for an API key
You can get an API key and associated secret by sending an email to firstname.lastname@example.org.
Web Service Rate Limits
Limits are placed on the number of API requests you may make using your API key. Rate limits may vary by service, but the defaults are 100 requests per hour.
If you want to participate/contribute, feel free to create pull requests or issues so we can make Tuneefy better and more efficient !