If http://localhost/api/do_job kicks off a job on the backend that will take 45-120 seconds to complete,
what should the API return?
Eg:
202 Accepted
{ "job_id": 103859195, "poll": "http://localhost/poll/103859195", "complete": "0%" }
| require 'digest' | |
| # = simple_google_analytics.rb | |
| # | |
| # Chris Le <chris at iamchrisle dot com> | |
| # | |
| # This module is an wrapper to export data from Google Analytics as a flattened | |
| # hash suitable for database storage. It does not require any other gems other | |
| # than 'oauth'. I used this simply to get metrics and directly store them in | |
| # a database. |
| <form id="myForm"> | |
| Name: <input type="text" name="name" id="name" /><br/> | |
| Email: <input type="text" name="email" id="email" /><br/> | |
| Password: <input type="text" name="password" id="password" /><br/> | |
| Website: <input type="text" name="website" id="website" /><br/> | |
| <button type="submit" onClick="trackUserEngagement('myForm');">Submit</button> | |
| </form> | |
| <script type="text/javascript"> | |
| // Track user engagement on a form |
| // This is to be used as a bookmarklet | |
| // Supposed to show a prompt where you pick if you want to do a site: search alpha using 'a' or bravo using 'b' | |
| // However, this isn't working as a bookmarklet but does work in the live w3 editor | |
| javascript:var name=prompt("Please enter your name \n a = alpha \n b = bravo","x"); | |
| switch (name) { | |
| case "a": | |
| location.href='http://www.google.com/search?q=site%3A'+document.domain.replace('www.','')+" alpha" | |
| break; | |
| case "b": |
| function computeMD5(str) { | |
| var digest = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, str); | |
| return Utilities.base64Encode(digest); | |
| } | |
| function computeSHA1(str) { | |
| var digest = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_1, str); | |
| return Utilities.base64Encode(digest); | |
| } |
| /** | |
| * Adds empty elements to an array | |
| * | |
| * @example | |
| * A1: hello | |
| * A2: world | |
| * | |
| * =splitArrayBy(A1:A2, 3) | |
| */ | |
| function splitArrayBy(array, n) { |
| class Puzzle | |
| attr_accessor :field | |
| def initialize | |
| self.field = true | |
| end | |
| def run | |
| puts field.inspect # => true |
| /** | |
| * Humanize a string. Turns underscored or camel cased string into human readable strings | |
| * | |
| * @example | |
| * TextUtils.humanize( 'keyword_category' ); // => "Keyword Category" | |
| * TextUtils.humanize( 'keywordCategory' ); // => "Keyword Category" | |
| * | |
| * @return {String} | |
| */ | |
| humanize: function(str) { |
| /** | |
| * The very simplest explanation of how GA works in JavaScript is that it's simply an array. | |
| * The GA tag (not the new Universal tag) looks similar to this: | |
| */ | |
| var _gaq = _gaq || []; | |
| _gaq.push(['_setAccount', 'UA-xxxxxxxx-y']); | |
| _gaq.push(['_trackPageview']); | |
| (function () { |
| You have ... | |
| [1,2,3,4,5,6,7,8,9] | |
| [1,2,3,4,5,6,7] | |
| [1,2,3] | |
| You want in chunks of N (say 3) | |
| [ | |
| [1,2,3], | |
| [4,5,6], | |
| [7,8,9], |