Skip to content

Instantly share code, notes, and snippets.

View NDiiong's full-sized avatar
😀
Hi there!

duong.nb NDiiong

😀
Hi there!
View GitHub Profile
@NDiiong
NDiiong / Partition.cs
Created August 18, 2020 03:56 — forked from atifaziz/Partition.cs
LINQ operator to split a sequence into two based on a condition
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
static partial class Sequence
{
/// <summary>
/// Splits the sequence into two sequences, containing the elements
/// for which the given predicate returns <c>true</c> and <c>false</c>
using System.Xml.Linq;
namespace Json.Linq
{
public class JDocument : XDocument
{
public JDocument() : base() { }
public JDocument(params object[] content) : base(content) { }
public JDocument(XDocument other) : base(other) { }
public JDocument(XDeclaration declaration, params object[] content) : base(declaration, content) { }
public static async Task<IEnumerable<T>> WhereAsync<T>(this IEnumerable<T> collection, Func<T, Task<bool>> predicate)
{
var itemTaskList = collection.Select(item => new { Item = item, PredTask = predicate.Invoke(item) }).ToList();
await Task.WhenAll(itemTaskList.Select(x => x.PredTask)).ConfigureAwait(false);
return itemTaskList.Where(x => x.PredTask.Result).Select(x => x.Item);
}
@NDiiong
NDiiong / AdapterWithDelegation.cs
Created August 12, 2020 06:42
22 Design Patterns in C#
class Abstraction
{
Bridge bridge;
public Abstraction(Bridge implementation)
{
bridge = implementation;
}
public string Operation()
{
return "Abstraction <<< BRIDGE >>>> " + bridge.OperationImp();
@NDiiong
NDiiong / GuardExample.cs
Created August 5, 2020 03:06 — forked from ilivewithian/GuardExample.cs
Guard Example
Guard.Against<InvalidOperationException>(string.IsNullOrEmpty(serverName), "Server name must be provided")
@NDiiong
NDiiong / Expressions.cs
Created August 4, 2020 03:04 — forked from ielcoro/Expressions.cs
Guard exception helper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace Ormazabal.PanelMonitoring.Helpers
{
static class Expressions
@NDiiong
NDiiong / Guard.cs
Created August 3, 2020 09:04 — forked from RhysC/Guard.cs
Showing a proposed use of Guard with expression for static checks and correct name evaluation in exception messages
public static class Guard
{
public static void NotNull<T>(Expression<Func<T>> notNullableExpression) where T : class
{
var compliedExpression = notNullableExpression.Compile();
if (compliedExpression() == null)
{
var paramName = notNullableExpression.GetObjectNameGraph();
throw new ArgumentNullException(paramName);
public static TSource Strict<TSource, TExpect>(this IEnumerable<TSource> source)
{
if (source is null) throw new ArgumentNullException(nameof(source));
return source.Single(sour => sour.GetType() == typeof(TExpect));
}
public static TSource StrictOrDefault<TSource, TExpect>(this IEnumerable<TSource> source)
{
if (source is null) throw new ArgumentNullException(nameof(source));
return source.SingleOrDefault(sour => sour.GetType() == typeof(TExpect));
@NDiiong
NDiiong / HttpClientSample.cs
Created July 30, 2020 06:05 — forked from tohnaman/HttpClientSample.cs
HttpClient Sample
private static HttpClient client = new HttpClient();
// GET
var response = await client.GetAsync(@"http://localhost/admin");
var cookies = response.Headers.FirstOrDefault(pair => String.Compare(pair.Key, @"Set-Cookie", StringComparison.OrdinalIgnoreCase) == 0).Value;
// get token from html
var html = await response.Content.ReadAsStringAsync();
var regex = new Regex("(name=\\\"_token\\\" value=)\\\"(.*)\\\"");
var token = regex.Match(html).Groups[2].Value;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Converters;
namespace ArchDev
{
public static class HttpClientExtensions