400 likes | 409 Views
June 2012 presentation on ql.io and working with the system inside Node.js applications.
E N D
ql.io and Node.js: Next Generation Open Source Web Querying System Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc Github: github.com/jcleblanc
Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
ql.io: Reducing Workload + Processing Reduced Documentation Reduced Code Length Reduced Result Syncing
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 Integrating Into Your Node Applications Tools and More
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}" using defaults val1="VALUE", val2="VALUE”;
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";
Language: Obtain Data From New Tables select * from TABLE_NAME where val1="VALUE" and val2="VALUE" limit 10 offset 3;
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” }
Language: Insert Request insert into bitly.shorten (longUrl) values ('http://ql.io/docs'); "http://bit.ly/uZIvmY"
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" ],
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 = select * from github.users where user="{user}"; return { "slides": "{slides}", "twitter": "{twitter}" } via route '/social' using method post;
Language: Using Script Routes curl --header "content-type: application/x-www-form-urlencoded" -d "user=jcleblanc" http://localhost:3000/social
Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
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";
Patching: Validating Input Parameters exports['validate param'] = function(args, param, value) { switch(param) { case 'duration' : return !isNaN(value - 0) default: return true; } }
Patching: The Body Patch exports['patch body'] = function() { return { type: 'application/json', content: JSON.stringify({message : 'aok'}) }; }
Patching: The Response Patch exports['patch response'] = function(args){ var body = args.body; //modify response body return body; }
Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
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({ connection: 'close' });
Topics We’ll Be Covering Overview of ql.io Language Specifications Monkey Patching & Enhancements Integrating Into Your Node Applications Tools and More
Tools: API Masher Visualization Engine: https://github.com/jcleblanc/api-masher Technology Backbone – ql.io – jQuery – Mustache Templates
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>”;
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();
Tools: API Masher Results Showcase Website: http://jcleblanc.com
Tools: External API Tables Tables Source: https://github.com/jcleblanc/ql.io-tables
Thank You! http://slidesha.re/ql-io-node Jonathan LeBlanc Developer Evangelist: X.commerce Email: jleblanc@x.com Twitter: @jcleblanc Github: github.com/jcleblanc