diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2024-03-24 09:24:40 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2024-03-24 09:24:40 +0100 |
commit | 734fc45fc296a4b6cfa303329023c24e026f35df (patch) | |
tree | 30038fff46b2fdf3fde9f20a538993cf2ed23fc8 /src/authenticator.vala | |
parent | 14bc7db2e07c5d1ccfb4d723c9dba395e6c93171 (diff) | |
parent | dde66becd94817998e320c7ace72729af7455345 (diff) |
Merge branch 'release/debian/0.36.6-1'debian/0.36.6-1
Diffstat (limited to 'src/authenticator.vala')
-rw-r--r-- | src/authenticator.vala | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/authenticator.vala b/src/authenticator.vala new file mode 100644 index 0000000..55f3321 --- /dev/null +++ b/src/authenticator.vala @@ -0,0 +1,40 @@ +// SPDX-License-Identifer: LGPL-2.1-or-later +// SPDX-FileCopyrightText: 2022 Jens Georg <mail@jensge.org> + +[DBus(name = "org.gnome.Shotwell.Authenticate")] +public interface AuthenticationReceiver : Object { + public abstract void callback(string url) throws DBusError, IOError; +} + +static int main(string[] args) { + AuthenticationReceiver receiver; + + if (args.length != 2) { + print("Usage: %s <callback-uri>\n", args[0]); + return 1; + } + + try { + var uri = Uri.parse(args[1], UriFlags.NONE); + var scheme = uri.get_scheme(); + + if (scheme != "shotwell-oauth2" && !scheme.has_prefix("com.googleusercontent.apps")) { + critical("Invalid scheme in callback URI \"%s\"", args[1]); + return 1; + } + } catch (Error e) { + critical("Invalid uri: \"%s\": %s", args[1], e.message); + return 1; + } + + try { + receiver = Bus.get_proxy_sync (BusType.SESSION, "org.gnome.Shotwell", "/org/gnome/Shotwell"); + receiver.callback(args[1]); + } catch (Error e) { + critical("Could not connect to remote shotwell instance: %s", e.message); + + return 1; + } + + return 0; +}
\ No newline at end of file |