wasSharp

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 55  →  ?path2? @ 56
/Collections/Specialized/ObservableConcurrentQueue.cs
@@ -25,7 +25,7 @@
EnqueueAsync(item).RunSynchronously();
}
 
public async Task EnqueueAsync(T item) => await Task.Run(() =>
public Task EnqueueAsync(T item) => Task.Run(() =>
{
base.Enqueue(item);
 
@@ -42,9 +42,9 @@
return true;
}
 
public async Task<T> DequeueAsync() => await Task.Run(() =>
public Task<T> DequeueAsync() => Task.Run(() =>
{
if (!base.TryDequeue(out T item))
if (base.IsEmpty || !base.TryDequeue(out T item))
return default(T);
 
OnCollectionChanged(
/Languages/CSV.cs
@@ -101,6 +101,12 @@
/// <remarks>compliant with RFC 4180</remarks>
public static IEnumerable<string> ToEnumerable(string csv)
{
if (csv == null)
{
yield return string.Empty;
yield break;
}
 
var s = new Stack<char>();
var m = new StringBuilder();
for (var i = 0; i < csv.Length; ++i)
/Languages/KeyValue.cs
@@ -6,7 +6,10 @@
 
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace wasSharp.Languages
{
@@ -16,7 +19,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Returns the value of a key from a key-value data string.
/// Returns the value of a key from a key-value data string.
/// </summary>
/// <returns>true if the key was found in data</returns>
public static string Get(string key, string data)
@@ -33,11 +36,11 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Returns a key-value data string with a key set to a given value.
/// Returns a key-value data string with a key set to a given value.
/// </summary>
/// <returns>
/// a key-value data string or the empty string if either key or
/// value are empty
/// a key-value data string or the empty string if either key or
/// value are empty
/// </returns>
public static string Set(string key, string value, string data)
{
@@ -52,7 +55,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Deletes a key-value pair from a string referenced by a key.
/// Deletes a key-value pair from a string referenced by a key.
/// </summary>
/// <returns>a key-value pair string</returns>
public static string Delete(string key, string data)
@@ -68,7 +71,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Decodes key-value pair data to a dictionary.
/// Decodes key-value pair data to a dictionary.
/// </summary>
/// <returns>a dictionary containing the keys and values</returns>
public static Dictionary<string, string> Decode(string data)
@@ -90,7 +93,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Serialises a dictionary to key-value data.
/// Serialises a dictionary to key-value data.
/// </summary>
/// <returns>a key-value data encoded string</returns>
public static string Encode(Dictionary<string, string> data)
@@ -102,8 +105,9 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Serialises a dictionary to key-value data.
/// Serializes a dictionary to key-value data.
/// </summary>
/// <param name="data">an input string</param>
/// <returns>a key-value data encoded string</returns>
public static string Encode(IEnumerable<KeyValuePair<string, string>> data)
{
@@ -111,10 +115,23 @@
}
 
///////////////////////////////////////////////////////////////////////////
// Copyright (C) 2018 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Asynchronously serializes a dictionary to key-value data.
/// </summary>
/// <param name="data">an input string</param>
/// <returns>a key-value data encoded string</returns>
public static string Encode(IEnumerable<KeyValuePair<Task<string>, Task<string>>> data)
{
return string.Join("&", data.AsParallel().Select(o => string.Join("=", o.Key.Result, o.Value.Result)));
}
 
///////////////////////////////////////////////////////////////////////////
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Escapes a dictionary's keys and values for sending as POST data.
/// Escapes a dictionary's keys and values for sending as POST data.
/// </summary>
public static IEnumerable<KeyValuePair<string, string>> Escape(IEnumerable<KeyValuePair<string, string>> data,
Func<string, string> func)
@@ -121,5 +138,17 @@
{
return data.AsParallel().ToDictionary(o => func(o.Key), p => func(p.Value));
}
 
///////////////////////////////////////////////////////////////////////////
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Escapes a dictionary's keys and values for sending as POST data.
/// </summary>
public static IEnumerable<KeyValuePair<Task<string>, Task<string>>> EscapeAsync(IEnumerable<KeyValuePair<string, string>> data,
Func<string, Task<string>> func)
{
return data.AsParallel().ToDictionary(async o => await func(o.Key), async p => await func(p.Value));
}
}
}
/Web/wasHTTPClient.cs
@@ -101,7 +101,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a PUT request to an URL with binary data.
/// Sends a PUT request to an URL with binary data.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -149,7 +149,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a PUT request to an URL with text.
/// Sends a PUT request to an URL with text.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -198,7 +198,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a PUT request to an URL with binary data.
/// Sends a PUT request to an URL with binary data.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -226,7 +226,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a PUT request to an URL with stream content data.
/// Sends a PUT request to an URL with stream content data.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -254,7 +254,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a DELETE request to an URL with stream content data.
/// Sends a DELETE request to an URL with stream content data.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -288,7 +288,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a PUT request to an URL with text.
/// Sends a PUT request to an URL with text.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -317,7 +317,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a PUT request to an URL with text.
/// Sends a PUT request to an URL with text.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="data">key-value pairs to send</param>
@@ -352,7 +352,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a POST request to an URL with set key-value pairs.
/// Sends a POST request to an URL with set key-value pairs.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="message">key-value pairs to send</param>
@@ -381,7 +381,7 @@
// Copyright (C) 2017 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a POST request to an URL with set message.
/// Sends a POST request to an URL with set message.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="message">the message to send</param>
@@ -410,7 +410,7 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a POST request to an URL with set key-value pairs.
/// Sends a POST request to an URL with set key-value pairs.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="message">key-value pairs to send</param>
@@ -439,10 +439,39 @@
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a GET request to an URL with set key-value pairs.
/// Asynchronously sends a POST request to an URL with set key-value pairs.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="message">key-value pairs to send</param>
public async Task<byte[]> POST(string URL, IEnumerable<KeyValuePair<Task<string>, Task<string>>> message)
{
try
{
using (var content =
new StringContent(KeyValue.Encode(message), Encoding.UTF8, MediaType))
{
using (var response = await HTTPClient.PostAsync(URL, content))
{
return response.IsSuccessStatusCode
? await response.Content.ReadAsByteArrayAsync()
: null;
}
}
}
catch (Exception)
{
return null;
}
}
 
///////////////////////////////////////////////////////////////////////////
// Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a GET request to an URL with set key-value pairs.
/// </summary>
/// <param name="URL">the url to send the message to</param>
/// <param name="message">key-value pairs to send</param>
public async Task<byte[]> GET(string URL, Dictionary<string, string> message)
{
try
@@ -464,7 +493,7 @@
// Copyright (C) 2016 Wizardry and Steamworks - License: GNU GPLv3 //
///////////////////////////////////////////////////////////////////////////
/// <summary>
/// Sends a GET request to an URL with set key-value pairs.
/// Sends a GET request to an URL with set key-value pairs.
/// </summary>
/// <param name="URL">the url to send the message to</param>
public async Task<byte[]> GET(string URL)
@@ -483,9 +512,9 @@
}
}
 
public void Dispose()
{
((IDisposable)HTTPClient).Dispose();
}
public void Dispose()
{
((IDisposable)HTTPClient).Dispose();
}
}
}
/wasSharp.csproj
@@ -75,19 +75,7 @@
<Compile Include="Collections\Specialized\ObservableConcurrentQueue.cs" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Folder Include="Sciences\" />
<Folder Include="Sciences\Geodesics\" />
<Folder Include="Sciences\Mathematics\" />
<Folder Include="IO\" />
<Folder Include="Languages\" />
<Folder Include="Bit\" />
<Folder Include="Cryptography\" />
<Folder Include="Arrays\" />
<Folder Include="Lambda\" />
<Folder Include="Reflection\" />
<Folder Include="Sets\" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.