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:
I hereby claim:
To claim this, I am signing this object:
| #!/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' |
| <!-- | |
| 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" |
| <fieldset> | |
| <legend>Appearance and Fonts</legend> | |
| <h3> | |
| Background | |
| </h3> | |
| <table> | |
| <tr> | |
| <th> | |
| <label for="background_style">Background Style</label> | |
| </th> |
| /*! Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ | |
| (function(win, doc, undefined) { | |
| // Add a modified version of selectivizr.js here. Could remove the methods | |
| // that fetch remote stylesheets (as Respond.js would be doing that for us | |
| // via the proxy method), but expose the code that parses and applies | |
| // patches as a public method - something like Selectivizr.parseStyleSheets(). | |
| var docElem = doc.documentElement, | |
| proxyURL = doc.getElementById("respond-proxy").href, |
| 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. |
| 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()) |