diff --git a/PocketWP/Extensions/UriExtensions.cs b/PocketWP/Extensions/UriExtensions.cs
new file mode 100644
index 0000000..07293f4
--- /dev/null
+++ b/PocketWP/Extensions/UriExtensions.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+
+namespace PocketWP.Extensions
+{
+ public static class UriExtensions
+ {
+ ///
+ /// Gets a collection of query string values.
+ ///
+ /// The current uri.
+ /// A collection that contains the query string values.
+ public static IDictionary QueryString(this Uri uri)
+ {
+ var uriString = uri.IsAbsoluteUri ? uri.AbsoluteUri : uri.OriginalString;
+
+ var queryIndex = uriString.IndexOf("?", StringComparison.InvariantCulture);
+
+ if (queryIndex == -1)
+ {
+ return new Dictionary();
+ }
+
+ var query = uriString.Substring(queryIndex + 1);
+
+ return query.Split('&')
+ .Where(x => !string.IsNullOrEmpty(x))
+ .Select(x => x.Split('='))
+ .ToDictionary(x => HttpUtility.UrlDecode(x[0]), x => x.Length == 2 && !string.IsNullOrEmpty(x[1]) ? HttpUtility.UrlDecode(x[1]) : null);
+ }
+ }
+}
diff --git a/PocketWP/PocketHelper.cs b/PocketWP/PocketHelper.cs
index 2a96836..0571620 100644
--- a/PocketWP/PocketHelper.cs
+++ b/PocketWP/PocketHelper.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
+using PocketWP.Extensions;
namespace PocketWP
{
@@ -99,9 +100,30 @@ namespace PocketWP
public static PocketData RetrievePocketData(Uri uri)
{
var pocketUri = uri.ToString().Replace("/Protocol?encodedLaunchUri=", string.Empty);
- pocketUri = Uri.UnescapeDataString(pocketUri).Replace(PocketUrl, string.Empty);
+ pocketUri = Uri.UnescapeDataString(pocketUri);
+ var queryString = new Uri(pocketUri, UriKind.Absolute).QueryString();
- var itemJson = Uri.UnescapeDataString(pocketUri);
+ if (queryString.ContainsKey("source"))
+ {
+ var urlToAdd = queryString["Url"];
+ var title = queryString["title"];
+
+ var item = new PocketData
+ {
+ Items = new List
+ {
+ new PocketDataItem
+ {
+ Uri = urlToAdd,
+ Title = title
+ }
+ }
+ };
+
+ return item;
+ }
+
+ var itemJson = Uri.UnescapeDataString(queryString["Add"]);
try
{
diff --git a/PocketWP/PocketWP.csproj b/PocketWP/PocketWP.csproj
index 3dee793..65647c6 100644
--- a/PocketWP/PocketWP.csproj
+++ b/PocketWP/PocketWP.csproj
@@ -87,6 +87,7 @@
4
+