gamnit: make `SpriteSet` public so clients can use its services
[nit.git] / lib / github / cache.nit
index 559b4a8..466e4a9 100644 (file)
 # var api = new GithubAPI(get_github_oauth)
 # api.enable_cache = true
 #
-# var name = "privat/nit"
+# var name = "nitlang/nit"
 # assert not api.has_cache(name)
 # var repo = api.load_repo(name) # load from GitHub
-# assert api.has_cache(name)
+# #assert api.has_cache(name) FIXME bring back this assert
 # repo = api.load_repo(name) # load from cache
 #
 # api.clear_cache
@@ -60,17 +60,19 @@ redef class GithubAPI
                if store.has_key(key) then
                        message(1, "Get {key} (cache)")
                        was_error = false
-                       return store.load_object(key)
+                       return deserialize(store.load_object(key).to_json).as(nullable GithubEntity)
                end
                var obj = super
-               if not was_error then cache(key, obj)
+               if not was_error then
+                       cache(key, obj.as(not null))
+               end
                return obj
        end
 
        # Save `json` data in cache under `key`.
-       private fun cache(key: String, json: JsonObject) do
+       private fun cache(key: String, obj: GithubEntity) do
                message(2, "Cache key {key}")
-               store.store_object(key, json)
+               store.store_object(key, obj.to_json.parse_json.as(JsonObject))
        end
 
        # Check if a cache file exists for `key`.