Metadata-Version: 2.1
Name: cleandev-resp-builder
Version: 0.2.1
Summary: Module for handler errors codes in your APIS
Home-page: https://gitlab.com/cleansoftware/libs/public/cleandev-resp-builder
Author: Daniel Rodriguez Rodriguez
Author-email: danielrodriguezrodriguez.pks@gmail.com
License: UNKNOWN
Project-URL: Bug Tracker, https://gitlab.com/cleansoftware/libs/public/cleandev-resp-builder/-/issues
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Cleandev Response Builder

Con esta libreria podras constuir "Response" para las apis de una forma facil usando un fichero de codigos de error
para retornar mensajes en tus APIS.

| Properties         | Requerido          | Valor por defecto | Descripción                                |
|--------------------|--------------------|:-----------------:|--------------------------------------------|
| name_file_codes    | :heavy_check_mark: |       -           | Nombre del archivo de los codigos de error |

Es una clase con un solo método y varios parametros que analizaremos a continuación

## Configuracion

El archivo `properties.ini` existe una varaible `name_file_codes` donde es la ruta de un fichero que contiene un `json`
con codigos y mensajes predefinidos

### properties.ini

```properties
[RESP_BUILDER]
name_file_codes=resp_codes.json
```

### resp_codes.json

```json
{
  "ERROR": {
    "message": "Error"
  },
  "SUCCESS": {
    "message": "Success"
  }
}
```

mediante esta configuracion podremos acceder al contenido mediante el codigo

## Ejemplo

Definimos el siguiente endpoint `/login` en nuestra Api

```python

from resp_builder import ResponseBuilder
from flask import Response

respose_builder = ResponseBuilder()
response: Response = respose_builder.response(
    code='SUCCESS',
    data={'anykey': 'anyvalue'},
    status_code=200,
    is_merge=True
)
print(response.json)  # {"message": "Success", "anykey": "anyvalue"} http_code = 200
```

En este caso la salida de la request es `{"message": "Success", "anykey": "anyvalue"}` con un codigo `http 200 OK`

## Parametros

`code`: Este es el codigo que debe estar en el fichero `resp_codes.json` y retornara el valor asociado a dicho código
`data`: Este parametro añade informacion extra a el response final, añadiendo los datos a la data que devuelve junto con
el codigo del fichero antes mencionado.
`status_code`: Codigo http del response
`is_merge`: Por defecto `is_merge` es `False` su implicación es en la forma que se construye los datos que retorna el
respone, en caso de ser `False` se genera por un lado los datos provenientes del codigo del fichero `resp_codes.json`
y por otro los datos que pasamos en `data` dentro de una llave `data` en el json resultante.

### Ejemplos

Para el siguiente caso se mezclan el contenido que viene del fichero de codigos `{"message": "Success"}` + lo que se
le pasa en la variable `data` y dado que `is merge` es `True` no crea la llave `data` en el json resultante

```python

from resp_builder import ResponseBuilder
from flask import Response

respose_builder = ResponseBuilder()
response: Response = respose_builder.response(
    code='SUCCESS',
    data={'anykey': 'anyvalue'},
    status_code=200,
    is_merge=True
)
print(response.json)  # {"message": "Success", "anykey": "anyvalue"} http_code = 200
```

El mismo ejemplo pero `is_merge` es `False`

```python

from resp_builder import ResponseBuilder
from flask import Response

respose_builder = ResponseBuilder()
response: Response = respose_builder.response(
    code='SUCCESS',
    data={'anykey': 'anyvalue'},
    status_code=200,
    is_merge=False
)
print(response.json)  # {"message": "Success", "data":{"anykey": "anyvalue"} http_code = 200
```


