Funkin/source/io/newgrounds/objects/Session.hx

65 lines
1.7 KiB
Haxe

package io.newgrounds.objects;
class Session extends Object {
/** If true, the session_id is expired. Use App.startSession to get a new one.*/
public var expired(default, null):Bool;
/** A unique session identifier */
public var id(default, null):String;
/** If the session has no associated user but is not expired, this property will provide a URL that can be used to sign the user in. */
public var passportUrl(default, null):String;
/** If true, the user would like you to remember their session id. */
public var remember(default, null):Bool;
/** If the user has not signed in, or granted access to your app, this will be null */
public var user(default, null):User;
//TODO:desciption
public var status(get, never):SessionStatus;
public function new(core:NGLite, data:Dynamic = null) { super(core, data); }
override public function parse(data:Dynamic):Void {
id = data.id;
expired = data.expired;
passportUrl = data.passport_url;
remember = data.remember;
// --- KEEP THE SAME INSTANCE
if (user == null)
user = data.user;
// TODO?: update original user instance with new data. (probly not)
super.parse(data);
}
public function get_status():SessionStatus {
if (expired || id == null || id == "")
return SessionStatus.SESSION_EXPIRED;
if (user != null && user.name != null && user.name != "")
return SessionStatus.USER_LOADED;
return SessionStatus.REQUEST_LOGIN;
}
public function expire():Void {
expired = true;
id = null;
user = null;
}
}
@:enum
abstract SessionStatus(String) {
var SESSION_EXPIRED = "session-expired";
var REQUEST_LOGIN = "request-login";
var USER_LOADED = "user-loaded";
}