Settings.py 1.9 KB

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