From 17a6fc878de95a5a2a46942e3a2fcf95323e6629 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 10 Jul 2022 09:02:44 +0300 Subject: [PATCH] Added input parameter support to custom uploader xml function --- .../Functions/CustomUploaderFunctionJson.cs | 2 +- .../Functions/CustomUploaderFunctionRegex.cs | 4 ++-- .../Functions/CustomUploaderFunctionXml.cs | 20 ++++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionJson.cs b/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionJson.cs index 209dd5a94..d27bb2208 100644 --- a/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionJson.cs +++ b/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionJson.cs @@ -40,9 +40,9 @@ public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] pa // https://goessner.net/articles/JsonPath/ string input, jsonPath; - // {json:input|jsonPath} if (parameters.Length > 1) { + // {json:input|jsonPath} input = parameters[0]; jsonPath = parameters[1]; } diff --git a/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionRegex.cs b/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionRegex.cs index 3377143a1..0bd691973 100644 --- a/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionRegex.cs +++ b/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionRegex.cs @@ -41,9 +41,9 @@ public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] pa { string input, pattern, group = ""; - // {regex:input|pattern|group} if (parameters.Length > 2) { + // {regex:input|pattern|group} input = parameters[0]; pattern = parameters[1]; group = parameters[2]; @@ -54,9 +54,9 @@ public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] pa input = parser.ResponseInfo.ResponseText; pattern = parameters[0]; - // {regex:pattern|group} if (parameters.Length > 1) { + // {regex:pattern|group} group = parameters[1]; } } diff --git a/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionXml.cs b/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionXml.cs index f29a7e29f..366f74c19 100644 --- a/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionXml.cs +++ b/ShareX.UploadersLib/CustomUploader/Functions/CustomUploaderFunctionXml.cs @@ -29,6 +29,7 @@ namespace ShareX.UploadersLib { // Example: {xml:/files/file[1]/url} + // Example: {xml:{response}|/files/file[1]/url} internal class CustomUploaderFunctionXml : CustomUploaderFunction { public override string Name { get; } = "xml"; @@ -38,11 +39,24 @@ internal class CustomUploaderFunctionXml : CustomUploaderFunction public override string Call(ShareXCustomUploaderSyntaxParser parser, string[] parameters) { // https://www.w3schools.com/xml/xpath_syntax.asp - string xpath = parameters[0]; + string input, xpath; - if (!string.IsNullOrEmpty(xpath)) + if (parameters.Length > 1) { - using (StringReader sr = new StringReader(parser.ResponseInfo.ResponseText)) + // {xml:input|xpath} + input = parameters[0]; + xpath = parameters[1]; + } + else + { + // {xml:xpath} + input = parser.ResponseInfo.ResponseText; + xpath = parameters[0]; + } + + if (!string.IsNullOrEmpty(input) && !string.IsNullOrEmpty(xpath)) + { + using (StringReader sr = new StringReader(input)) { XPathDocument doc = new XPathDocument(sr); XPathNavigator nav = doc.CreateNavigator();