Skip to content

Instantly share code, notes, and snippets.

@gauravtiwari
gauravtiwari / sinatra_graphql_erb.rb
Created October 2, 2016 10:28
A minimal sinatra app to execute queries against GraphQL server.
class SinatraGraphqlErb < Sinatra::Base
set public_folder: 'public', static: true
use Rack::Session::Cookie, secret: 'super_secret_client_key'
use Rack::Protection
use Rack::Protection::RemoteReferrer
use Sass::Plugin::Rack
private
def query(definition, variables = {})
@gauravtiwari
gauravtiwari / google_client_oauth.es6.js
Created November 19, 2016 11:28
Use google client side sdk to authenticate a user and retreive access token.
/* global window document gapi */
import $ from 'jquery';
export default class Google {
constructor() {
$.getScript(window.GOOGLE_JS_SDK_URL, (data, textStatus) => {
if (textStatus === 'success' && gapi !== undefined) {
gapi.load('client:auth2', this.initClient);
}
@gauravtiwari
gauravtiwari / linkedin_client_oauth.es6.js
Created November 19, 2016 11:29
Use linkedin client side sdk for oauth2
/* global window IN Routes */
import $ from 'jquery';
export default class Linkedin {
constructor() {
$.getScript(window.LINKEDIN_JS_SDK_URL, (data, textStatus) => {
if (textStatus === 'success') {
IN.init({
api_key: window.LINKEDIN_CLIENT_ID,
@gauravtiwari
gauravtiwari / stackexchange_client_oauth.es6.js
Created November 19, 2016 11:29
Stackexchange client side oauth
/* global window SE */
import $ from 'jquery';
export default class StackExchange {
constructor() {
$.getScript(window.STACKOVERFLOW_JS_SDK_URL, (data, textStatus) => {
if (textStatus === 'success') {
SE.init({
clientId: `${window.STACKOVERFLOW_CLIENT_ID}`,
@gauravtiwari
gauravtiwari / convention.js
Last active February 19, 2017 10:42
folder structure
// entry: app/javascript/packs/calendar.js
require('calendar') or import 'calendar'; // in es6 world
// 1. Angular app
// Main index file that loads all dependent code and bootstraps module to DOM if required
require('./components/calendar.js') or import './components/calendar.js';
require('./models/calendar.js') or import './models/calendar.js';
// app/javascript/calendar/index.js
// Modular js much like rails app folder
@gauravtiwari
gauravtiwari / development.js
Created February 19, 2017 11:10
Development webpack config
// Note: You must restart bin/webpack-watcher for changes to take effect
var webpack = require('webpack')
var merge = require('webpack-merge')
var sharedConfig = require('./shared.js')
module.exports = merge(sharedConfig.config, {
devtool: 'sourcemap',
@gauravtiwari
gauravtiwari / production.js
Last active February 19, 2017 11:11
Production webpack config
// Note: You must restart bin/webpack-watcher for changes to take effect
var webpack = require('webpack')
var merge = require('webpack-merge')
var sharedConfig = require('./shared.js')
module.exports = merge(sharedConfig.config, {
output: { filename: '[name]-[hash].js' },
@gauravtiwari
gauravtiwari / index.js
Created February 19, 2017 12:00
Initialise counter on DOM ready
// Initialize the counter code when DOM is ready
import counter from './counter';
document.addEventListener('DOMContentLoaded', () => {
counter.initialize();
});
@gauravtiwari
gauravtiwari / counter.js
Created February 19, 2017 12:01
Counter entry file
// Require or import the counter module
import '../counter';
@gauravtiwari
gauravtiwari / style.sass
Created February 19, 2017 12:23
Counter style
$grey: #f2f2f2
.counter-wrapper
max-width: 500px
margin: 100px auto
padding: 10px
border: 1px solid $grey
form