Skip to content

Instantly share code, notes, and snippets.

View keimpema's full-sized avatar

Harmen van Keimpema keimpema

View GitHub Profile
@keimpema
keimpema / NntpDecompressingConnection.cs
Created December 7, 2017 08:27
A decompresing INntpConnection implementation (not very good)
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Security;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using Microsoft.Extensions.Logging;
@keimpema
keimpema / TaskExtensions.cs
Created October 16, 2017 14:05
TaskExtensions
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Usenet.Extensions
{
public static class TaskExtensions
{
public static async Task<TResult> TimeoutAfter<TResult>(this Task<TResult> task, TimeSpan timeout)
{
@keimpema
keimpema / PipeStream.cs
Last active October 16, 2017 13:58
PipeStream
using System;
using System.Collections.Concurrent;
using System.Threading;
using Microsoft.Extensions.Logging;
namespace Usenet.Util
{
public class PipeStream : AbstractBaseStream
{
private class Chunk
@keimpema
keimpema / Crc32CalcCompare.cs
Last active June 7, 2017 15:15
Compare Linq, For and ForEach loops for calculating crc32 hash value.
using System.Linq;
namespace ConsoleApp1
{
public static class Crc32
{
private const uint polynomial = 0xEDB88320;
private const uint seed = 0xFFFFFFFF;
private static readonly uint[] lookupTable;
@keimpema
keimpema / OpenPathsRequest.cs
Last active December 15, 2015 17:50
Retrieving location data from OpenPaths.cc using DevDefined.Oauth library (http://nuget.org/packages/DevDefined.OAuth). Code is based on http://www.markerstudio.com/technical/2009/09/net-oauth-sample-working-with-justintv .
public class OpenPathsRequest
{
private static DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
private const string accessKey = "your personal access key";
private const string secretKey = "your personal secret";
private const string url = "https://openpaths.cc/api/1";
private OAuthSession session;
public OpenPathsRequest()