qandidate / toggle-api
Api interface for your toggles.
Requires
- php: >=7.2
- ext-json: *
- asm89/stack-cors: ^2.0
- predis/predis: ^1.1||^2.0
- qandidate/toggle: ^2.0
- qandidate/toggle-bundle: ^1.4.1
- symfony/dependency-injection: ^5.2
- symfony/dotenv: ^5.2
- symfony/framework-bundle: ^5.2
- symfony/http-foundation: ^5.2
- symfony/http-kernel: ^5.2
- symfony/security-bundle: ^5.2
Requires (Dev)
- broadway/coding-standard: ^1.2
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^8.0
- symfony/browser-kit: ^5.2
This package is auto-updated.
Last update: 2024-10-05 00:19:01 UTC
README
An API for managing your toggles, uses Redis to store the toggle collection.
About
Read our blog post series about this repository at:
- http://labs.qandidate.com/blog/2014/08/18/a-new-feature-toggling-library-for-php/
- http://labs.qandidate.com/blog/2014/08/19/open-sourcing-our-feature-toggle-api-and-ui/
Installation
Install the dependencies with composer:
make dependencies
Configuration is determined based on environment variables. See the .env.*
files.
You can override the values in the file with environment values.
The default configuration is mainly for local development.
The environment variable TOGGLE__ALLOWED_ORIGINS
should be valid JSON. This is to allow arrays.
Running the tests
We use PHPUnit, so to run the tests simply run:
docker-compose up -d
make test
Running the app
With your favorite webserver (or with php -S 127.0.0.1:1337 -t public
for local testing) point your document root to the public
folder.
Endpoints
Retrieve the toggles
GET /toggles
Create or update a toggle
PUT /toggles/{name}
Example request:
{
"conditions" : [
{
"name" : "operator-condition",
"operator" : {
"name" : "less-than",
"value" : "1337"
},
"key" : "user_id"
}
],
"name" : "foo",
"status" : "conditionally-active",
"originalName" : "foo"
}
NOTE: PUT doesn't remove the previous toggle if you rename it. So if you want to rename foo to bar, you would have to PUT
bar and DELETE
foo.
Delete a toggle
DELETE /toggles/{name}
License
MIT, see LICENSE.