Helper now handles web sourced items
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
|
||||
namespace PocketWP.Extensions
|
||||
{
|
||||
public static class UriExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets a collection of query string values.
|
||||
/// </summary>
|
||||
/// <param name="uri">The current uri.</param>
|
||||
/// <returns>A collection that contains the query string values.</returns>
|
||||
public static IDictionary<string, string> QueryString(this Uri uri)
|
||||
{
|
||||
var uriString = uri.IsAbsoluteUri ? uri.AbsoluteUri : uri.OriginalString;
|
||||
|
||||
var queryIndex = uriString.IndexOf("?", StringComparison.InvariantCulture);
|
||||
|
||||
if (queryIndex == -1)
|
||||
{
|
||||
return new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<PocketDataItem>
|
||||
{
|
||||
new PocketDataItem
|
||||
{
|
||||
Uri = urlToAdd,
|
||||
Title = title
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
var itemJson = Uri.UnescapeDataString(queryString["Add"]);
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Extensions\UriExtensions.cs" />
|
||||
<Compile Include="PocketDataItem.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="PocketHelper.cs" />
|
||||
|
||||
Reference in New Issue
Block a user