package com.uservoice.uservoicesdk.model;
import com.uservoice.uservoicesdk.Session;
import com.uservoice.uservoicesdk.rest.Callback;
import com.uservoice.uservoicesdk.rest.RestTaskCallback;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class User extends BaseModel {
private String name;
private String email;
public static void discover(String email, final Callback<User> callback) {
Map<String, String> params = new HashMap<String, String>();
params.put("email", email);
doGet(apiPath("/users/discover.json"), params, new RestTaskCallback(callback) {
@Override
public void onComplete(JSONObject result) throws JSONException {
callback.onModel(deserializeObject(result, "user", User.class));
}
});
}
public static void loadCurrentUser(final Callback<User> callback) {
doGet(apiPath("/users/current.json"), new RestTaskCallback(callback) {
@Override
public void onComplete(JSONObject object) throws JSONException {
callback.onModel(deserializeObject(object, "user", User.class));
}
});
}
public static void findOrCreate(String email, String name, String guid, final Callback<AccessTokenResult<User>> callback) {
Map<String, String> params = new HashMap<String, String>();
params.put("user[display_name]", name);
params.put("user[email]", email);
params.put("user[guid]", guid);
params.put("request_token", Session.getInstance().getRequestToken().getKey());
doPost(apiPath("/users/find_or_create.json"), params, new RestTaskCallback(callback) {
@Override
public void onComplete(JSONObject result) throws JSONException {
AccessToken accessToken = deserializeObject(result, "token", AccessToken.class);
User user = deserializeObject(result, "user", User.class);
callback.onModel(new AccessTokenResult<User>(user, accessToken));
}
});
}
public static void findOrCreate(String email, String name, final Callback<AccessTokenResult<User>> callback) {
Map<String, String> params = new HashMap<String, String>();
params.put("user[display_name]", name);
params.put("user[email]", email);
params.put("request_token", Session.getInstance().getRequestToken().getKey());
doPost(apiPath("/users.json"), params, new RestTaskCallback(callback) {
@Override
public void onComplete(JSONObject result) throws JSONException {
AccessToken accessToken = deserializeObject(result, "token", AccessToken.class);
User user = deserializeObject(result, "user", User.class);
callback.onModel(new AccessTokenResult<User>(user, accessToken));
}
});
}
public static void sendForgotPassword(String email, final Callback<User> callback) {
Map<String, String> params = new HashMap<String, String>();
params.put("user[email]", email);
doGet(apiPath("/users/forgot_password.json"), params, new RestTaskCallback(callback) {
@Override
public void onComplete(JSONObject result) throws JSONException {
callback.onModel(deserializeObject(result, "user", User.class));
}
});
}
@Override
public void load(JSONObject object) throws JSONException {
super.load(object);
name = getString(object, "name");
email = getString(object, "email");
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
}