Skip to content

Instantly share code, notes, and snippets.

@caub
caub / custom-billing-handler.js
Last active October 22, 2024 11:32
Storeganise custom billing / custom payment gateway addons
import crypto from 'crypto';
export default async (req, res) => {
try {
if (req.method !== 'POST') {
return res.status(404).send();
}
if (req.path.endsWith('/webhook')) {
@caub
caub / storeganise-api.js
Created October 22, 2024 11:07
Storeganise API helper for addons
export default function storeganiseApi({ apiUrl, addonId }) {
function fetchSg(path, {
method = 'GET',
body,
} = {}) {
const url = `${apiUrl}/v1/admin/${path}`;
return fetch(url, {
method,
headers: {
@caub
caub / api.js
Last active August 27, 2024 09:04
Simple fetch wrapper example for your API calls
function fetchJson(path, {method, body}) {
return fetch(`${API_BASE_URL}${path}`, {
method,
// credentials: 'include', // Use either 1. this if using cookies-based authentication
headers: {
// either nothing (if using cookies (requires same domain)
// Authorization: `Bearer ${localStorage.getItem('access_token')}`, // or this (client-side)
// Authorization: `ApiKey ${process.env.SG_API_KEY}`, // or access token authentication (server-side)
...body && {'Content-Type': 'application/json'},
},
@caub
caub / .inputrc
Last active March 29, 2024 07:41
.inputrc
$include /etc/inputrc
# may need export INPUTRC=~/.inputrc note: use ctrl+v to debug readline
# set echo-control-characters off
set show-all-if-ambiguous on
# set history-preserve-point on
"\e[5~": beginning-of-history
@caub
caub / KRLS plot.md
Last active April 10, 2023 07:33
Santa-Fe regression with matlab

krls

nmse = 0.042

@caub
caub / pages_slash_404.js
Last active May 27, 2022 04:38
Next static
import React from 'react';
import Html from '../components/html'; // wraps pages into <html> and some common layout
// you might want a webpack.config.js at least for styles
// typically we use a sass loader, and also @emotion/react in our components
// Html will take care to add <link> for built ./build/**/*.css
// and <script> for built ./build/**/*.js if any, you might even inline it <script>{content}</script> if short
// It's also possible to build css/js assets per page, we didn't do that
export async function getServerSideProps({ req }) {
@caub
caub / zendesk-chat.js
Last active November 15, 2021 17:23
Zendesk Chat API
const http = require('http');
const fetch = require('node-fetch');
const getToken = () => new Promise((resolve, reject) => {
const server = http.createServer(async (req, res) => {
res.end();
const params = new URLSearchParams(req.url.slice(1));
console.log('rec', req.url, params);
if (params.has('code')) {
resolve(params.get('code'));
@caub
caub / svm.py
Last active October 31, 2021 22:31
Simplified SMO from coursera's ml-class converted from matlab
from scipy import *
#from scipy.linalg import *
from pylab import *
class SVM:
def train(self, X, Y, kernel, C, tol = 1e-3, max_passes = 5):
m = size(X, 0)
n = size(X, 1)
@caub
caub / api.js
Last active October 28, 2021 18:18
Simple fetch wrapper
const API_URL = 'https://..'; // Your API base url
// returns true for plain object literals, like {foo: 'bar'}, false for other cases, like instances of classes, like lodash.isPlainObject
const isPlainObject = obj => obj && Object.getPrototypeOf(obj) === Object.prototype || Object.getPrototypeOf(obj) === null;
export function fetchJson(url, { body, headers, ...o } = {}) {
const isJson = isPlainObject(body); // most of the time we send plain 'json' objects
return fetch(url[0] === '/' ? API_URL + url : url, {
headers: {
...isJson && {'Content-Type': 'application/json'},
@caub
caub / webpack.config.js
Last active June 6, 2021 17:17
react-scripts lite
require('dotenv/config');
const fs = require('fs-extra');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
fs.emptyDirSync(__dirname + '/build');
fs.copySync(__dirname + '/public/', __dirname + '/build/', {
dereference: true,