mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-11 11:26:27 +00:00
Workshop - Finished initial plugin implementation
This commit is contained in:
1 parent
f2c8de1746
commit
cf10193bd2
10 files changed
+70
-45
No files matched your search
+8
@@ -63,6 +63,14 @@ public class PluginEntryInstallationHandler : IEntryInstallationHandler
|
||||
using ZipArchive archive = new(stream);
|
||||
archive.ExtractToDirectory(releaseDirectory.FullName);
|
||||
|
||||
// If there is already a version of the plugin installed, disable it
|
||||
if (installedEntry.TryGetMetadata("PluginId", out Guid pluginId))
|
||||
{
|
||||
Plugin? currentVersion = _pluginManagementService.GetAllPlugins().FirstOrDefault(p => p.Guid == pluginId);
|
||||
if (currentVersion != null)
|
||||
_pluginManagementService.UnloadPlugin(currentVersion);
|
||||
}
|
||||
|
||||
// Load the plugin, next time during startup this will happen automatically
|
||||
try
|
||||
{
|
||||
|
||||
@@ -97,7 +97,7 @@ public class InstalledEntry
|
||||
/// <param name="value">The value to set.</param>
|
||||
public void SetMetadata(string key, object value)
|
||||
{
|
||||
_metadata.Add(key, value);
|
||||
_metadata[key] = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -118,7 +118,7 @@ public class InstalledEntry
|
||||
{
|
||||
return new DirectoryInfo(Path.Combine(Constants.WorkshopFolder, $"{EntryId}-{StringUtilities.UrlFriendly(Name)}"));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns the directory info of a release of this entry, where any files would be stored if applicable.
|
||||
/// </summary>
|
||||
|
||||
@@ -3,7 +3,7 @@ namespace Artemis.WebClient.Workshop.Models;
|
||||
public class PersonalAccessToken
|
||||
{
|
||||
public string Key { get; init; }
|
||||
public DateTimeOffset CreationTime { get; init; }
|
||||
public DateTimeOffset? Expiration { get; init; }
|
||||
public DateTime CreationTime { get; init; }
|
||||
public DateTime? Expiration { get; init; }
|
||||
public string? Description { get; init; }
|
||||
}
|
||||
@@ -10,7 +10,7 @@ public interface IUserManagementService : IProtectedArtemisService
|
||||
Task<ApiResult> ChangeEmailAddress(string emailAddress, CancellationToken cancellationToken);
|
||||
Task<ApiResult> ChangeAvatar(Stream avatar, CancellationToken cancellationToken);
|
||||
Task<ApiResult> RemoveAccount(CancellationToken cancellationToken);
|
||||
Task<string> CreatePersonAccessToken(string description, DateTimeOffset expirationDate, CancellationToken cancellationToken);
|
||||
Task<string> CreatePersonAccessToken(string description, DateTime expirationDate, CancellationToken cancellationToken);
|
||||
Task<ApiResult> DeletePersonAccessToken(PersonalAccessToken personalAccessToken, CancellationToken cancellationToken);
|
||||
Task<List<PersonalAccessToken>> GetPersonAccessTokens(CancellationToken cancellationToken);
|
||||
}
|
||||
@@ -66,7 +66,7 @@ internal class UserManagementService : IUserManagementService
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<string> CreatePersonAccessToken(string description, DateTimeOffset expirationDate, CancellationToken cancellationToken)
|
||||
public async Task<string> CreatePersonAccessToken(string description, DateTime expirationDate, CancellationToken cancellationToken)
|
||||
{
|
||||
HttpClient client = _httpClientFactory.CreateClient(WorkshopConstants.IDENTITY_CLIENT_NAME);
|
||||
HttpResponseMessage response = await client.PostAsync("user/access-token", JsonContent.Create(new {Description = description, ExpirationDate = expirationDate}), cancellationToken);
|
||||
|
||||
Reference in new issue
Block a user