2lemetry CORS + browserify + angular
by franklovecchio
HTML
<script src="http://www.webtoolkit.info/djs/webtoolkit.base64.js"></script>
<script src="https://gist.github.com/franklovecchio/21e291f495b85617291b/raw/99ca39332736873cd4e82c8767d2054eaae01933/api.js"></script>
<div ng-controller="Page">
<button ng-click="help()">help</button>
<button ng-click="test()">account, get</button>
</div>
CoffeeScript
@Page = ($scope, $http, $timeout) ->
$scope.help = () -> api.help()
###class ApiInterface
raw: '{"auth":{"authenticate":"GET"},"account":{"getAccount": "GET"}}'
help: () -> console.log 'help'
setup: () ->
console.log "new ApiInterface with #{@opts.username} and #{@opts.password}"
for fn,def of JSON.parse @raw
console.log "Creating proto #{fn}"
for key,val of def
console.log "Adding function #{key} as type #{val}"
@[fn] = { }
@[fn][key] = { }
@[fn][key].raw = @raw
@[fn][key].info = key
@[fn][key].http = { }
@[fn][key].http.get = @get
@[fn][key].help = () -> console.log @info
@[fn][key].exec = (opts) -> # Opts are not post params, those are just built?
if @info is 'authenticate' # pretend
url = 'https://api-v2.m2m.io/2/auth'
if @info is 'getAccount'
url = 'https://api-v2.m2m.io/2/account'
@http.get url, opts
constructor: (@opts) -> @setup()###
class Api extends ApiInterface
constructor: (@opts) ->
# Must be called if overriding.
@setup()
# validate user/pass
# Create a config object to store auth headers.
@config = { }
$http.defaults.useXDomain = true
@config = @getBasicAuthHeader()
@auth.authenticate.exec
cb: (resp) =>
console.log resp
@token = resp.token
@config = @getBearerHeader()
console.log 'new config: ' + JSON.stringify(@config)
# TODO validate token
@opts.cb resp
getBasicAuthHeader: () ->
userPass = @base64Encode "#{@opts.username}:#{@opts.password}"
headers:
...