@ -6,9 +6,14 @@ import time
import datetime
import logging
from exceptions_helper import ex
from sg_helpers import try_int
from . exceptions import *
# noinspection PyUnreachableCode
if False :
from typing import Any , AnyStr , Dict
log = logging . getLogger ( ' libtrakt ' )
log . addHandler ( logging . NullHandler ( ) )
@ -193,7 +198,7 @@ class TraktAPI(object):
return False
if ' access_token ' in resp and ' refresh_token ' in resp and ' expires_in ' in resp :
token_valid_date = now + datetime . timedelta ( seconds = sickbeard . helpers . try_int ( resp [ ' expires_in ' ] ) )
token_valid_date = now + datetime . timedelta ( seconds = try_int ( resp [ ' expires_in ' ] ) )
if refresh or ( not refresh and None is not account and account in sickbeard . TRAKT_ACCOUNTS ) :
return self . replace_account ( account , resp [ ' access_token ' ] , resp [ ' refresh_token ' ] ,
token_valid_date , refresh )
@ -203,6 +208,7 @@ class TraktAPI(object):
def trakt_request ( self , path , data = None , headers = None , url = None , count = 0 , sleep_retry = 60 ,
send_oauth = None , method = None , * * kwargs ) :
# type: (AnyStr, Dict, Dict, AnyStr, int, int, AnyStr, AnyStr, Any) -> Dict
if method not in [ ' GET ' , ' POST ' , ' PUT ' , ' DELETE ' , None ] :
return { }
@ -310,6 +316,22 @@ class TraktAPI(object):
elif 404 == code :
log . warning ( u ' Trakt error (404) the resource does not exist: %s %s ' % ( url , path ) )
raise TraktMethodNotExisting ( ' Trakt error (404) the resource does not exist: %s %s ' % ( url , path ) )
elif 429 == code :
if count > = self . max_retrys :
log . warning ( u ' Trakt replied with Rate-Limiting, maximum retries exceeded. ' )
raise TraktServerError ( error_code = code )
r_headers = getattr ( e . response , ' headers ' , None )
if None is not r_headers :
wait_seconds = min ( try_int ( r_headers . get ( ' Retry-After ' , 60 ) , 60 ) , 150 )
else :
wait_seconds = 60
log . warning ( ' Trakt replied with Rate-Limiting, waiting %s seconds. ' % wait_seconds )
wait_seconds = ( wait_seconds , 60 ) [ 0 > wait_seconds ]
wait_seconds - = sleep_retry
if 0 < wait_seconds :
time . sleep ( wait_seconds )
return self . trakt_request ( path , data , headers , url , count = count , sleep_retry = sleep_retry ,
send_oauth = send_oauth , method = method )
else :
log . error ( u ' Could not connect to Trakt. Code error: {0} ' . format ( code ) )
raise TraktException ( ' Could not connect to Trakt. Code error: %s ' % code )