Skip to content

Instantly share code, notes, and snippets.

@rpbeukes
rpbeukes / Newtonsoft.Json.SerializeObjectWithPropertiesAlphabetically.cs
Last active May 3, 2024 02:52
Serialize Object With Properties Alphabetically
public static class CustomJsonConvert
{
/// <summary>
///Use Newtonsoft.Json.JsonConvert.SerializeObject(object) under the hood,
///with JsonSerializerSettings with a ContractResolver which takes care of the sorting of the properties.
/// </summary>
public static string SerializeObjectWithPropertiesAlphabetically(this object value, Newtonsoft.Json.Formatting formatting = Newtonsoft.Json.Formatting.Indented)
{
var jsonSerializerSettings = new JsonSerializerSettings()
{
@rpbeukes
rpbeukes / ShouldThrow.cs
Last active October 30, 2018 02:00
dotNetShouldlyShouldThrow
public static TException ShouldThrow<TException>(Action action, string customMessage = null) where TException : Exception
{
var ex = Should.Throw<Exception>(action, customMessage);
ex.ShouldBeOfType<TException>($"{ex.Message}{Environment.NewLine}StackTrace:{Environment.NewLine}{ex.StackTrace}");
return (TException)ex;
}
@rpbeukes
rpbeukes / DockerCommands
Created March 7, 2019 05:41
Docker commands
Hello world docker container:
docker run node -p 8080:3000 -v C:\Repo\nodeDockerVolumeTest:/app -w "/app" node node main.js
Connect to bash of docker container:
docker run node -p 8080:3000 -it -v C:\Repo\nodeDockerVolumeTest:/app -w "/app" /bin/bash
@rpbeukes
rpbeukes / reflection-nameof.ts
Last active November 27, 2019 12:44
nameof-typescript
export class Reflection {
constructor() {
}
//If you need more than just a property name eg: full type name try this - https://github.com/dsherret/ts-nameof#nameofto--
static nameOf<T>(propertyFunction: (typeVal: T) => any): string {
return /\.([^\.;]+);?\s*\}$/.exec(propertyFunction.toString())[1];
}
static nameOfClass<T>(classObject: Function): string {
@rpbeukes
rpbeukes / create.cognito.test.user.js
Last active November 27, 2019 12:43
Create AWS Cognito test user
/*
node ./deployment-scripts/create.cognito.test.user.js dev ap-southeast-2_ISEDf22 admin@test.com password123456789
*/
const { region, environment, username, password, userPoolId } = readArguments();
const AWS = require('aws-sdk');
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({ region: region });
if (environment === 'dev' || environment === 'test') {
testUser().create$(environment, username, password);
public static class CSVHelperExtentions
{
public static string ToCSVString<T>(this IEnumerable<T> objectToConvert) where T : class
{
using (var memoryStream = new MemoryStream())
{
var config = new Configuration();
using (var streamWriter = new StreamWriter(memoryStream))
using (var csvWriter = new CsvWriter(streamWriter))
@rpbeukes
rpbeukes / angular-reactive-forms-helper.ts
Last active August 1, 2020 19:03
Angular typesafe reactive forms
import { FormGroup, FormControl, FormBuilder, AbstractControl } from '@angular/forms';
export type FormGroupControlsOf<T> = {
[P in keyof T]: FormControl | FormGroup;
};
export abstract class FormGroupTypeSafe<T> extends FormGroup {
//give the value a custom type s
value: T;
@rpbeukes
rpbeukes / EmailRedactor.cs
Last active July 13, 2021 00:25
Redact/Mask the email address eg: some@gmail.com => s**e@g****.com
/// <summary>
/// Redact/Mask the email address eg: some@gmail.com => s**e@g****.com
/// </summary>
public class EmailRedactor
{
/// <summary>
/// eg: "some@gmail.com" => "s**e@g****.com"
/// </summary>
/// <param name="email"></param>
/// <returns></returns>
@rpbeukes
rpbeukes / check_node_version.js
Last active October 1, 2021 08:13
Verify node version via npx.
const { exec } = require("child_process");
const {engines} = require('./package');
exec("npx check-node-version --package", (error, stdout) => {
const requiredNodeVersion = engines.node;
if (error) {
console.error(stdout);
exec("node --version", (error, stdout) => {
@rpbeukes
rpbeukes / check_node_version.js
Last active October 1, 2021 08:09
Verify node version via npm package check-node-version
const {engines} = require('./package');
// https://github.com/parshap/check-node-version
const check = require('check-node-version');
const {execSync} = require('child_process');
check({node: engines.node}, async (error, result) => {
if (error) {
throw new Error(error);
}