Skip to content

Instantly share code, notes, and snippets.

@sjb9774
sjb9774 / observer.js
Created May 7, 2023 00:14
Very simple observer pattern example
const createObserverPattern = () => {
let observers = [];
let register = (observer) => {
observers.push(observer);
}
let deregister = (observer) => {
observers = observers.filter((registeredObserver) => !Object.is(observer, registeredObserver))
}
@sjb9774
sjb9774 / proxy.js
Last active May 7, 2023 00:12
Proxy wrapper for objects that tracks changes in a "draft" object without touching the underlying initial object
const getProxyExample = (initialObject = {}) => {
const buildProxyClosure = () => {
let data = {};
let proxyHandler = {
get(obj, prop) {
return prop in data ? data[prop] : obj[prop];
},
set(obj, prop, value) {
data[prop] = value;
}
@sjb9774
sjb9774 / input.graphql
Created February 13, 2023 01:00
Modified main.rs for Shopify Product Discount Function example
query Input {
discountNode {
metafield(namespace: "my-discount-namespace", key: "my-discount-amount") {
value
}
}
cart {
lines {
merchandise {
__typename
@sjb9774
sjb9774 / get_shopify_access_token.js
Last active July 24, 2023 08:37
Used with the Shopify Node App Template to get the access token stored in the installation session
// run from within app web/ directory, presumes the sqlite db file is named "database.sqlite" (default for template)
const DB_FILE_PATH = './database.sqlite';
const getAccessToken = async () => {
return new Promise((resolve, reject) => {
import('sqlite3').then((sqlite) => {
const db = new sqlite.default.Database(DB_FILE_PATH);
db.serialize(() => {
db.get('SELECT accessToken FROM shopify_sessions LIMIT 1;', [], (err, { accessToken }) => {
@sjb9774
sjb9774 / server.py
Created January 30, 2023 02:59
Demo HTTP server
import socket
import select
if __name__ == "__main__":
# Get socket file descriptor as a TCP socket using the IPv4 address family
listener_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Set some modes on the socket, not required but it's nice for our uses
listener_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
address_port = ("127.0.0.1", 8080)
@sjb9774
sjb9774 / warden_ngrok.sh
Created September 16, 2020 16:14
Expose warden env through ngrok
function warden_ngrok () {
network_name=$(docker network ls --filter name=$1 --format '{{.Name}}')
nginx_name=$(docker ps --filter name=$1_nginx --format '{{.Names}}')
docker run --rm -it --link $nginx_name --net $network_name wernight/ngrok ngrok http $nginx_name:80
}
# Example: "myapp" is WARDEN_ENV_NAME from .env
warden_ngrok myapp
# add to ~/.bashrc and run . ~/.bashrc or open a new terminal window
function m2config () {
ssh -C $1 'php -d include_path='\''/var/www/stage/current:/var/www/html/current:/var/www/prod/current'\'' -r '\''$c = include "app/etc/env.php"; echo json_encode($c);'\''' | jq -r .$2
}
# usage
m2config www-stage@stage.mysite.com db.connection.default.username # returns db username from env.php
@sjb9774
sjb9774 / elasticsearch-upgrade.sh
Last active March 3, 2020 17:24
Update ElasticSearch 2.4.3 to 6.x
# on VM
sudo su
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
touch /etc/yum.repos.d/elasticsearch.repo
echo "[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
diff --git a/vendor/magento/module-payment/Block/Transparent/Redirect.php b/vendor/magento/module-payment/Block/Transparent/Redirect.php
new file mode 100644
index 00000000000..aeaeee7e4d2
--- /dev/null
+++ b/vendor/magento/module-payment/Block/Transparent/Redirect.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
@sjb9774
sjb9774 / redis_session.sh
Last active February 12, 2021 10:27
retrieving gzipped redis data
>>> mr dev:console
$state = $di->get(\Magento\Framework\App\State::class);
$state->setAreaCode('frontend');
$redis = $di->get(\Magento\Framework\Session\SaveHandler\Redis::class);
$sessionData = $redis->read("<session id without 'sess_' prefix");
# fully decode like PHP
session_start();
session_decode($sessionData);
var_dump($_SESSION);