I'll clean this up and make a proper repo eventually, this is a weird port from a node-webkit project.
If anyone would like to help out, punch me on player.
player = | |
_: "https://player.me/api" | |
_oauth: | |
clientId: undefined | |
clientSecret: undefined | |
header: undefined | |
__version: "1.0.0" | |
__author: "Katie Skytte <katie@phaser.tv>" | |
__license: "BSD-3-Clause" | |
auth: | |
_: (opts) -> new Promise (resolve, reject) -> | |
params = | |
client_id: player._oauth.clientId | |
client_secret: player._oauth.clientSecret | |
$.extend params, opts | |
$.ajax | |
method: "POST" | |
url: "#{player._}oauth/access_token" | |
data: params | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
passwordGrant: (username, password) -> | |
this._ | |
username: username | |
password: password | |
grant_type: "password" | |
refresh: (token) -> | |
this._ | |
refresh_token: token | |
grant_type: "refresh_token" | |
user: | |
get: | |
_: (id, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/users/#{id}" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
default: -> this._ "default" | |
id: (id) -> this._ id | |
username: (slug) -> this._ slug, username: yes | |
# very very very very very lazy implementation. | |
# this should stay in any release for DRY purposes, but | |
# srsly, make abstractions to this at some point. | |
meta: (id, what, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: opts.method | |
url: "#{player._}v1/users/#{id}/#{what}#{if opts.subpath? then "/"+opts.subpath else ''}" | |
data: opts.params | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
follow: (id, who) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/users/#{id}/following" | |
data: | |
id: who | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
unfollow: (id, who) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "DELETE" | |
url: "#{player._}v1/users/#{id}/following/#{who}" | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
feed: | |
### | |
Feed of posts stuff | |
### | |
get: (opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/feed" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
### | |
Post related stuff | |
### | |
getPost: (id) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/feed/#{id}" | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
subState: (id, state = on) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/feed" | |
data: | |
id: id | |
subscribe: state | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
post: (body) -> new Promise (resolve, reject) -> | |
mp = new FormData() | |
__.each body (v, k) -> | |
mp.append(k, v) | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/feed" | |
data: mp | |
contentType: false | |
processData: false | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
getPostMeta: (id, what, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/feed/#{id}/#{what}" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
likePost: (id, state = yes) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/feed/#{id}/likes" | |
data: | |
like: state | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
### | |
Comment related stuff | |
### | |
getComments: (id, commentId, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/feed/#{id}/comments#{if commentId? then '/'+commentId}" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
postComment: (id, body) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/#{id}/comments" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
deleteComment: (pid, cid) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "DELETE" | |
url: "#{player._}v1/#{pid}/comments/#{cid}" | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
getCommentMeta: (id, cid, what, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/feed/#{id}/comments/#{cid}/#{what}" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
likeComment: (id, cid, state = yes) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/feed/#{id}/comments/#{cid}/likes" | |
data: | |
like: state | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
### | |
Other actions under /feed/ | |
### | |
blockUser: (id, state = yes) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: if state then "POST" else "DELETE" | |
url: "#{player._}v1/feed/block" | |
data: | |
id: id | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
getStreams: (id, all = no) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/streaming" | |
data: | |
all: all | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
report: (uid, aid, type) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/report" | |
data: | |
target_id: uid, | |
data: | |
id: aid, | |
type: type | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
games: | |
list: (opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/games" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
suggest: (opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/games" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
get: (id) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/games/#{id}" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
# very very very very very lazy implementation. | |
# this should stay in any release for DRY purposes, but | |
# srsly, make abstractions to this at some point. | |
meta: (id, what, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: opts.method | |
url: "#{player._}v1/games/#{id}/#{what}#{if opts.subpath? then "/"+opts.subpath else ''}" | |
data: opts.params | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
messaging: | |
listGroups: (user_id = undefined) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "GET" | |
url: "#{player._}v1/messages_groups" | |
data: | |
user_id: user_id | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
createGroup: (opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/messages_groups" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
sendMessage: createGroup | |
modifyGroup: (id, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/messages_groups/#{id}" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
getMessages: (id, opts) -> new Promise (resolve, reject) -> | |
$.ajax | |
method: "POST" | |
url: "#{player._}v1/messages_groups/#{id}/messages" | |
data: opts | |
.done (data, stat, x) -> | |
resolve data | |
.fail (x, stat, err) -> | |
reject err | |
# stuff to handle use on player.box or just in the browser | |
if window.box? and window.__private_box? | |
player._oauth.clientId = __private_box.oauth.id | |
player._oauth.clientSecret = __private_box.oauth.secret | |
__ = require 'underscore' | |
else | |
__ = _ | |
$.ajaxSetup | |
headers: | |
"Authorization": player._oauth.header | |
if module.exports? then module.exports = player |
// Generated by CoffeeScript 1.8.0 | |
var player, __; | |
player = { | |
_: "https://player.me/api", | |
_oauth: { | |
clientId: void 0, | |
clientSecret: void 0, | |
header: void 0 | |
}, | |
__version: "1.0.0", | |
__author: "Katie Skytte <katie@phaser.tv>", | |
__license: "BSD-3-Clause", | |
auth: { | |
_: function(opts) { | |
return new Promise(function(resolve, reject) { | |
var params; | |
params = { | |
client_id: player._oauth.clientId, | |
client_secret: player._oauth.clientSecret | |
}; | |
$.extend(params, opts); | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "oauth/access_token", | |
data: params | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
passwordGrant: function(username, password) { | |
return this._({ | |
username: username, | |
password: password, | |
grant_type: "password" | |
}); | |
}, | |
refresh: function(token) { | |
return this._({ | |
refresh_token: token, | |
grant_type: "refresh_token" | |
}); | |
} | |
}, | |
user: { | |
get: { | |
_: function(id, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/users/" + id, | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
"default": function() { | |
return this._("default"); | |
}, | |
id: function(id) { | |
return this._(id); | |
}, | |
username: function(slug) { | |
return this._(slug, { | |
username: true | |
}); | |
} | |
}, | |
meta: function(id, what, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: opts.method, | |
url: "" + player._ + "v1/users/" + id + "/" + what + (opts.subpath != null ? "/" + opts.subpath : ''), | |
data: opts.params | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
follow: function(id, who) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/users/" + id + "/following", | |
data: { | |
id: who | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
unfollow: function(id, who) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "DELETE", | |
url: "" + player._ + "v1/users/" + id + "/following/" + who | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
} | |
}, | |
feed: { | |
/* | |
Feed of posts stuff | |
*/ | |
get: function(opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/feed", | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
/* | |
Post related stuff | |
*/ | |
getPost: function(id) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/feed/" + id | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
subState: function(id, state) { | |
if (state == null) { | |
state = true; | |
} | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/feed", | |
data: { | |
id: id, | |
subscribe: state | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
post: function(body) { | |
return new Promise(function(resolve, reject) { | |
var mp; | |
mp = new FormData(); | |
__.each(body(function(v, k) { | |
return mp.append(k, v); | |
})); | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/feed", | |
data: mp, | |
contentType: false, | |
processData: false | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
getPostMeta: function(id, what, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/feed/" + id + "/" + what, | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
likePost: function(id, state) { | |
if (state == null) { | |
state = true; | |
} | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/feed/" + id + "/likes", | |
data: { | |
like: state | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
/* | |
Comment related stuff | |
*/ | |
getComments: function(id, commentId, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/feed/" + id + "/comments" + (commentId != null ? '/' + commentId : void 0), | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
postComment: function(id, body) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/" + id + "/comments", | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
deleteComment: function(pid, cid) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "DELETE", | |
url: "" + player._ + "v1/" + pid + "/comments/" + cid | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
getCommentMeta: function(id, cid, what, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/feed/" + id + "/comments/" + cid + "/" + what, | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
likeComment: function(id, cid, state) { | |
if (state == null) { | |
state = true; | |
} | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/feed/" + id + "/comments/" + cid + "/likes", | |
data: { | |
like: state | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
/* | |
Other actions under /feed/ | |
*/ | |
blockUser: function(id, state) { | |
if (state == null) { | |
state = true; | |
} | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: state ? "POST" : "DELETE", | |
url: "" + player._ + "v1/feed/block", | |
data: { | |
id: id | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
getStreams: function(id, all) { | |
if (all == null) { | |
all = false; | |
} | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/streaming", | |
data: { | |
all: all | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
report: function(uid, aid, type) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/report", | |
data: { | |
target_id: uid, | |
data: { | |
id: aid, | |
type: type | |
} | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
} | |
}, | |
games: { | |
list: function(opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/games", | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
suggest: function(opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/games", | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
get: function(id) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/games/" + id, | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
meta: function(id, what, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: opts.method, | |
url: "" + player._ + "v1/games/" + id + "/" + what + (opts.subpath != null ? "/" + opts.subpath : ''), | |
data: opts.params | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
} | |
}, | |
messaging: { | |
listGroups: function(user_id) { | |
if (user_id == null) { | |
user_id = void 0; | |
} | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "GET", | |
url: "" + player._ + "v1/messages_groups", | |
data: { | |
user_id: user_id | |
} | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
createGroup: function(opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/messages_groups", | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
sendMessage: createGroup, | |
modifyGroup: function(id, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/messages_groups/" + id, | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
}, | |
getMessages: function(id, opts) { | |
return new Promise(function(resolve, reject) { | |
return $.ajax({ | |
method: "POST", | |
url: "" + player._ + "v1/messages_groups/" + id + "/messages", | |
data: opts | |
}).done(function(data, stat, x) { | |
return resolve(data); | |
}).fail(function(x, stat, err) { | |
return reject(err); | |
}); | |
}); | |
} | |
} | |
}; | |
if ((window.box != null) && (window.__private_box != null)) { | |
player._oauth.clientId = __private_box.oauth.id; | |
player._oauth.clientSecret = __private_box.oauth.secret; | |
__ = require('underscore'); | |
} else { | |
__ = _; | |
} | |
$.ajaxSetup({ | |
headers: { | |
"Authorization": player._oauth.header | |
} | |
}); | |
if (module.exports != null) { | |
module.exports = player; | |
} |