mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
62 lines
2.6 KiB
C#
62 lines
2.6 KiB
C#
/* We basically follow the Json-RPC 2.0 spec (http://www.jsonrpc.org/specification) to invoke methods between Flow Launcher and other plugins,
|
|
* like python or other self-execute program. But, we added addtional infos (proxy and so on) into rpc request. Also, we didn't use the
|
|
* "id" and "jsonrpc" in the request, since it's not so useful in our request model.
|
|
*
|
|
* When execute a query:
|
|
* Flow Launcher -------JsonRPCServerRequestModel--------> client
|
|
* Flow Launcher <------JsonRPCQueryResponseModel--------- client
|
|
*
|
|
* When execute a action (which mean user select an item in reulst item):
|
|
* Flow Launcher -------JsonRPCServerRequestModel--------> client
|
|
* Flow Launcher <------JsonRPCResponseModel-------------- client
|
|
*
|
|
*/
|
|
|
|
using System.Collections.Generic;
|
|
using System.Text.Json.Serialization;
|
|
using Flow.Launcher.Plugin;
|
|
using System.Text.Json;
|
|
|
|
namespace Flow.Launcher.Core.Plugin
|
|
{
|
|
public record JsonRPCBase(int Id, JsonRPCErrorModel Error = default);
|
|
public record JsonRPCErrorModel(int Code, string Message, string Data);
|
|
|
|
public record JsonRPCResponseModel(int Id, JsonRPCErrorModel Error = default) : JsonRPCBase(Id, Error);
|
|
public record JsonRPCQueryResponseModel(int Id,
|
|
[property: JsonPropertyName("result")] List<JsonRPCResult> Result,
|
|
IReadOnlyDictionary<string, object> SettingsChange = null,
|
|
string DebugMessage = "",
|
|
JsonRPCErrorModel Error = default) : JsonRPCResponseModel(Id, Error);
|
|
|
|
public record JsonRPCRequestModel(int Id,
|
|
string Method,
|
|
object[] Parameters,
|
|
IReadOnlyDictionary<string, object> Settings = default,
|
|
JsonRPCErrorModel Error = default) : JsonRPCBase(Id, Error);
|
|
|
|
|
|
/// <summary>
|
|
/// Json RPC Request(in query response) that client sent to Flow Launcher
|
|
/// </summary>
|
|
public record JsonRPCClientRequestModel(
|
|
int Id,
|
|
string Method,
|
|
object[] Parameters,
|
|
IReadOnlyDictionary<string, object> Settings,
|
|
bool DontHideAfterAction = false,
|
|
JsonRPCErrorModel Error = default) : JsonRPCRequestModel(Id, Method, Parameters, Settings, Error);
|
|
|
|
|
|
/// <summary>
|
|
/// Represent the json-rpc result item that client send to Flow Launcher
|
|
/// Typically, we will send back this request model to client after user select the result item
|
|
/// But if the request method starts with "Flow Launcher.", we will invoke the public APIs we expose.
|
|
/// </summary>
|
|
public class JsonRPCResult : Result
|
|
{
|
|
public JsonRPCClientRequestModel JsonRPCAction { get; set; }
|
|
|
|
public Dictionary<string, object> SettingsChange { get; set; }
|
|
}
|
|
}
|