Split out Gnome Keyring keystore
[moonshot-ui.git] / src / moonshot-keyring-store-gnome.vala
similarity index 78%
rename from src/moonshot-keyring-store.vala
rename to src/moonshot-keyring-store-gnome.vala
index 7ae0d22..0e0ff5c 100644 (file)
@@ -1,5 +1,6 @@
 /*
- * Copyright (c) 2011-2016, JANET(UK)
+* Copyright (C) 2018   Sam Hartman
+* Copyright (c) 2011-2016, JANET(UK)
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
 */
-using Gee;
 
 #if GNOME_KEYRING
-public class KeyringStore : Object, IIdentityCardStore {
-    static MoonshotLogger logger = get_logger("KeyringStore");
 
-    private LinkedList<IdCard> id_card_list;
-    private const string keyring_store_attribute = "Moonshot";
-    private const string keyring_store_version = "1.0";
+using Gee;
+public class KeyringStore : KeyringStoreBase {
     private const GnomeKeyring.ItemType item_type = GnomeKeyring.ItemType.GENERIC_SECRET;
 
-    public void add_card(IdCard card) {
-        logger.trace("add_card: Adding card '%s' with services: '%s'"
-                     .printf(card.display_name, card.get_services_string("; ")));
-
-        id_card_list.add(card);
-        store_id_cards();
-    }
-
-    public IdCard? update_card(IdCard card) {
-        logger.trace("update_card");
-
-        id_card_list.remove(card);
-        id_card_list.add(card);
-
-        store_id_cards();
-        foreach (IdCard idcard in id_card_list) {
-            if (idcard.display_name == card.display_name) {
-                return idcard;
-            }
-        }
-
-        logger.error(@"update_card: card '$(card.display_name)' was not found after re-loading!");
-        return null;
-    }
-
-    public bool remove_card(IdCard card) {
-        bool retval = id_card_list.remove(card);
-        if (retval)
-            store_id_cards();
-        return retval;
-    }
-
-    public IIdentityCardStore.StoreType get_store_type() {
-        return IIdentityCardStore.StoreType.KEYRING;
-    }
-
-    public LinkedList<IdCard> get_card_list() {
-        return id_card_list;
-    }
-
     /* clear all keyring-stored ids (in preparation to store current list) */
-    private void clear_keyring() {
-        GnomeKeyring.AttributeList match = new GnomeKeyring.AttributeList();
-        match.append_string(keyring_store_attribute, keyring_store_version);
-        GLib.List<GnomeKeyring.Found> items;
-        GnomeKeyring.find_items_sync(item_type, match, out items);
-        foreach(unowned GnomeKeyring.Found entry in items) {
-            GnomeKeyring.Result result = GnomeKeyring.item_delete_sync(null, entry.item_id);
-            if (result != GnomeKeyring.Result.OK) {
-                stdout.printf("GnomeKeyring.item_delete_sync() failed. result: %d", result);
-            }
-        }
+    protected override void clear_keyring() {
+      GnomeKeyring.AttributeList match = new GnomeKeyring.AttributeList();
+      match.append_string(keyring_store_attribute, keyring_store_version);
+      GLib.List<GnomeKeyring.Found> items;
+      GnomeKeyring.find_items_sync(item_type, match, out items);
+      foreach(unowned GnomeKeyring.Found entry in items) {
+       GnomeKeyring.Result result = GnomeKeyring.item_delete_sync(null, entry.item_id);
+       if (result != GnomeKeyring.Result.OK) {
+         stdout.printf("GnomeKeyring.item_delete_sync() failed. result: %d", result);
+       }
+      }
     }
-     
-    private void load_id_cards() {
+
+    protected override void load_id_cards() {
         id_card_list.clear();
 
         GnomeKeyring.AttributeList match = new GnomeKeyring.AttributeList();
@@ -181,7 +138,7 @@ public class KeyringStore : Object, IIdentityCardStore {
         }
     }
 
-    internal void store_id_cards() {
+    internal override void store_id_cards() {
         logger.trace("store_id_cards");
         clear_keyring();
         foreach (IdCard id_card in this.id_card_list) {
@@ -224,10 +181,6 @@ public class KeyringStore : Object, IIdentityCardStore {
         load_id_cards();
     }
 
-    public KeyringStore() {
-        id_card_list = new LinkedList<IdCard>();
-        load_id_cards();
-    }
 }
 
 #endif