@@ -72,21 +72,26 @@ def _log_request(self):
72
72
def _set_token (self ):
73
73
"""In order to operate, we should gather a token from the API. This token
74
74
lasts for 30 seconds. After that, we must gather a new one"""
75
- self .response = requests .post (
76
- urljoin (self .api_url , "/pic_token" ),
77
- data = {
78
- "grant_type" : "password" ,
79
- "client_id" : self .client_id ,
80
- "client_secret" : self .secret ,
81
- "username" : self .user ,
82
- "password" : self .password ,
83
- },
84
- )
85
- self ._log_request ()
86
- if not self .response .ok :
87
- self .error = self .response .json ()
88
- return
89
- self .token = self .response .json ()["access_token" ]
75
+ try :
76
+ self .response = requests .post (
77
+ urljoin (self .api_url , "/pic_token" ),
78
+ data = {
79
+ "grant_type" : "password" ,
80
+ "client_id" : self .client_id ,
81
+ "client_secret" : self .secret ,
82
+ "username" : self .user ,
83
+ "password" : self .password ,
84
+ },
85
+ timeout = 30 ,
86
+ )
87
+ self ._log_request ()
88
+ if not self .response .ok :
89
+ self .error = self .response .json ()
90
+ return
91
+ self .token = self .response .json ()["access_token" ]
92
+ except requests .exceptions .Timeout :
93
+ self .error = "Request timed out. Please try again later."
94
+ _logger .error (self .error )
90
95
91
96
def request (self , request_method , seur_method , ** kwargs ):
92
97
"""Raw query. It can be used as it is calling any API method, although its
@@ -105,17 +110,22 @@ def request(self, request_method, seur_method, **kwargs):
105
110
elif request_method == "GET" :
106
111
request_params ["params" ] = {** kwargs }
107
112
_logger .debug (f"SEUR Request to { seur_method } : { request_params } " )
108
- self .response = requests .request (** request_params )
109
- _logger .debug (f"SEUR Response from { seur_method } : { self .response .content } " )
110
- self ._log_request ()
111
- if not self .response .ok :
112
- self .error = "\n " .join (
113
- [
114
- f"{ error ['title' ]} ({ error ['status' ]} ): { error ['detail' ]} "
115
- for error in self .response .json ().get ("errors" )
116
- ]
117
- )
118
- raise UserError (f"SEUR ERROR: \n \n { self .error } " )
113
+ try :
114
+ self .response = requests .request (** request_params , timeout = 30 )
115
+ _logger .debug (f"SEUR Response from { seur_method } : { self .response .content } " )
116
+ self ._log_request ()
117
+ if not self .response .ok :
118
+ self .error = "\n " .join (
119
+ [
120
+ f"{ error ['title' ]} ({ error ['status' ]} ): { error ['detail' ]} "
121
+ for error in self .response .json ().get ("errors" )
122
+ ]
123
+ )
124
+ raise UserError (f"SEUR ERROR: \n \n { self .error } " )
125
+ except requests .exceptions .Timeout :
126
+ self .error = "Request timed out. Please try again later."
127
+ _logger .error (self .error )
128
+ raise UserError (self .error ) from None
119
129
120
130
# SEUR ATLAS API METHODS
121
131
0 commit comments