I hereby claim:
- I am gavinballard on github.
- I am gavinballard (https://keybase.io/gavinballard) on keybase.
- I have a public key ASCUpC7m1tZ3oROkXKKsQTz9EXM_wtV2OwZLJcE0BYUA8Qo
To claim this, I am signing this object:
import hashlib, base64, hmac | |
def get_proxy_signature(query_dict, secret): | |
""" | |
Calculate the signature of the given query dict as per Shopify's documentation for proxy requests. | |
See: http://docs.shopify.com/api/tutorials/application-proxies#security | |
""" | |
# Sort and combine query parameters into a single string. |
I hereby claim:
To claim this, I am signing this object:
import hashlib, base64, hmac, json, settings | |
def shopify_webhook(f): | |
""" | |
A decorator thats checks and validates a Shopify Webhook request. | |
""" | |
def _hmac_is_valid(body, secret, hmac_to_verify): | |
hash = hmac.new(body, secret, hashlib.sha256) | |
hmac_calculated = base64.b64encode(hash.digest()) |
#!/bin/ruby | |
require 'shopify_api' | |
# This is an example script for the course "Mastering Shopify Apps" | |
# available at http://gavinballard.com/msa/. You're free to use and | |
# modify this script as desired. | |
# Define authentication parameters. You should update these with the | |
# authentication details for your own shop and private application. | |
SHOPIFY_SHOP='mastering-apps.myshopify.com' |
Ajax.Request.addMethods({ | |
/** | |
* Add the values given in the argument hash to an existing Ajax.Request. | |
* This method operates by extending the existing 'parameters' property | |
* on the request, then re-encoding that hash and either updating the | |
* generated URL (for GET requests) or simply setting the 'postBody' | |
* option on the request (for POST and other requests). | |
* | |
* @param parameters A hash of new parameters to extend the request with. |
Copyright (c) 2011 YOUR_NAME_HERE, YOUR_URL_HERE | |
Permission is hereby granted, free of charge, to any person obtaining | |
a copy of this software and associated documentation files (the | |
"Software"), to deal in the Software without restriction, including | |
without limitation the rights to use, copy, modify, merge, publish, | |
distribute, sublicense, and/or sell copies of the Software, and to | |
permit persons to whom the Software is furnished to do so, subject to | |
the following conditions: | |
<!-- | |
This is some example markup for using the DOM Binding feature of CartJS (http://cartjs.org). | |
It's a direct copy of the second live example code on the front page of the documentation site. | |
--> | |
<!-- Add to cart form, using Data API --> | |
<form data-cart-submit="data-cart-submit"> | |
<label>Select a Product</label> | |
<select name="id"> | |
<option value="716986707">Coat</option> |
import hashlib, base64, hmac, json, settings | |
def shopify_carrierservice_request(f): | |
""" | |
A decorator thats checks and validates a CarrierService request from Shopify. | |
""" | |
def _hmac_is_valid(body, secret, hmac_to_verify): | |
hash = hmac.new(body, secret, hashlib.sha256) | |
hmac_calculated = base64.b64encode(hash.digest()) |
#!/usr/bin/env/ruby | |
require 'yaml' | |
# Get the "type" of checkout from the arguments Git passes to us. | |
# Possible values for this are "0" for a file-only checkout (which we dont' care about) | |
# or "1" for a full branch checkout (which we do). | |
checkout_type = ARGV[2] | |
if checkout_type == "1" |
#!/usr/bin/env ruby | |
require 'yaml' | |
# Get the "type" of checkout from the arguments Git passes to us. | |
# Possible values for this are "0" for a file-only checkout (which we dont' care about) | |
# or "1" for a full branch checkout (which we do). | |
checkout_type = ARGV[2] | |
if checkout_type == "1" |