mirror of
https://github.com/duplicati/duplicati.git
synced 2025-11-28 03:20:25 +08:00
1319 lines
62 KiB
C#
1319 lines
62 KiB
C#
// Autogenerated with command:
|
|
// dotnet dbus codegen --protocol-api --service org.freedesktop.secrets
|
|
|
|
namespace secrets.DBus
|
|
{
|
|
using System;
|
|
using Tmds.DBus.Protocol;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
|
|
partial class Daemon : secretsObject
|
|
{
|
|
private const string __Interface = "org.gnome.keyring.Daemon";
|
|
public Daemon(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task<Dictionary<string, string>> GetEnvironmentAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_aess(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "GetEnvironment");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<string> GetControlDirectoryAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_s(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "GetControlDirectory");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
}
|
|
record SecretProperties
|
|
{
|
|
public uint Version { get; set; } = default!;
|
|
}
|
|
partial class Secret : secretsObject
|
|
{
|
|
private const string __Interface = "org.freedesktop.impl.portal.Secret";
|
|
public Secret(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task<(uint Response, Dictionary<string, VariantValue> Results)> RetrieveSecretAsync(ObjectPath handle, string appId, System.Runtime.InteropServices.SafeHandle fd, Dictionary<string, VariantValue> options)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_uaesv(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "osha{sv}",
|
|
member: "RetrieveSecret");
|
|
writer.WriteObjectPath(handle);
|
|
writer.WriteString(appId);
|
|
writer.WriteHandle(fd);
|
|
writer.WriteDictionary(options);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetVersionAsync(uint value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("version");
|
|
writer.WriteSignature("u");
|
|
writer.WriteUInt32(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<uint> GetVersionAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "version"), (Message m, object? s) => ReadMessage_v_u(m, (secretsObject)s!), this);
|
|
public Task<SecretProperties> GetPropertiesAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateGetAllPropertiesMessage(__Interface), (Message m, object? s) => ReadMessage(m, (secretsObject)s!), this);
|
|
static SecretProperties ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadProperties(ref reader);
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchPropertiesChangedAsync(Action<Exception?, PropertyChanges<SecretProperties>> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
{
|
|
return base.WatchPropertiesChangedAsync(__Interface, (Message m, object? s) => ReadMessage(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
static PropertyChanges<SecretProperties> ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadString(); // interface
|
|
List<string> changed = new(), invalidated = new();
|
|
return new PropertyChanges<SecretProperties>(ReadProperties(ref reader, changed), changed.ToArray(), ReadInvalidated(ref reader));
|
|
}
|
|
static string[] ReadInvalidated(ref Reader reader)
|
|
{
|
|
List<string>? invalidated = null;
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.String);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
invalidated ??= new();
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "version": invalidated.Add("Version"); break;
|
|
}
|
|
}
|
|
return invalidated?.ToArray() ?? Array.Empty<string>();
|
|
}
|
|
}
|
|
private static SecretProperties ReadProperties(ref Reader reader, List<string>? changedList = null)
|
|
{
|
|
var props = new SecretProperties();
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.Struct);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "version":
|
|
reader.ReadSignature("u");
|
|
props.Version = reader.ReadUInt32();
|
|
changedList?.Add("Version");
|
|
break;
|
|
default:
|
|
reader.ReadVariantValue();
|
|
break;
|
|
}
|
|
}
|
|
return props;
|
|
}
|
|
}
|
|
partial class InternalUnsupportedGuiltRiddenInterface : secretsObject
|
|
{
|
|
private const string __Interface = "org.gnome.keyring.InternalUnsupportedGuiltRiddenInterface";
|
|
public InternalUnsupportedGuiltRiddenInterface(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task ChangeWithMasterPasswordAsync(ObjectPath collection, (ObjectPath, byte[], byte[], string) original, (ObjectPath, byte[], byte[], string) master)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "o(oayays)(oayays)",
|
|
member: "ChangeWithMasterPassword");
|
|
writer.WriteObjectPath(collection);
|
|
WriteType_roayaysz(ref writer, original);
|
|
WriteType_roayaysz(ref writer, master);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath> ChangeWithPromptAsync(ObjectPath collection)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "o",
|
|
member: "ChangeWithPrompt");
|
|
writer.WriteObjectPath(collection);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath> CreateWithMasterPasswordAsync(Dictionary<string, VariantValue> attributes, (ObjectPath, byte[], byte[], string) master)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "a{sv}(oayays)",
|
|
member: "CreateWithMasterPassword");
|
|
writer.WriteDictionary(attributes);
|
|
WriteType_roayaysz(ref writer, master);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task UnlockWithMasterPasswordAsync(ObjectPath collection, (ObjectPath, byte[], byte[], string) master)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "o(oayays)",
|
|
member: "UnlockWithMasterPassword");
|
|
writer.WriteObjectPath(collection);
|
|
WriteType_roayaysz(ref writer, master);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
}
|
|
record ServiceProperties
|
|
{
|
|
public ObjectPath[] Collections { get; set; } = default!;
|
|
}
|
|
partial class Service : secretsObject
|
|
{
|
|
private const string __Interface = "org.freedesktop.Secret.Service";
|
|
public Service(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task<(VariantValue Output, ObjectPath Result)> OpenSessionAsync(string algorithm, VariantValue input)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_vo(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "sv",
|
|
member: "OpenSession");
|
|
writer.WriteString(algorithm);
|
|
writer.WriteVariant(input);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<(ObjectPath Collection, ObjectPath Prompt)> CreateCollectionAsync(Dictionary<string, VariantValue> properties, string @alias)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_oo(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "a{sv}s",
|
|
member: "CreateCollection");
|
|
writer.WriteDictionary(properties);
|
|
writer.WriteString(@alias);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<(ObjectPath[] Unlocked, ObjectPath[] Locked)> SearchItemsAsync(Dictionary<string, string> attributes)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_aoao(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "a{ss}",
|
|
member: "SearchItems");
|
|
WriteType_aess(ref writer, attributes);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<(ObjectPath[] Unlocked, ObjectPath Prompt)> UnlockAsync(ObjectPath[] objects)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_aoo(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "ao",
|
|
member: "Unlock");
|
|
writer.WriteArray(objects);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<(ObjectPath[] Locked, ObjectPath Prompt)> LockAsync(ObjectPath[] objects)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_aoo(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "ao",
|
|
member: "Lock");
|
|
writer.WriteArray(objects);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task LockServiceAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "LockService");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath> ChangeLockAsync(ObjectPath collection)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "o",
|
|
member: "ChangeLock");
|
|
writer.WriteObjectPath(collection);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<Dictionary<ObjectPath, (ObjectPath, byte[], byte[], string)>> GetSecretsAsync(ObjectPath[] items, ObjectPath session)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_aeoroayaysz(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "aoo",
|
|
member: "GetSecrets");
|
|
writer.WriteArray(items);
|
|
writer.WriteObjectPath(session);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath> ReadAliasAsync(string name)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "s",
|
|
member: "ReadAlias");
|
|
writer.WriteString(name);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetAliasAsync(string name, ObjectPath collection)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "so",
|
|
member: "SetAlias");
|
|
writer.WriteString(name);
|
|
writer.WriteObjectPath(collection);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchCollectionCreatedAsync(Action<Exception?, ObjectPath> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "CollectionCreated", (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
public ValueTask<IDisposable> WatchCollectionDeletedAsync(Action<Exception?, ObjectPath> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "CollectionDeleted", (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
public ValueTask<IDisposable> WatchCollectionChangedAsync(Action<Exception?, ObjectPath> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "CollectionChanged", (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
public Task SetCollectionsAsync(ObjectPath[] value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Collections");
|
|
writer.WriteSignature("ao");
|
|
writer.WriteArray(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath[]> GetCollectionsAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Collections"), (Message m, object? s) => ReadMessage_v_ao(m, (secretsObject)s!), this);
|
|
public Task<ServiceProperties> GetPropertiesAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateGetAllPropertiesMessage(__Interface), (Message m, object? s) => ReadMessage(m, (secretsObject)s!), this);
|
|
static ServiceProperties ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadProperties(ref reader);
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchPropertiesChangedAsync(Action<Exception?, PropertyChanges<ServiceProperties>> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
{
|
|
return base.WatchPropertiesChangedAsync(__Interface, (Message m, object? s) => ReadMessage(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
static PropertyChanges<ServiceProperties> ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadString(); // interface
|
|
List<string> changed = new(), invalidated = new();
|
|
return new PropertyChanges<ServiceProperties>(ReadProperties(ref reader, changed), changed.ToArray(), ReadInvalidated(ref reader));
|
|
}
|
|
static string[] ReadInvalidated(ref Reader reader)
|
|
{
|
|
List<string>? invalidated = null;
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.String);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
invalidated ??= new();
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "Collections": invalidated.Add("Collections"); break;
|
|
}
|
|
}
|
|
return invalidated?.ToArray() ?? Array.Empty<string>();
|
|
}
|
|
}
|
|
private static ServiceProperties ReadProperties(ref Reader reader, List<string>? changedList = null)
|
|
{
|
|
var props = new ServiceProperties();
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.Struct);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "Collections":
|
|
reader.ReadSignature("ao");
|
|
props.Collections = reader.ReadArrayOfObjectPath();
|
|
changedList?.Add("Collections");
|
|
break;
|
|
default:
|
|
reader.ReadVariantValue();
|
|
break;
|
|
}
|
|
}
|
|
return props;
|
|
}
|
|
}
|
|
partial class Prompt : secretsObject
|
|
{
|
|
private const string __Interface = "org.freedesktop.Secret.Prompt";
|
|
public Prompt(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task PromptAsync(string windowId)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "s",
|
|
member: "Prompt");
|
|
writer.WriteString(windowId);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task DismissAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "Dismiss");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchCompletedAsync(Action<Exception?, (bool Dismissed, VariantValue Result)> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "Completed", (Message m, object? s) => ReadMessage_bv(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
}
|
|
record CollectionProperties
|
|
{
|
|
public ObjectPath[] Items { get; set; } = default!;
|
|
public string Label { get; set; } = default!;
|
|
public bool Locked { get; set; } = default!;
|
|
public ulong Created { get; set; } = default!;
|
|
public ulong Modified { get; set; } = default!;
|
|
}
|
|
partial class Collection : secretsObject
|
|
{
|
|
private const string __Interface = "org.freedesktop.Secret.Collection";
|
|
public Collection(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task<ObjectPath> DeleteAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "Delete");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath[]> SearchItemsAsync(Dictionary<string, string> attributes)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_ao(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "a{ss}",
|
|
member: "SearchItems");
|
|
WriteType_aess(ref writer, attributes);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<(ObjectPath Item, ObjectPath Prompt)> CreateItemAsync(Dictionary<string, VariantValue> properties, (ObjectPath, byte[], byte[], string) secret, bool replace)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_oo(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "a{sv}(oayays)b",
|
|
member: "CreateItem");
|
|
writer.WriteDictionary(properties);
|
|
WriteType_roayaysz(ref writer, secret);
|
|
writer.WriteBool(replace);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchItemCreatedAsync(Action<Exception?, ObjectPath> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "ItemCreated", (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
public ValueTask<IDisposable> WatchItemDeletedAsync(Action<Exception?, ObjectPath> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "ItemDeleted", (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
public ValueTask<IDisposable> WatchItemChangedAsync(Action<Exception?, ObjectPath> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
=> base.WatchSignalAsync(Service.Destination, __Interface, Path, "ItemChanged", (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
public Task SetItemsAsync(ObjectPath[] value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Items");
|
|
writer.WriteSignature("ao");
|
|
writer.WriteArray(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetLabelAsync(string value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Label");
|
|
writer.WriteSignature("s");
|
|
writer.WriteString(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetLockedAsync(bool value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Locked");
|
|
writer.WriteSignature("b");
|
|
writer.WriteBool(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetCreatedAsync(ulong value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Created");
|
|
writer.WriteSignature("t");
|
|
writer.WriteUInt64(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetModifiedAsync(ulong value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Modified");
|
|
writer.WriteSignature("t");
|
|
writer.WriteUInt64(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<ObjectPath[]> GetItemsAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Items"), (Message m, object? s) => ReadMessage_v_ao(m, (secretsObject)s!), this);
|
|
public Task<string> GetLabelAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Label"), (Message m, object? s) => ReadMessage_v_s(m, (secretsObject)s!), this);
|
|
public Task<bool> GetLockedAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Locked"), (Message m, object? s) => ReadMessage_v_b(m, (secretsObject)s!), this);
|
|
public Task<ulong> GetCreatedAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Created"), (Message m, object? s) => ReadMessage_v_t(m, (secretsObject)s!), this);
|
|
public Task<ulong> GetModifiedAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Modified"), (Message m, object? s) => ReadMessage_v_t(m, (secretsObject)s!), this);
|
|
public Task<CollectionProperties> GetPropertiesAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateGetAllPropertiesMessage(__Interface), (Message m, object? s) => ReadMessage(m, (secretsObject)s!), this);
|
|
static CollectionProperties ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadProperties(ref reader);
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchPropertiesChangedAsync(Action<Exception?, PropertyChanges<CollectionProperties>> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
{
|
|
return base.WatchPropertiesChangedAsync(__Interface, (Message m, object? s) => ReadMessage(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
static PropertyChanges<CollectionProperties> ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadString(); // interface
|
|
List<string> changed = new(), invalidated = new();
|
|
return new PropertyChanges<CollectionProperties>(ReadProperties(ref reader, changed), changed.ToArray(), ReadInvalidated(ref reader));
|
|
}
|
|
static string[] ReadInvalidated(ref Reader reader)
|
|
{
|
|
List<string>? invalidated = null;
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.String);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
invalidated ??= new();
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "Items": invalidated.Add("Items"); break;
|
|
case "Label": invalidated.Add("Label"); break;
|
|
case "Locked": invalidated.Add("Locked"); break;
|
|
case "Created": invalidated.Add("Created"); break;
|
|
case "Modified": invalidated.Add("Modified"); break;
|
|
}
|
|
}
|
|
return invalidated?.ToArray() ?? Array.Empty<string>();
|
|
}
|
|
}
|
|
private static CollectionProperties ReadProperties(ref Reader reader, List<string>? changedList = null)
|
|
{
|
|
var props = new CollectionProperties();
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.Struct);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "Items":
|
|
reader.ReadSignature("ao");
|
|
props.Items = reader.ReadArrayOfObjectPath();
|
|
changedList?.Add("Items");
|
|
break;
|
|
case "Label":
|
|
reader.ReadSignature("s");
|
|
props.Label = reader.ReadString();
|
|
changedList?.Add("Label");
|
|
break;
|
|
case "Locked":
|
|
reader.ReadSignature("b");
|
|
props.Locked = reader.ReadBool();
|
|
changedList?.Add("Locked");
|
|
break;
|
|
case "Created":
|
|
reader.ReadSignature("t");
|
|
props.Created = reader.ReadUInt64();
|
|
changedList?.Add("Created");
|
|
break;
|
|
case "Modified":
|
|
reader.ReadSignature("t");
|
|
props.Modified = reader.ReadUInt64();
|
|
changedList?.Add("Modified");
|
|
break;
|
|
default:
|
|
reader.ReadVariantValue();
|
|
break;
|
|
}
|
|
}
|
|
return props;
|
|
}
|
|
}
|
|
record ItemProperties
|
|
{
|
|
public bool Locked { get; set; } = default!;
|
|
public Dictionary<string, string> Attributes { get; set; } = default!;
|
|
public string Label { get; set; } = default!;
|
|
public string Type { get; set; } = default!;
|
|
public ulong Created { get; set; } = default!;
|
|
public ulong Modified { get; set; } = default!;
|
|
}
|
|
partial class Item : secretsObject
|
|
{
|
|
private const string __Interface = "org.freedesktop.Secret.Item";
|
|
public Item(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task<ObjectPath> DeleteAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "Delete");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<(ObjectPath, byte[], byte[], string)> GetSecretAsync(ObjectPath session)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_roayaysz(m, (secretsObject)s!), this);
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "o",
|
|
member: "GetSecret");
|
|
writer.WriteObjectPath(session);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetSecretAsync((ObjectPath, byte[], byte[], string) secret)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
signature: "(oayays)",
|
|
member: "SetSecret");
|
|
WriteType_roayaysz(ref writer, secret);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetLockedAsync(bool value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Locked");
|
|
writer.WriteSignature("b");
|
|
writer.WriteBool(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetAttributesAsync(Dictionary<string, string> value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Attributes");
|
|
writer.WriteSignature("a{ss}");
|
|
WriteType_aess(ref writer, value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetLabelAsync(string value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Label");
|
|
writer.WriteSignature("s");
|
|
writer.WriteString(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetTypeAsync(string value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Type");
|
|
writer.WriteSignature("s");
|
|
writer.WriteString(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetCreatedAsync(ulong value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Created");
|
|
writer.WriteSignature("t");
|
|
writer.WriteUInt64(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task SetModifiedAsync(ulong value)
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ssv",
|
|
member: "Set");
|
|
writer.WriteString(__Interface);
|
|
writer.WriteString("Modified");
|
|
writer.WriteSignature("t");
|
|
writer.WriteUInt64(value);
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
public Task<bool> GetLockedAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Locked"), (Message m, object? s) => ReadMessage_v_b(m, (secretsObject)s!), this);
|
|
public Task<Dictionary<string, string>> GetAttributesAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Attributes"), (Message m, object? s) => ReadMessage_v_aess(m, (secretsObject)s!), this);
|
|
public Task<string> GetLabelAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Label"), (Message m, object? s) => ReadMessage_v_s(m, (secretsObject)s!), this);
|
|
public Task<string> GetTypeAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Type"), (Message m, object? s) => ReadMessage_v_s(m, (secretsObject)s!), this);
|
|
public Task<ulong> GetCreatedAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Created"), (Message m, object? s) => ReadMessage_v_t(m, (secretsObject)s!), this);
|
|
public Task<ulong> GetModifiedAsync()
|
|
=> this.Connection.CallMethodAsync(CreateGetPropertyMessage(__Interface, "Modified"), (Message m, object? s) => ReadMessage_v_t(m, (secretsObject)s!), this);
|
|
public Task<ItemProperties> GetPropertiesAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateGetAllPropertiesMessage(__Interface), (Message m, object? s) => ReadMessage(m, (secretsObject)s!), this);
|
|
static ItemProperties ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadProperties(ref reader);
|
|
}
|
|
}
|
|
public ValueTask<IDisposable> WatchPropertiesChangedAsync(Action<Exception?, PropertyChanges<ItemProperties>> handler, bool emitOnCapturedContext = true, ObserverFlags flags = ObserverFlags.None)
|
|
{
|
|
return base.WatchPropertiesChangedAsync(__Interface, (Message m, object? s) => ReadMessage(m, (secretsObject)s!), handler, emitOnCapturedContext, flags);
|
|
static PropertyChanges<ItemProperties> ReadMessage(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadString(); // interface
|
|
List<string> changed = new(), invalidated = new();
|
|
return new PropertyChanges<ItemProperties>(ReadProperties(ref reader, changed), changed.ToArray(), ReadInvalidated(ref reader));
|
|
}
|
|
static string[] ReadInvalidated(ref Reader reader)
|
|
{
|
|
List<string>? invalidated = null;
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.String);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
invalidated ??= new();
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "Locked": invalidated.Add("Locked"); break;
|
|
case "Attributes": invalidated.Add("Attributes"); break;
|
|
case "Label": invalidated.Add("Label"); break;
|
|
case "Type": invalidated.Add("Type"); break;
|
|
case "Created": invalidated.Add("Created"); break;
|
|
case "Modified": invalidated.Add("Modified"); break;
|
|
}
|
|
}
|
|
return invalidated?.ToArray() ?? Array.Empty<string>();
|
|
}
|
|
}
|
|
private static ItemProperties ReadProperties(ref Reader reader, List<string>? changedList = null)
|
|
{
|
|
var props = new ItemProperties();
|
|
ArrayEnd arrayEnd = reader.ReadArrayStart(DBusType.Struct);
|
|
while (reader.HasNext(arrayEnd))
|
|
{
|
|
var property = reader.ReadString();
|
|
switch (property)
|
|
{
|
|
case "Locked":
|
|
reader.ReadSignature("b");
|
|
props.Locked = reader.ReadBool();
|
|
changedList?.Add("Locked");
|
|
break;
|
|
case "Attributes":
|
|
reader.ReadSignature("a{ss}");
|
|
props.Attributes = ReadType_aess(ref reader);
|
|
changedList?.Add("Attributes");
|
|
break;
|
|
case "Label":
|
|
reader.ReadSignature("s");
|
|
props.Label = reader.ReadString();
|
|
changedList?.Add("Label");
|
|
break;
|
|
case "Type":
|
|
reader.ReadSignature("s");
|
|
props.Type = reader.ReadString();
|
|
changedList?.Add("Type");
|
|
break;
|
|
case "Created":
|
|
reader.ReadSignature("t");
|
|
props.Created = reader.ReadUInt64();
|
|
changedList?.Add("Created");
|
|
break;
|
|
case "Modified":
|
|
reader.ReadSignature("t");
|
|
props.Modified = reader.ReadUInt64();
|
|
changedList?.Add("Modified");
|
|
break;
|
|
default:
|
|
reader.ReadVariantValue();
|
|
break;
|
|
}
|
|
}
|
|
return props;
|
|
}
|
|
}
|
|
partial class Session : secretsObject
|
|
{
|
|
private const string __Interface = "org.freedesktop.Secret.Session";
|
|
public Session(secretsService service, ObjectPath path) : base(service, path)
|
|
{ }
|
|
public Task CloseAsync()
|
|
{
|
|
return this.Connection.CallMethodAsync(CreateMessage());
|
|
MessageBuffer CreateMessage()
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: __Interface,
|
|
member: "Close");
|
|
return writer.CreateMessage();
|
|
}
|
|
}
|
|
}
|
|
partial class secretsService
|
|
{
|
|
public Tmds.DBus.Protocol.Connection Connection { get; }
|
|
public string Destination { get; }
|
|
public secretsService(Tmds.DBus.Protocol.Connection connection, string destination)
|
|
=> (Connection, Destination) = (connection, destination);
|
|
public Daemon CreateDaemon(string path) => new Daemon(this, path);
|
|
public Secret CreateSecret(string path) => new Secret(this, path);
|
|
public InternalUnsupportedGuiltRiddenInterface CreateInternalUnsupportedGuiltRiddenInterface(string path) => new InternalUnsupportedGuiltRiddenInterface(this, path);
|
|
public Service CreateService(string path) => new Service(this, path);
|
|
public Prompt CreatePrompt(string path) => new Prompt(this, path);
|
|
public Collection CreateCollection(string path) => new Collection(this, path);
|
|
public Item CreateItem(string path) => new Item(this, path);
|
|
public Session CreateSession(string path) => new Session(this, path);
|
|
}
|
|
class secretsObject
|
|
{
|
|
public secretsService Service { get; }
|
|
public ObjectPath Path { get; }
|
|
protected Tmds.DBus.Protocol.Connection Connection => Service.Connection;
|
|
protected secretsObject(secretsService service, ObjectPath path)
|
|
=> (Service, Path) = (service, path);
|
|
protected MessageBuffer CreateGetPropertyMessage(string @interface, string property)
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "ss",
|
|
member: "Get");
|
|
writer.WriteString(@interface);
|
|
writer.WriteString(property);
|
|
return writer.CreateMessage();
|
|
}
|
|
protected MessageBuffer CreateGetAllPropertiesMessage(string @interface)
|
|
{
|
|
var writer = this.Connection.GetMessageWriter();
|
|
writer.WriteMethodCallHeader(
|
|
destination: Service.Destination,
|
|
path: Path,
|
|
@interface: "org.freedesktop.DBus.Properties",
|
|
signature: "s",
|
|
member: "GetAll");
|
|
writer.WriteString(@interface);
|
|
return writer.CreateMessage();
|
|
}
|
|
protected ValueTask<IDisposable> WatchPropertiesChangedAsync<TProperties>(string @interface, MessageValueReader<PropertyChanges<TProperties>> reader, Action<Exception?, PropertyChanges<TProperties>> handler, bool emitOnCapturedContext, ObserverFlags flags)
|
|
{
|
|
var rule = new MatchRule
|
|
{
|
|
Type = MessageType.Signal,
|
|
Sender = Service.Destination,
|
|
Path = Path,
|
|
Interface = "org.freedesktop.DBus.Properties",
|
|
Member = "PropertiesChanged",
|
|
Arg0 = @interface
|
|
};
|
|
return this.Connection.AddMatchAsync(rule, reader,
|
|
(Exception? ex, PropertyChanges<TProperties> changes, object? rs, object? hs) => ((Action<Exception?, PropertyChanges<TProperties>>)hs!).Invoke(ex, changes),
|
|
this, handler, emitOnCapturedContext, flags);
|
|
}
|
|
public ValueTask<IDisposable> WatchSignalAsync<TArg>(string sender, string @interface, ObjectPath path, string signal, MessageValueReader<TArg> reader, Action<Exception?, TArg> handler, bool emitOnCapturedContext, ObserverFlags flags)
|
|
{
|
|
var rule = new MatchRule
|
|
{
|
|
Type = MessageType.Signal,
|
|
Sender = sender,
|
|
Path = path,
|
|
Member = signal,
|
|
Interface = @interface
|
|
};
|
|
return this.Connection.AddMatchAsync(rule, reader,
|
|
(Exception? ex, TArg arg, object? rs, object? hs) => ((Action<Exception?, TArg>)hs!).Invoke(ex, arg),
|
|
this, handler, emitOnCapturedContext, flags);
|
|
}
|
|
public ValueTask<IDisposable> WatchSignalAsync(string sender, string @interface, ObjectPath path, string signal, Action<Exception?> handler, bool emitOnCapturedContext, ObserverFlags flags)
|
|
{
|
|
var rule = new MatchRule
|
|
{
|
|
Type = MessageType.Signal,
|
|
Sender = sender,
|
|
Path = path,
|
|
Member = signal,
|
|
Interface = @interface
|
|
};
|
|
return this.Connection.AddMatchAsync<object>(rule, (Message message, object? state) => null!,
|
|
(Exception? ex, object v, object? rs, object? hs) => ((Action<Exception?>)hs!).Invoke(ex), this, handler, emitOnCapturedContext, flags);
|
|
}
|
|
protected static Dictionary<string, string> ReadMessage_aess(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadType_aess(ref reader);
|
|
}
|
|
protected static string ReadMessage_s(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return reader.ReadString();
|
|
}
|
|
protected static (uint, Dictionary<string, VariantValue>) ReadMessage_uaesv(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
var arg0 = reader.ReadUInt32();
|
|
var arg1 = reader.ReadDictionaryOfStringToVariantValue();
|
|
return (arg0, arg1);
|
|
}
|
|
protected static uint ReadMessage_v_u(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadSignature("u");
|
|
return reader.ReadUInt32();
|
|
}
|
|
protected static ObjectPath ReadMessage_o(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return reader.ReadObjectPath();
|
|
}
|
|
protected static (VariantValue, ObjectPath) ReadMessage_vo(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
var arg0 = reader.ReadVariantValue();
|
|
var arg1 = reader.ReadObjectPath();
|
|
return (arg0, arg1);
|
|
}
|
|
protected static (ObjectPath, ObjectPath) ReadMessage_oo(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
var arg0 = reader.ReadObjectPath();
|
|
var arg1 = reader.ReadObjectPath();
|
|
return (arg0, arg1);
|
|
}
|
|
protected static (ObjectPath[], ObjectPath[]) ReadMessage_aoao(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
var arg0 = reader.ReadArrayOfObjectPath();
|
|
var arg1 = reader.ReadArrayOfObjectPath();
|
|
return (arg0, arg1);
|
|
}
|
|
protected static (ObjectPath[], ObjectPath) ReadMessage_aoo(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
var arg0 = reader.ReadArrayOfObjectPath();
|
|
var arg1 = reader.ReadObjectPath();
|
|
return (arg0, arg1);
|
|
}
|
|
protected static Dictionary<ObjectPath, (ObjectPath, byte[], byte[], string)> ReadMessage_aeoroayaysz(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadType_aeoroayaysz(ref reader);
|
|
}
|
|
protected static ObjectPath[] ReadMessage_v_ao(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadSignature("ao");
|
|
return reader.ReadArrayOfObjectPath();
|
|
}
|
|
protected static (bool, VariantValue) ReadMessage_bv(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
var arg0 = reader.ReadBool();
|
|
var arg1 = reader.ReadVariantValue();
|
|
return (arg0, arg1);
|
|
}
|
|
protected static ObjectPath[] ReadMessage_ao(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return reader.ReadArrayOfObjectPath();
|
|
}
|
|
protected static string ReadMessage_v_s(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadSignature("s");
|
|
return reader.ReadString();
|
|
}
|
|
protected static bool ReadMessage_v_b(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadSignature("b");
|
|
return reader.ReadBool();
|
|
}
|
|
protected static ulong ReadMessage_v_t(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadSignature("t");
|
|
return reader.ReadUInt64();
|
|
}
|
|
protected static (ObjectPath, byte[], byte[], string) ReadMessage_roayaysz(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
return ReadType_roayaysz(ref reader);
|
|
}
|
|
protected static Dictionary<string, string> ReadMessage_v_aess(Message message, secretsObject _)
|
|
{
|
|
var reader = message.GetBodyReader();
|
|
reader.ReadSignature("a{ss}");
|
|
return ReadType_aess(ref reader);
|
|
}
|
|
protected static Dictionary<string, string> ReadType_aess(ref Reader reader)
|
|
{
|
|
Dictionary<string, string> dictionary = new();
|
|
ArrayEnd dictEnd = reader.ReadDictionaryStart();
|
|
while (reader.HasNext(dictEnd))
|
|
{
|
|
var key = reader.ReadString();
|
|
var value = reader.ReadString();
|
|
dictionary[key] = value;
|
|
}
|
|
return dictionary;
|
|
}
|
|
protected static Dictionary<ObjectPath, (ObjectPath, byte[], byte[], string)> ReadType_aeoroayaysz(ref Reader reader)
|
|
{
|
|
Dictionary<ObjectPath, (ObjectPath, byte[], byte[], string)> dictionary = new();
|
|
ArrayEnd dictEnd = reader.ReadDictionaryStart();
|
|
while (reader.HasNext(dictEnd))
|
|
{
|
|
var key = reader.ReadObjectPath();
|
|
var value = ReadType_roayaysz(ref reader);
|
|
dictionary[key] = value;
|
|
}
|
|
return dictionary;
|
|
}
|
|
protected static (ObjectPath, byte[], byte[], string) ReadType_roayaysz(ref Reader reader)
|
|
{
|
|
return (reader.ReadObjectPath(), reader.ReadArrayOfByte(), reader.ReadArrayOfByte(), reader.ReadString());
|
|
}
|
|
protected static void WriteType_roayaysz(ref MessageWriter writer, (ObjectPath, byte[], byte[], string) value)
|
|
{
|
|
writer.WriteStructureStart();
|
|
writer.WriteObjectPath(value.Item1);
|
|
writer.WriteArray(value.Item2);
|
|
writer.WriteArray(value.Item3);
|
|
writer.WriteString(value.Item4);
|
|
}
|
|
protected static void WriteType_aess(ref MessageWriter writer, Dictionary<string, string> value)
|
|
{
|
|
ArrayStart arrayStart = writer.WriteDictionaryStart();
|
|
foreach (var item in value)
|
|
{
|
|
writer.WriteDictionaryEntryStart();
|
|
writer.WriteString(item.Key);
|
|
writer.WriteString(item.Value);
|
|
}
|
|
writer.WriteDictionaryEnd(arrayStart);
|
|
}
|
|
}
|
|
class PropertyChanges<TProperties>
|
|
{
|
|
public PropertyChanges(TProperties properties, string[] invalidated, string[] changed)
|
|
=> (Properties, Invalidated, Changed) = (properties, invalidated, changed);
|
|
public TProperties Properties { get; }
|
|
public string[] Invalidated { get; }
|
|
public string[] Changed { get; }
|
|
public bool HasChanged(string property) => Array.IndexOf(Changed, property) != -1;
|
|
public bool IsInvalidated(string property) => Array.IndexOf(Invalidated, property) != -1;
|
|
}
|
|
}
|