X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=api.coffee;h=318531f6656966a5ff925a1696997eb751c889ba;hb=f4eb811f6b6194f889c676fa7fd327fd1f50789f;hp=cda3905abb0d3892dad6482f8b39263ce4b56623;hpb=d20d81a40aaf14801c8be6b94ff2e97dd54f15a1;p=af-coffee.git diff --git a/api.coffee b/api.coffee index cda3905..318531f 100644 --- a/api.coffee +++ b/api.coffee @@ -92,10 +92,7 @@ request = (method, path, content_type, data, token, callback) -> method: method headers: 'Content-Type': content_type opts.headers['Authorization'] = token if token? - # no Accept header: -> unsupported media type - opts.headers['Accept'] = '*/*;q=0.8' # -> bad request (in json) - #opts.headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' # -> bad request (in json) or blank 404 - #opts.headers['Accept'] = 'application/json' -> unsupported media type + opts.headers['Accept'] = '*/*;q=0.8' async.waterfall [ (callback) -> if content_type is 'multipart/form-data' @@ -138,6 +135,8 @@ request = (method, path, content_type, data, token, callback) -> req.end() ], callback +# send json +# try parsing result as json, and fall back to returning string json_request = (method, path, data, token, callback) -> if data? data = JSON.stringify data @@ -148,7 +147,8 @@ json_request = (method, path, data, token, callback) -> try callback null, JSON.parse(response) catch error - callback "Error: AF server returned invalid JSON for #{method} to #{path}: \"#{response}\"" + # some api calls return plain text + callback null, response json_get = (path, token, callback) -> json_request 'GET', path, null, token, callback @@ -171,14 +171,7 @@ exports.login = login = (username, password, callback) -> exports.app_publish = (token, app_name, zip_file, callback) -> exports.app_update_files token, app_name, zip_file, (err) -> return callback err if err? - # FIXME add "restart" call that only calls app_info once - exports.app_stop token, app_name, (err) -> - if err? - return callback "Couldn't stop the app (to restart it). App is probably still running old version (though perhaps accessing new files.). Server responded: #{err}" - exports.app_start token, app_name, (err) -> - if err? - return callback "CRITICAL ERROR: Couldn't start the app back up! Server responded: #{err}" - callback() + exports.app_restart token, app_name, callback exports.app_update_files = (token, app_name, zip_file, callback) -> request( @@ -200,10 +193,13 @@ exports.app_set_info = (token, app_name, info, callback) -> json_put "/apps/#{app_name}", info, token, callback app_set_state = (token, app_name, state, callback) -> - exports.app_info token, app_name, (err, info) -> - return callback err if err? - info.state = state - exports.app_set_info token, app_name, info, callback + async.waterfall [ + (callback) -> + exports.app_info token, app_name, callback + (info, callback) -> + info.state = state + exports.app_set_info token, app_name, info, callback + ], callback exports.app_start = (token, app_name, callback) -> app_set_state token, app_name, 'STARTED', callback @@ -211,6 +207,13 @@ exports.app_start = (token, app_name, callback) -> exports.app_stop = (token, app_name, callback) -> app_set_state token, app_name, 'STOPPED', callback +exports.app_restart = (token, app_name, callback) -> + # Server requires you to fetch the app state before each call to change + # it, so there's no quicker way than just calling app_stop then app_start + async.waterfall [ + (callback) -> exports.app_stop token, app_name, callback + (callback) -> exports.app_start token, app_name, callback + ], callback app_get = (path) -> return (token, app_name, callback) ->