Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ql.io and Node.js: Next GenerationOpen Source Web Querying System                                 Jonathan LeBlanc        ...
Topics We’ll Be Covering        Overview of ql.io        Language Specifications        Monkey Patching & Enhancements    ...
Topics We’ll Be Covering        Overview of ql.io        Language Specifications        Monkey Patching & Enhancements    ...
ql.io: The Problem is API Overload
ql.io: Developing for Mobile
ql.io: Reducing Workload + Processing                Reduced Documentation                Reduced Code Length             ...
ql.io: Increasing Performance (Requests)
ql.io: Error Handling and Reporting
ql.io: Open Standard Foundation
ql.io: Using the System     Web Endpoint     Standalone Server
ql.io: Quering the Web Endpoint        HTTP GET        http://ql.io/q?s=QUERY
ql.io: Using the Standalone Server      Data   (internal)                  ql.io        Node Host      Data   (external)
Topics We’ll Be Covering        Overview of ql.io        Language Specifications        Monkey Patching & Enhancements    ...
Language: Defining a Data Source   Include in Request   Include in .ql Table
Language: Create Table for Data Source  create table TABLE_NAME      on select get from "http://api.com/?val1={val1}"     ...
Language: Sample Github Issues Table  create table github.issues      on select get from "https://github.com/api/v2/json/ ...
Language: Obtain Data From New Tables        select * from TABLE_NAME           where val1="VALUE"           and val2="VAL...
Language: Sample Github Table Call         select * from github.issues             where user="jcleblanc"             and ...
Language: Insert Request      insert into bitly.shorten (longUrl)          values (http://ql.io/docs);               "http...
Language: Nested Selects select ItemID, ViewItemURLForNaturalSearch, Location     from details     where itemId     in (se...
ql.io: The Test Console      Test Console: http://ql.io/console
Language: Including Script Routes user = "jcleblanc"; slides = select * from slideshare where user="{user}"; twitter = sel...
Language: Using Script Routes curl --header "content-type: application/x-www-form-urlencoded"            -d "user=jcleblan...
Topics We’ll Be Covering        Overview of ql.io        Language Specifications        Monkey Patching & Enhancements    ...
Patching: Including the Monkey Patch  create table TABLE_NAME      on select get from "http://api.com/?val1={val1}"      u...
Patching: Validating Input Parameters exports[validate param] = function(args, param, value) {    switch(param) {        c...
Patching: The Body Patch exports[patch body] = function() {   return {      type: application/json,      content: JSON.str...
Patching: The Response Patch   exports[patch response] = function(args){      var body = args.body;       //modify respons...
Topics We’ll Be Covering        Overview of ql.io        Language Specifications        Monkey Patching & Enhancements    ...
Node.js: Installing the Package           npm install ql.io-engine
Node.js: Including the Engine       var Engine = require(ql.io-engine);       var engine = new Engine({                   ...
Node.js: Building the Script
Topics We’ll Be Covering        Overview of ql.io        Language Specifications        Monkey Patching & Enhancements    ...
Tools: API Masher    Visualization Engine:    https://github.com/jcleblanc/api-masher    Technology Backbone      – ql.io ...
Tools: API Masher var format = “<li><a href=‘{{link}}’ target=‘_blank’>     <img src=‘{{media:content.media:thumbnail.url}...
Tools: API Masher var query = “create table slideshare   on select get from ‘http://www.slideshare.net/rss/user/{user}’   ...
Tools: API Masher Results    Showcase Website: http://jcleblanc.com
Tools: External API Tables     Tables Source:     https://github.com/jcleblanc/ql.io-tables
ql.io: The Link
Thank You!http://slidesha.re/ql-io-node                  Jonathan LeBlanc Developer Evangelist: X.commerce            Emai...
Upcoming SlideShare
Loading in …5
×

2012: ql.io and Node.js

5,947 views

Published on

June 2012 presentation on ql.io and working with the system inside Node.js applications.

Published in: Technology
  • Be the first to comment

2012: ql.io and Node.js

  1. 1. ql.io and Node.js: Next GenerationOpen Source Web Querying System Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc Github: github.com/jcleblanc
  2. 2. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
  3. 3. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
  4. 4. ql.io: The Problem is API Overload
  5. 5. ql.io: Developing for Mobile
  6. 6. ql.io: Reducing Workload + Processing Reduced Documentation Reduced Code Length Reduced Result Syncing
  7. 7. ql.io: Increasing Performance (Requests)
  8. 8. ql.io: Error Handling and Reporting
  9. 9. ql.io: Open Standard Foundation
  10. 10. ql.io: Using the System Web Endpoint Standalone Server
  11. 11. ql.io: Quering the Web Endpoint HTTP GET http://ql.io/q?s=QUERY
  12. 12. ql.io: Using the Standalone Server Data (internal) ql.io Node Host Data (external)
  13. 13. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
  14. 14. Language: Defining a Data Source Include in Request Include in .ql Table
  15. 15. Language: Create Table for Data Source create table TABLE_NAME on select get from "http://api.com/?val1={val1}" using defaults val1="VALUE", val2="VALUE”;
  16. 16. Language: Sample Github Issues Table create table github.issues on select get from "https://github.com/api/v2/json/ issues/list/{user}/{repository}/ {state}/" using defaults state="open";
  17. 17. Language: Obtain Data From New Tables select * from TABLE_NAME where val1="VALUE" and val2="VALUE" limit 10 offset 3;
  18. 18. Language: Sample Github Table Call select * from github.issues where user="jcleblanc" and repository="reddit-php-sdk"; { "comments": 0, "body": "http://www.phpdoc.org/", "title": "Use standardized documentation", "updated_at": "2011/12/11 13:49:07 -0800", "html_url": "https://github.com/jcleblanc/reddit-php-sdk/issues/3", "state": "open” }
  19. 19. Language: Insert Request insert into bitly.shorten (longUrl) values (http://ql.io/docs); "http://bit.ly/uZIvmY"
  20. 20. Language: Nested Selects select ItemID, ViewItemURLForNaturalSearch, Location from details where itemId in (select itemId from finditems where keywords=mini cooper); [ "330730216553", "http://www.ebay.com/itm/Clubman-Auto-Sunroof-Prem-…", "Huntingdon Valley, Pennsylvania" ],
  21. 21. ql.io: The Test Console Test Console: http://ql.io/console
  22. 22. Language: Including Script Routes user = "jcleblanc"; slides = select * from slideshare where user="{user}"; twitter = select * from github.users where user="{user}"; return { "slides": "{slides}", "twitter": "{twitter}" } via route /social using method post;
  23. 23. Language: Using Script Routes curl --header "content-type: application/x-www-form-urlencoded" -d "user=jcleblanc" http://localhost:3000/social
  24. 24. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
  25. 25. Patching: Including the Monkey Patch create table TABLE_NAME on select get from "http://api.com/?val1={val1}" using defaults val1="VALUE" using patch "patch.js";
  26. 26. Patching: Validating Input Parameters exports[validate param] = function(args, param, value) { switch(param) { case duration : return !isNaN(value - 0) default: return true; } }
  27. 27. Patching: The Body Patch exports[patch body] = function() { return { type: application/json, content: JSON.stringify({message : aok}) }; }
  28. 28. Patching: The Response Patch exports[patch response] = function(args){ var body = args.body; //modify response body return body; }
  29. 29. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
  30. 30. Node.js: Installing the Package npm install ql.io-engine
  31. 31. Node.js: Including the Engine var Engine = require(ql.io-engine); var engine = new Engine({ connection: close });
  32. 32. Node.js: Building the Script
  33. 33. Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
  34. 34. Tools: API Masher Visualization Engine: https://github.com/jcleblanc/api-masher Technology Backbone – ql.io – jQuery – Mustache Templates
  35. 35. Tools: API Masher var format = “<li><a href=‘{{link}}’ target=‘_blank’> <img src=‘{{media:content.media:thumbnail.url}}’ width=‘{{media:content.media:thumbnail.width}}’ height=‘{{media:content.media:thumbnail.height}}’ /></a> <br /><span class=‘small’> <a href=‘{{link}}’ target=‘_blank’>{{title}}</a></span></li>”;
  36. 36. Tools: API Masher var query = “create table slideshare on select get from ‘http://www.slideshare.net/rss/user/{user}’ resultset ‘rss.channel’; select * from slideshare where user=“jcleblanc” var insertEl = “widgetContainer”; parser.push(query, format, insertEl); parser.render();
  37. 37. Tools: API Masher Results Showcase Website: http://jcleblanc.com
  38. 38. Tools: External API Tables Tables Source: https://github.com/jcleblanc/ql.io-tables
  39. 39. ql.io: The Link
  40. 40. Thank You!http://slidesha.re/ql-io-node Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc Github: github.com/jcleblanc

×