11import os
2- from typing import Optional , Tuple , Union
2+ from typing import Optional , Tuple
33from urllib .parse import urljoin
44
55import requests
6- from aws_requests_auth .aws_auth import AWSRequestsAuth
76from cuenca_validations .typing import (
87 ClientRequestParams ,
98 DictStrAny ,
1211from requests import Response
1312
1413from ..exc import CuencaResponseException
14+ from ..jwt import Jwt
1515from ..version import API_VERSION , CLIENT_VERSION
1616
1717API_HOST = 'api.cuenca.com'
@@ -24,7 +24,7 @@ class Session:
2424
2525 host : str = API_HOST
2626 basic_auth : Tuple [str , str ]
27- iam_auth : Optional [AWSRequestsAuth ] = None
27+ jwt_token : Optional [Jwt ] = None
2828 session : requests .Session
2929
3030 def __init__ (self ):
@@ -41,31 +41,15 @@ def __init__(self):
4141 api_secret = os .getenv ('CUENCA_API_SECRET' , '' )
4242 self .basic_auth = (api_key , api_secret )
4343
44- # IAM auth
45- aws_access_key = os .getenv ('AWS_ACCESS_KEY_ID' , '' )
46- aws_secret_access_key = os .getenv ('AWS_SECRET_ACCESS_KEY' , '' )
47- aws_region = os .getenv ('AWS_DEFAULT_REGION' , AWS_DEFAULT_REGION )
48- if aws_access_key and aws_secret_access_key :
49- self .iam_auth = AWSRequestsAuth (
50- aws_access_key = aws_access_key ,
51- aws_secret_access_key = aws_secret_access_key ,
52- aws_host = self .host ,
53- aws_region = aws_region ,
54- aws_service = AWS_SERVICE ,
55- )
56-
5744 @property
58- def auth (self ) -> Union [AWSRequestsAuth , Tuple [str , str ]]:
59- # preference to basic auth
60- return self .basic_auth if all (self .basic_auth ) else self .iam_auth
45+ def auth (self ) -> Optional [Tuple [str , str ]]:
46+ return self .basic_auth if all (self .basic_auth ) else None
6147
6248 def configure (
6349 self ,
6450 api_key : Optional [str ] = None ,
6551 api_secret : Optional [str ] = None ,
66- aws_access_key : Optional [str ] = None ,
67- aws_secret_access_key : Optional [str ] = None ,
68- aws_region : str = AWS_DEFAULT_REGION ,
52+ use_jwt : Optional [bool ] = False ,
6953 sandbox : Optional [bool ] = None ,
7054 ):
7155 """
@@ -84,23 +68,8 @@ def configure(
8468 api_secret or self .basic_auth [1 ],
8569 )
8670
87- # IAM auth
88- if self .iam_auth is not None :
89- self .iam_auth .aws_access_key = (
90- aws_access_key or self .iam_auth .aws_access_key
91- )
92- self .iam_auth .aws_secret_access_key = (
93- aws_secret_access_key or self .iam_auth .aws_secret_access_key
94- )
95- self .iam_auth .aws_region = aws_region or self .iam_auth .aws_region
96- elif aws_access_key and aws_secret_access_key :
97- self .iam_auth = AWSRequestsAuth (
98- aws_access_key = aws_access_key ,
99- aws_secret_access_key = aws_secret_access_key ,
100- aws_host = self .host ,
101- aws_region = aws_region ,
102- aws_service = AWS_SERVICE ,
103- )
71+ if use_jwt :
72+ self .jwt_token = Jwt .create (self )
10473
10574 def get (
10675 self ,
@@ -126,6 +95,11 @@ def request(
12695 data : OptionalDict = None ,
12796 ** kwargs ,
12897 ) -> DictStrAny :
98+ if self .jwt_token :
99+ if self .jwt_token .is_expired :
100+ self .jwt_token = Jwt .create (self )
101+ self .session .headers ['X-Cuenca-Token' ] = self .jwt_token .token
102+
129103 resp = self .session .request (
130104 method = method ,
131105 url = 'https://' + self .host + urljoin ('/' , endpoint ),
0 commit comments