Skip to content

Instantly share code, notes, and snippets.

@justinbmeyer
Last active November 23, 2015 20:12
Show Gist options
  • Save justinbmeyer/611346690f4666483f4a to your computer and use it in GitHub Desktop.
Save justinbmeyer/611346690f4666483f4a to your computer and use it in GitHub Desktop.
crazy connection stuff

Using Session

Behavior

var isSession = require("is-session")

behavior("uses-session", function(base){
	
	return {
		getList: function(set){
			if(isSession.connection) {
			 	set[isSession.connection.idProp]=isSession.connection.cur[isSession.connection.idProp]
			 	return base.getList(set)
			}
		}
	}

})

Creating connection

todoConnection(["uses-session"],{
	url: {
		getListData: "GET /todos",
		headers: ["sessionId"]
	}
	tokenName: "sessionId"
})

Use

todoConnection.getList({complete: true})

METHOD: GET 
URL: /todos?complete=true
HEADERS:
   sessionId:5

Is Session

Behavior

var isSession = require("is-session")

var isSession = behavior("is-session", function(base){
	
	return {
		init: function(){
			isSession.connection = this;
		},
		save: function(){
			var self = this;
			base.save().then(function(session){
				self.cur = session;
			})
		}
	}

});

Creating connection

sessionConnection = connect(["is-session",
	"constructor",
	"can-map",
	"constructor-store",
	"data-callbacks",
	"data-parse",
	"data-url",
	"constructor-callbacks-once"],{
	url: {
		getData: "/services/session",
		createData: "/services/session",
		destroyData: "/services/session"
	},
	Map: Session,
	List: Session.List,
	idProp: "sessionId"
})

Using the connection

new Session({user: {email: "[email protected]", password: "foo-bar"}}).save();
@justinbmeyer
Copy link
Author

connection = connect([function(base){

    return {
        createData: function(ser, cid) {
            var instance = this.cidStore.getReference(cid);
            var data = instance.diff();
            return base.createData(data, cid)
        }
    }
}]{
    url: {
        updateData: "PATCH /todos/{id}"
    }
})

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment