mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-11-24 04:12:32 +08:00
Added base64 decode function to the Value Generator (#27835)
This commit is contained in:
parent
a8b7d4d627
commit
d4ae13238e
@ -29,6 +29,7 @@ namespace Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests
|
|||||||
[DataRow("base64 abc", typeof(Base64.Base64Request))]
|
[DataRow("base64 abc", typeof(Base64.Base64Request))]
|
||||||
[DataRow("base99 abc", null)]
|
[DataRow("base99 abc", null)]
|
||||||
[DataRow("base64s abc", null)]
|
[DataRow("base64s abc", null)]
|
||||||
|
[DataRow("base64d abc=", typeof(Base64.Base64DecodeRequest))]
|
||||||
public void ParserTest(string input, Type? expectedRequestType)
|
public void ParserTest(string input, Type? expectedRequestType)
|
||||||
{
|
{
|
||||||
var parser = new InputParser();
|
var parser = new InputParser();
|
||||||
@ -77,7 +78,7 @@ namespace Community.PowerToys.Run.Plugin.ValueGenerator.UnitTests
|
|||||||
|
|
||||||
private static bool CommandIsKnown(string command)
|
private static bool CommandIsKnown(string command)
|
||||||
{
|
{
|
||||||
string[] hashes = new string[] { "md5", "sha1", "sha256", "sha384", "sha512", "base64" };
|
string[] hashes = new string[] { "md5", "sha1", "sha256", "sha384", "sha512", "base64", "base64d" };
|
||||||
|
|
||||||
if (hashes.Contains(command.ToLowerInvariant()))
|
if (hashes.Contains(command.ToLowerInvariant()))
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation
|
||||||
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
|
// See the LICENSE file in the project root for more information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text;
|
||||||
|
using Wox.Plugin.Logger;
|
||||||
|
|
||||||
|
namespace Community.PowerToys.Run.Plugin.ValueGenerator.Base64
|
||||||
|
{
|
||||||
|
public class Base64DecodeRequest : IComputeRequest
|
||||||
|
{
|
||||||
|
public byte[] Result { get; set; }
|
||||||
|
|
||||||
|
public string Description => "Base64 Decoding";
|
||||||
|
|
||||||
|
public bool IsSuccessful { get; set; }
|
||||||
|
|
||||||
|
public string ErrorMessage { get; set; }
|
||||||
|
|
||||||
|
private string DataToDecode { get; set; }
|
||||||
|
|
||||||
|
public Base64DecodeRequest(string dataToDecode)
|
||||||
|
{
|
||||||
|
DataToDecode = dataToDecode ?? throw new ArgumentNullException(nameof(dataToDecode));
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Compute()
|
||||||
|
{
|
||||||
|
IsSuccessful = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Result = System.Convert.FromBase64String(DataToDecode);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.Exception(e.Message, e, GetType());
|
||||||
|
ErrorMessage = e.Message;
|
||||||
|
IsSuccessful = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return IsSuccessful;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ResultToString()
|
||||||
|
{
|
||||||
|
if (Result != null)
|
||||||
|
{
|
||||||
|
return Encoding.UTF8.GetString(Result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -121,6 +121,12 @@ namespace Community.PowerToys.Run.Plugin.ValueGenerator
|
|||||||
string content = query.RawUserQuery.Substring(commandIndex + command.Length).Trim();
|
string content = query.RawUserQuery.Substring(commandIndex + command.Length).Trim();
|
||||||
request = new Base64Request(Encoding.UTF8.GetBytes(content));
|
request = new Base64Request(Encoding.UTF8.GetBytes(content));
|
||||||
}
|
}
|
||||||
|
else if (command.ToLower(null) == "base64d")
|
||||||
|
{
|
||||||
|
int commandIndex = query.RawUserQuery.IndexOf(command, StringComparison.InvariantCultureIgnoreCase);
|
||||||
|
string content = query.RawUserQuery.Substring(commandIndex + command.Length).Trim();
|
||||||
|
request = new Base64DecodeRequest(content);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new FormatException($"Invalid Query: {query.RawUserQuery}");
|
throw new FormatException($"Invalid Query: {query.RawUserQuery}");
|
||||||
|
Loading…
Reference in New Issue
Block a user