Skip to content

Commit

Permalink
Docstrings
Browse files Browse the repository at this point in the history
  • Loading branch information
Mario Hernandez committed Jul 11, 2021
1 parent 4475acb commit 853ba83
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 73 deletions.
36 changes: 35 additions & 1 deletion pyflowcl/Clients.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
"""
pyflowcl.Clients
~~~~~~~~~~~~~~~~
Este modulo implementa el Cliente API genérico.
"""
from dataclasses import dataclass
from typing import Any, Dict

Expand All @@ -9,13 +14,30 @@

@dataclass
class ApiClient:
""" Objeto para definir ApiClient """
"""Clase ApiClient con los objetos para realizar llamadas
Implementa todos los métodos de ``dataclass``.
se instancia con::
cliente = ApiClient(api_url, api_key, api_secret)
el cliente luego debe ser entregado como primer parametro de
las clases incorporadas::
pay = Payment.create(cliente, [...])
"""

api_url: str = "https://sandbox.flow.cl/api"
api_key: str = ""
api_secret: str = ""

def make_signature(self, params: Dict[str, Any]) -> str:
"""Crea el Hash de validacion para ser enviado con la informacion
:rtype: str
"""
string = ""
for k, d in params.items():
if d is not None:
Expand All @@ -28,10 +50,22 @@ def make_signature(self, params: Dict[str, Any]) -> str:
return hash_string

def get(self, url: str, query_string: Dict[str, Any]) -> Dict[str, Any]:
"""Reimplementa get
:rtype: dict
"""
return requests.get(url, params=query_string)

def post(self, url: str, post_data: Dict[str, Any]) -> Dict[str, Any]:
"""Reimplementa post
:rtype: dict
"""
return requests.post(url, data=post_data)

def put(self, url: str, put_data: Dict[str, Any]) -> Dict[str, Any]:
"""Reimplementa put
:rtype: dict
"""
return requests.put(url, data=put_data)
106 changes: 35 additions & 71 deletions pyflowcl/Customer.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
"""
pyflowcl.Customer
~~~~~~~~~~~~~~~~~
Modulo para operaciones con Customer
"""
from dataclasses import asdict
from typing import Any, Dict, Union, cast
from .Clients import ApiClient
import logging

from .models import (
Error,
Customer,
CustomerRequest,
Error,
CustomerList,
CustomerRegisterResponse,
CustomerRegisterStatusResponse,
PaymentStatus,
CustomerChargeRequest,
CollectRequest,
CollectResponse,
BatchCollectRequest,
BatchCollectResponse,
)
from .Clients import ApiClient
import logging


def create(
apiclient: ApiClient, customer_data: Dict[str, Any]
) -> Union[
Customer, Error,
]:
"""
Permite crear clientes para efectuarles cargos recurrentes o suscribirlos
) -> Union[Customer, Error]:
"""Permite crear clientes para efectuarles cargos recurrentes o suscribirlos
a un planes de suscripción. Una vez creado un cliente, Flow lo identificará
por un hash denominado customerId, ejemplo:
Expand All @@ -51,14 +51,8 @@ def create(
raise Exception(response=response)


def edit(
apiclient: ApiClient, customer_data: Dict[str, Any]
) -> Union[
Customer, Error,
]:
"""
Este servicio permite editar los datos de un cliente
"""
def edit(apiclient: ApiClient, customer_data: Dict[str, Any]) -> Union[Customer, Error]:
"""Este servicio permite editar los datos de un cliente"""
url = f"{apiclient.api_url}/customer/edit"

customer = CustomerRequest.from_dict(customer_data)
Expand All @@ -81,12 +75,8 @@ def edit(

def delete(
apiclient: ApiClient, customer_data: Dict[str, Any]
) -> Union[
Customer, Error,
]:
"""
Este servicio permite editar los datos de un cliente
"""
) -> Union[Customer, Error]:
"""Este servicio permite editar los datos de un cliente"""
url = f"{apiclient.api_url}/customer/delete"

customer = CustomerRequest.from_dict(customer_data)
Expand All @@ -108,13 +98,10 @@ def delete(


def get(
apiclient: ApiClient, cust_id: str,
) -> Union[
Customer, Error,
]:
"""
Permite obtener los datos de un cliente en base a su customerId.
"""
apiclient: ApiClient,
cust_id: str,
) -> Union[Customer, Error]:
"""Permite obtener los datos de un cliente en base a su customerId."""
url = f"{apiclient.api_url}/customer/get"

params: Dict[str, Any] = {"apiKey": apiclient.api_key, "customerId": cust_id}
Expand All @@ -134,13 +121,10 @@ def get(


def list(
apiclient: ApiClient, filter_params: Dict[str, Any],
) -> Union[
CustomerList, Error,
]:
"""
Permite obtener los datos de un cliente en base a su customerId.
"""
apiclient: ApiClient,
filter_params: Dict[str, Any],
) -> Union[CustomerList, Error]:
"""Permite obtener los datos de un cliente en base a su customerId."""

url = f"{apiclient.api_url}/customer/list"

Expand All @@ -165,17 +149,14 @@ def list(

def register(
apiclient: ApiClient, customerId: str, url_return: str
) -> Union[
CustomerRegisterResponse, Error,
]:
"""
Envía a un cliente a registrar su tarjeta de crédito para poder
) -> Union[CustomerRegisterResponse, Error]:
"""Envía a un cliente a registrar su tarjeta de crédito para poder
efectuarle cargos automáticos. El servicio responde con la URL para
redirigir el browser del pagador y el token que identifica la
transacción. La url de redirección se debe formar concatenando los
valores recibidos en la respuesta de la siguiente forma:
url + "?token=" +token
url + "?token=" +token
Una vez redirigido el browser del cliente, Flow responderá por medio de
una llamada POST a la url callback del comercio indicada en el parámetro
Expand Down Expand Up @@ -210,11 +191,8 @@ def register(

def getRegisterStatus(
apiclient: ApiClient, token: str
) -> Union[
CustomerRegisterStatusResponse, Error,
]:
"""
Elte servicio retorna el resultado del registro de la tarjeta de
) -> Union[CustomerRegisterStatusResponse, Error]:
"""Este servicio retorna el resultado del registro de la tarjeta de
crédito de un cliente.
"""

Expand Down Expand Up @@ -242,13 +220,8 @@ def getRegisterStatus(
raise Exception(response=response)


def unRegister(
apiclient: ApiClient, customerId: str
) -> Union[
Customer, Error,
]:
"""
Este servicio permite eliminar el registro de la tarjeta de crédito
def unRegister(apiclient: ApiClient, customerId: str) -> Union[Customer, Error]:
"""Este servicio permite eliminar el registro de la tarjeta de crédito
de un cliente. Al eliminar el registro no se podrá hacer cargos
automáticos y Flow enviará un cobro por email.
"""
Expand Down Expand Up @@ -277,11 +250,8 @@ def unRegister(

def charge(
apiclient: ApiClient, charge_data: Dict[str, Any]
) -> Union[
PaymentStatus, Error,
]:
"""
Este servicio permite efectuar un cargo automático en la tarjeta de
) -> Union[PaymentStatus, Error]:
"""Este servicio permite efectuar un cargo automático en la tarjeta de
crédito previamente registrada por el cliente. Si el cliente no
tiene registrada una tarjeta el metodo retornará error.
"""
Expand All @@ -308,11 +278,8 @@ def charge(

def collect(
apiclient: ApiClient, collect_data: Dict[str, Any]
) -> Union[
CollectResponse, Error,
]:
"""
Este servicio envía un cobro a un cliente. Si el cliente tiene
) -> Union[CollectResponse, Error]:
"""Este servicio envía un cobro a un cliente. Si el cliente tiene
registrada una tarjeta de crédito se le hace un cargo automático, si
no tiene registrada una tarjeta de credito se genera un cobro. Si se
envía el parámetro byEmail = 1, se genera un cobro por email.
Expand Down Expand Up @@ -340,11 +307,8 @@ def collect(

def batchCollect(
apiclient: ApiClient, collect_data: Dict[str, Any]
) -> Union[
BatchCollectResponse, Error,
]:
"""
Este servicio envía de forma masiva un lote de cobros a clientes.
) -> Union[BatchCollectResponse, Error]:
"""Este servicio envía de forma masiva un lote de cobros a clientes.
Similar al servicio collect pero masivo y asíncrono. Este servicio
responde con un token identificador del lote y el número de filas
recibidas.
Expand Down
2 changes: 1 addition & 1 deletion pyflowcl/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.0.3"
__version__ = "1.0.5"

0 comments on commit 853ba83

Please sign in to comment.