Settings.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import json
  2. import os
  3. class Settings:
  4. def __init__( self ):
  5. self.DeviceId = ""
  6. self.AccessToken = ""
  7. self.RefreshToken = ""
  8. self.UserId = ""
  9. self.UserKey = ""
  10. self.SettingsFilePath = Settings.__GetCacheFilePath()
  11. self.Load()
  12. def AreAuthenticationSettingsSet( self ) -> bool:
  13. return len( self.DeviceId ) > 0 and len( self.AccessToken ) > 0 and len( self.RefreshToken ) > 0
  14. def IsLoggedIn( self ) -> bool:
  15. return len( self.UserId ) > 0 and len( self.UserKey ) > 0
  16. def Load( self ) -> None:
  17. if not os.path.isfile( self.SettingsFilePath ):
  18. return
  19. with open( self.SettingsFilePath, "r" ) as f:
  20. jsonText = f.read()
  21. jsonObject = json.loads( jsonText )
  22. self.__LoadFromJson( jsonObject )
  23. def Save( self ) -> None:
  24. with open( self.SettingsFilePath, "w" ) as f:
  25. jsonObject = self.__SaveToJson()
  26. f.write( json.dumps( jsonObject, indent = 4 ) )
  27. def __SaveToJson( self ) -> dict:
  28. return {
  29. "AccessToken": self.AccessToken,
  30. "DeviceId": self.DeviceId,
  31. "RefreshToken": self.RefreshToken,
  32. "UserId": self.UserId,
  33. "UserKey": self.UserKey
  34. }
  35. def __LoadFromJson( self, jsonMap: dict ) -> None:
  36. self.AccessToken = jsonMap.get( "AccessToken", self.AccessToken )
  37. self.DeviceId = jsonMap.get( "DeviceId", self.DeviceId )
  38. self.RefreshToken = jsonMap.get( "RefreshToken", self.RefreshToken )
  39. self.UserId = jsonMap.get( "UserId", self.UserId )
  40. self.UserKey = jsonMap.get( "UserKey", self.UserKey )
  41. @staticmethod
  42. def __GetCacheFilePath() -> str:
  43. cacheHome = os.environ.get( "XDG_CONFIG_HOME." )
  44. if ( cacheHome is None ) or ( not os.path.isdir( cacheHome ) ):
  45. home = os.path.expanduser( "~" )
  46. cacheHome = os.path.join( home, ".config" )
  47. if not os.path.isdir( cacheHome ):
  48. cacheHome = home
  49. return os.path.join( cacheHome, "kobo-book-downloader.json" )