https://github.com/alexandre-t/evcbundle
Bundle to integrate EVC api
https://github.com/alexandre-t/evcbundle
Last synced: 12 months ago
JSON representation
Bundle to integrate EVC api
- Host: GitHub
- URL: https://github.com/alexandre-t/evcbundle
- Owner: Alexandre-T
- License: mit
- Created: 2019-12-27T17:51:43.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-14T13:27:26.000Z (about 6 years ago)
- Last Synced: 2025-03-16T15:19:23.445Z (over 1 year ago)
- Language: PHP
- Size: 148 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EvcBundle
This symfony bundle implements service to use the [evc.de](https://www.evc.de) API.
# Installation
Make sure Composer is installed globally, as explained in the
[installation chapter](https://getcomposer.org/doc/00-intro.md)
of the Composer documentation.
Applications that use Symfony Flex
----------------------------------
Open a command console, go to your symfony project directory and execute:
```console
$ composer require alexandret/evc-bundle
```
Open env (or env.dist) file and search the new created lines to configure variable
```
###> alexandret/evc-bundle ###
EVC_API = ''
EVC_USERNAME = ''
EVC_PASSWORD = ''
###< alexandret/evc-bundle ###
```
Look at the configuration section for more explanation.
Applications that don't use Symfony Flex
----------------------------------------
### Step 1: Download the Bundle
Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:
```console
$ composer require alexandret/evc-bundle
```
### Step 2: Enable the Bundle
Then, enable the bundle by adding it to the list of registered bundles
in the `config/bundles.php` file of your project:
```php
// config/bundles.php
return [
// ...
Alexandre\EvcBundle\AlexandreEvcBundle::class => ['all' => true],
];
```
Open your `env` file and add the value of necessary configuration variables
### Step 3: Create a alexandre_evc.yaml file
Create a `alexandre_evc.yaml` file under the config/packages subdirectory.
Then copy and paste these lines:
```yaml
#config/packages/alexandre_evc.yaml
alexandre_evc:
api_id: '%env(EVC_API)%'
username: '%env(EVC_USERNAME)%'
password: '%env(EVC_PASSWORD)%'
```
Do NOT replace env by your password. You have to configure your `.env` file as described in the below paragraph.
Configuration
-------------
EvcBundle needs data information. You shall complete them in your env file.
* EVC_API: The api key provided by evc support
* EVC_USERNAME: Your evc.de account number
* EVC_PASSWORD: Your API password. This is **NOT** your evc.de account password.
It's a separate password that you get from the EVC office.
Here is a sample:
```dotenv
###> alexandret/evc-bundle ###
EVC_API = sample_key
EVC_USERNAME = my_name
EVC_PASSWORD = my_password
###< alexandret/evc-bundle ###
```
How to mock your requests to the API?
-------------------------------------
You want to test your application with mocked customer and avoid to send data to the real evc.de API?
By default, our bundle is created to use a requester service that embed Unirest/Request. In your
`config/package/dev` repository, add new lines at the end of the `service.yaml` file. (Do not hesitate to create
a new `service.yaml` file if there is no file yet. If you use flex to install this bundle, this is already done! :)
```yaml
# config/packages/dev/service.yaml
# config/packages/test/service.yaml
services:
alexandre_evc_request:
class: Alexandre\EvcBundle\Service\EmulationService
arguments:
$api: '%env(EVC_API)%'
$username: '%env(EVC_USERNAME)%'
$password: '%env(EVC_PASSWORD)%'
```
Instead of calling the `RequesterService`, dev environment will use an `EmulationService`.
There is four declared customer.
* `11111` is the identifier of a customer that does not exists. Use it when you want to test your application with a non-existent customer
* `22222` customer exists, but he is not a personal user of your reseller. Use it when you want to test your application with a non-personal customer
* `33333` customer exists and he is a personal user with 42 credits.
* `44444` is a personal customer too. He has 42 credits too.
* `55555` Each time you call the 55555 customer, Emulation service will throw a `NetworkException`to test your application as if evc API wasn't reachable.
* `66666` Each time you call the 66666 customer, Emulation service will throw a `CredentialException` to test your application when your configuration is wrong.
* `77777` Each time you call the 77777 customer, Emulation service will throw a `LogicException`. We do not think it is useful, but if you want to test. A logic exception could be throw if API changes or if the answer is truncated.
Exceptions
----------
* `NetworkException`: Network exceptions are thrown if evc.de is not reachable.
* `CredentialException`: Credential exceptions are thrown when you do a misconfiguration on your evc.de credentials.
* `LogicException`: Logical exceptions are thrown when evc.de is returning a not expected response. It could happen if there is a bug on this bundle, or if the api changes.
* `EvcException`: The three previous exceptions inherits the `EvcException`.