SlideShare a Scribd company logo
1 of 45
Download to read offline
Creating a Facebook Clone - Part XXVII
public class ServerAPI {
private static User me;
public static final String BASE_URL = "http://localhost:8080/";
private static String token;
private static RequestBuilder get(String path) {
if(token != null) {
return Rest.get(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.get(BASE_URL + path).jsonContent();
}
private static RequestBuilder post(String path) {
if(token != null) {
return Rest.post(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.post(BASE_URL + path).jsonContent();
}
ServerAPI
public class ServerAPI {
private static User me;
public static final String BASE_URL = "http://localhost:8080/";
private static String token;
private static RequestBuilder get(String path) {
if(token != null) {
return Rest.get(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.get(BASE_URL + path).jsonContent();
}
private static RequestBuilder post(String path) {
if(token != null) {
return Rest.post(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.post(BASE_URL + path).jsonContent();
}
ServerAPI
public class ServerAPI {
private static User me;
public static final String BASE_URL = "http://localhost:8080/";
private static String token;
private static RequestBuilder get(String path) {
if(token != null) {
return Rest.get(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.get(BASE_URL + path).jsonContent();
}
private static RequestBuilder post(String path) {
if(token != null) {
return Rest.post(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.post(BASE_URL + path).jsonContent();
}
ServerAPI
public class ServerAPI {
private static User me;
public static final String BASE_URL = "http://localhost:8080/";
private static String token;
private static RequestBuilder get(String path) {
if(token != null) {
return Rest.get(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.get(BASE_URL + path).jsonContent();
}
private static RequestBuilder post(String path) {
if(token != null) {
return Rest.post(BASE_URL + path).
header("auth", token).jsonContent();
}
return Rest.post(BASE_URL + path).jsonContent();
}
ServerAPI
}
return Rest.post(BASE_URL + path).jsonContent();
}
public static boolean isLoggedIn() {
token = Preferences.get("authtoken", null);
return token != null;
}
public static void login(User u, Callback<User> callback) {
signupOrLogin("user/login", u, callback);
}
private static void signupOrLogin(String url, User u,
final Callback<User> callback) {
post(url).
body(u.getPropertyIndex().toJSON()).
getAsJsonMap(
new Callback<Response<Map>>() {
@Override
public void onSucess(Response<Map> value) {
if(value.getResponseCode() != 200) {
callback.onError(u, null, value.
getResponseCode(),
ServerAPI
token = Preferences.get("authtoken", null);
return token != null;
}
public static void login(User u, Callback<User> callback) {
signupOrLogin("user/login", u, callback);
}
private static void signupOrLogin(String url, User u,
final Callback<User> callback) {
post(url).
body(u.getPropertyIndex().toJSON()).
getAsJsonMap(
new Callback<Response<Map>>() {
@Override
public void onSucess(Response<Map> value) {
if(value.getResponseCode() != 200) {
callback.onError(u, null, value.
getResponseCode(),
"Login Error");
return;
}
me = new User();
me.getPropertyIndex().
ServerAPI
public static void login(User u, Callback<User> callback) {
signupOrLogin("user/login", u, callback);
}
private static void signupOrLogin(String url, User u,
final Callback<User> callback) {
post(url).
body(u.getPropertyIndex().toJSON()).
getAsJsonMap(
new Callback<Response<Map>>() {
@Override
public void onSucess(Response<Map> value) {
if(value.getResponseCode() != 200) {
callback.onError(u, null, value.
getResponseCode(),
"Login Error");
return;
}
me = new User();
me.getPropertyIndex().
populateFromMap(value.getResponseData());
Preferences.set("authtoken", me.authtoken.
get());
token = me.authtoken.get();
ServerAPI
public static void login(User u, Callback<User> callback) {
signupOrLogin("user/login", u, callback);
}
private static void signupOrLogin(String url, User u,
final Callback<User> callback) {
post(url).
body(u.getPropertyIndex().toJSON()).
getAsJsonMap(
new Callback<Response<Map>>() {
@Override
public void onSucess(Response<Map> value) {
if(value.getResponseCode() != 200) {
callback.onError(u, null, value.
getResponseCode(),
"Login Error");
return;
}
me = new User();
me.getPropertyIndex().
populateFromMap(value.getResponseData());
Preferences.set("authtoken", me.authtoken.
get());
token = me.authtoken.get();
ServerAPI
public static void login(User u, Callback<User> callback) {
signupOrLogin("user/login", u, callback);
}
private static void signupOrLogin(String url, User u,
final Callback<User> callback) {
post(url).
body(u.getPropertyIndex().toJSON()).
getAsJsonMap(
new Callback<Response<Map>>() {
@Override
public void onSucess(Response<Map> value) {
if(value.getResponseCode() != 200) {
callback.onError(u, null, value.
getResponseCode(),
"Login Error");
return;
}
me = new User();
me.getPropertyIndex().
populateFromMap(value.getResponseData());
Preferences.set("authtoken", me.authtoken.
get());
token = me.authtoken.get();
ServerAPI
public static void login(User u, Callback<User> callback) {
signupOrLogin("user/login", u, callback);
}
private static void signupOrLogin(String url, User u,
final Callback<User> callback) {
post(url).
body(u.getPropertyIndex().toJSON()).
getAsJsonMap(
new Callback<Response<Map>>() {
@Override
public void onSucess(Response<Map> value) {
if(value.getResponseCode() != 200) {
callback.onError(u, null, value.
getResponseCode(),
"Login Error");
return;
}
me = new User();
me.getPropertyIndex().
populateFromMap(value.getResponseData());
Preferences.set("authtoken", me.authtoken.
get());
token = me.authtoken.get();
ServerAPI
callback.onError(u, null, value.
getResponseCode(),
"Login Error");
return;
}
me = new User();
me.getPropertyIndex().
populateFromMap(value.getResponseData());
Preferences.set("authtoken", me.authtoken.
get());
token = me.authtoken.get();
me.getPropertyIndex().storeJSON("me.json");
callback.onSucess(me);
}
@Override
public void onError(Object sender, Throwable err,
int errorCode, String errorMessage) {
callback.onError(sender, err, errorCode,
errorMessage);
}
});
}
ServerAPI
@Override
public void onError(Object sender, Throwable err,
int errorCode, String errorMessage) {
callback.onError(sender, err, errorCode,
errorMessage);
}
});
}
public static void refreshMe() {
Response<Map> map = get("user/refresh").getAsJsonMap();
if(map.getResponseCode() == 200) {
me = new User();
me.getPropertyIndex().
populateFromMap(map.getResponseData());
me.getPropertyIndex().storeJSON("me.json");
}
}
public static void signup(User u, Callback<User> callback) {
signupOrLogin("user/signup", u, callback);
}
ServerAPI
@Override
public void onError(Object sender, Throwable err,
int errorCode, String errorMessage) {
callback.onError(sender, err, errorCode,
errorMessage);
}
});
}
public static void refreshMe() {
Response<Map> map = get("user/refresh").getAsJsonMap();
if(map.getResponseCode() == 200) {
me = new User();
me.getPropertyIndex().
populateFromMap(map.getResponseData());
me.getPropertyIndex().storeJSON("me.json");
}
}
public static void signup(User u, Callback<User> callback) {
signupOrLogin("user/signup", u, callback);
}
ServerAPI
@Override
public void onError(Object sender, Throwable err,
int errorCode, String errorMessage) {
callback.onError(sender, err, errorCode,
errorMessage);
}
});
}
public static void refreshMe() {
Response<Map> map = get("user/refresh").getAsJsonMap();
if(map.getResponseCode() == 200) {
me = new User();
me.getPropertyIndex().
populateFromMap(map.getResponseData());
me.getPropertyIndex().storeJSON("me.json");
}
}
public static void signup(User u, Callback<User> callback) {
signupOrLogin("user/signup", u, callback);
}
ServerAPI
public static void signup(User u, Callback<User> callback) {
signupOrLogin("user/signup", u, callback);
}
public static boolean verifyUser(String code, boolean email) {
Response<String> s = get("user/verify").
queryParam("code", code).
queryParam("email", "" + email).getAsString();
return "OK".equals(s.getResponseData());
}
public static boolean update(User u) {
Response<String> s = post("user/update").
body(u.getPropertyIndex().toJSON()).getAsString();
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
public static boolean setAvatar(String media) {
Response<String> s = get("user/set-avatar").
queryParam("media", media).getAsString();
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
ServerAPI
public static void signup(User u, Callback<User> callback) {
signupOrLogin("user/signup", u, callback);
}
public static boolean verifyUser(String code, boolean email) {
Response<String> s = get("user/verify").
queryParam("code", code).
queryParam("email", "" + email).getAsString();
return "OK".equals(s.getResponseData());
}
public static boolean update(User u) {
Response<String> s = post("user/update").
body(u.getPropertyIndex().toJSON()).getAsString();
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
public static boolean setAvatar(String media) {
Response<String> s = get("user/set-avatar").
queryParam("media", media).getAsString();
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
ServerAPI
public static void signup(User u, Callback<User> callback) {
signupOrLogin("user/signup", u, callback);
}
public static boolean verifyUser(String code, boolean email) {
Response<String> s = get("user/verify").
queryParam("code", code).
queryParam("email", "" + email).getAsString();
return "OK".equals(s.getResponseData());
}
public static boolean update(User u) {
Response<String> s = post("user/update").
body(u.getPropertyIndex().toJSON()).getAsString();
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
public static boolean setAvatar(String media) {
Response<String> s = get("user/set-avatar").
queryParam("media", media).getAsString();
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
ServerAPI
me.getPropertyIndex().storeJSON("me.json");
return "OK".equals(s.getResponseData());
}
public static boolean sendFriendRequest(String userId) {
Response<String> s = get("user/send-friend-request").
queryParam("userId", userId).getAsString();
return "OK".equals(s.getResponseData());
}
public static boolean acceptFriendRequest(String userId) {
Response<String> s = get("user/accept-friend-request").
queryParam("userId", userId).getAsString();
return "OK".equals(s.getResponseData());
}
private static String contactsToJSON(Contact[] contacts) {
StringBuilder content = new StringBuilder("[");
boolean first = true;
for(Contact c : contacts) {
String dname = c.getDisplayName();
if(dname != null) {
if(!first) {
content.append(",");
ServerAPI
}
}
}
}
String email = c.getPrimaryEmail();
if(email != null) {
data.put("email", email);
}
content.append(JSONParser.mapToJson(data));
}
}
content.append("]");
return content.toString();
}
public static boolean uploadContacts(Contact[] contacts) {
Response<String> s = post("user/contacts").
body(contactsToJSON(contacts)).getAsString();
return "OK".equals(s.getResponseData());
}
public static void uploadMedia(String mime, String role,
String visibility,
String fileName, byte[] data,
ServerAPI
public static boolean acceptFriendRequest(String userId) {
Response<String> s = get("user/accept-friend-request").
queryParam("userId", userId).getAsString();
return "OK".equals(s.getResponseData());
}
private static String contactsToJSON(Contact[] contacts) {
StringBuilder content = new StringBuilder("[");
boolean first = true;
for(Contact c : contacts) {
String dname = c.getDisplayName();
if(dname != null) {
if(!first) {
content.append(",");
}
first = false;
Map<String, String> data = new HashMap();
data.put("fullName", dname);
String phone = c.getPrimaryPhoneNumber();
if(phone != null) {
data.put("phone", phone);
Map phones = c.getPhoneNumbers();
if(phones != null && phones.size() > 1) {
for(Object p : phones.values()) {
ServerAPI
return "OK".equals(s.getResponseData());
}
private static String contactsToJSON(Contact[] contacts) {
StringBuilder content = new StringBuilder("[");
boolean first = true;
for(Contact c : contacts) {
String dname = c.getDisplayName();
if(dname != null) {
if(!first) {
content.append(",");
}
first = false;
Map<String, String> data = new HashMap();
data.put("fullName", dname);
String phone = c.getPrimaryPhoneNumber();
if(phone != null) {
data.put("phone", phone);
Map phones = c.getPhoneNumbers();
if(phones != null && phones.size() > 1) {
for(Object p : phones.values()) {
if(!p.equals(phone)) {
data.put("secondaryPhone", phone);
break;
ServerAPI
StringBuilder content = new StringBuilder("[");
boolean first = true;
for(Contact c : contacts) {
String dname = c.getDisplayName();
if(dname != null) {
if(!first) {
content.append(",");
}
first = false;
Map<String, String> data = new HashMap();
data.put("fullName", dname);
String phone = c.getPrimaryPhoneNumber();
if(phone != null) {
data.put("phone", phone);
Map phones = c.getPhoneNumbers();
if(phones != null && phones.size() > 1) {
for(Object p : phones.values()) {
if(!p.equals(phone)) {
data.put("secondaryPhone", phone);
break;
}
}
}
}
ServerAPI
first = false;
Map<String, String> data = new HashMap();
data.put("fullName", dname);
String phone = c.getPrimaryPhoneNumber();
if(phone != null) {
data.put("phone", phone);
Map phones = c.getPhoneNumbers();
if(phones != null && phones.size() > 1) {
for(Object p : phones.values()) {
if(!p.equals(phone)) {
data.put("secondaryPhone", phone);
break;
}
}
}
}
String email = c.getPrimaryEmail();
if(email != null) {
data.put("email", email);
}
content.append(JSONParser.mapToJson(data));
}
}
content.append("]");
ServerAPI
first = false;
Map<String, String> data = new HashMap();
data.put("fullName", dname);
String phone = c.getPrimaryPhoneNumber();
if(phone != null) {
data.put("phone", phone);
Map phones = c.getPhoneNumbers();
if(phones != null && phones.size() > 1) {
for(Object p : phones.values()) {
if(!p.equals(phone)) {
data.put("secondaryPhone", phone);
break;
}
}
}
}
String email = c.getPrimaryEmail();
if(email != null) {
data.put("email", email);
}
content.append(JSONParser.mapToJson(data));
}
}
content.append("]");
ServerAPI
String phone = c.getPrimaryPhoneNumber();
if(phone != null) {
data.put("phone", phone);
Map phones = c.getPhoneNumbers();
if(phones != null && phones.size() > 1) {
for(Object p : phones.values()) {
if(!p.equals(phone)) {
data.put("secondaryPhone", phone);
break;
}
}
}
}
String email = c.getPrimaryEmail();
if(email != null) {
data.put("email", email);
}
content.append(JSONParser.mapToJson(data));
}
}
content.append("]");
return content.toString();
}
ServerAPI
Response<String> s = post("user/contacts").
body(contactsToJSON(contacts)).getAsString();
return "OK".equals(s.getResponseData());
}
public static void uploadMedia(String mime, String role,
String visibility,
String fileName, byte[] data,
SuccessCallback<String> callback) {
MultipartRequest mp = new MultipartRequest() {
private String mediaId;
@Override
protected void readResponse(InputStream input)
throws IOException {
mediaId = Util.readToString(input);
}
@Override
protected void postResponse() {
callback.onSucess(mediaId);
}
};
mp.setUrl(BASE_URL + "media/upload");
ServerAPI
Response<String> s = post("user/contacts").
body(contactsToJSON(contacts)).getAsString();
return "OK".equals(s.getResponseData());
}
public static void uploadMedia(String mime, String role,
String visibility,
String fileName, byte[] data,
SuccessCallback<String> callback) {
MultipartRequest mp = new MultipartRequest() {
private String mediaId;
@Override
protected void readResponse(InputStream input)
throws IOException {
mediaId = Util.readToString(input);
}
@Override
protected void postResponse() {
callback.onSucess(mediaId);
}
};
mp.setUrl(BASE_URL + "media/upload");
ServerAPI
Response<String> s = post("user/contacts").
body(contactsToJSON(contacts)).getAsString();
return "OK".equals(s.getResponseData());
}
public static void uploadMedia(String mime, String role,
String visibility,
String fileName, byte[] data,
SuccessCallback<String> callback) {
MultipartRequest mp = new MultipartRequest() {
private String mediaId;
@Override
protected void readResponse(InputStream input)
throws IOException {
mediaId = Util.readToString(input);
}
@Override
protected void postResponse() {
callback.onSucess(mediaId);
}
};
mp.setUrl(BASE_URL + "media/upload");
ServerAPI
Response<String> s = post("user/contacts").
body(contactsToJSON(contacts)).getAsString();
return "OK".equals(s.getResponseData());
}
public static void uploadMedia(String mime, String role,
String visibility,
String fileName, byte[] data,
SuccessCallback<String> callback) {
MultipartRequest mp = new MultipartRequest() {
private String mediaId;
@Override
protected void readResponse(InputStream input)
throws IOException {
mediaId = Util.readToString(input);
}
@Override
protected void postResponse() {
callback.onSucess(mediaId);
}
};
mp.setUrl(BASE_URL + "media/upload");
ServerAPI
SuccessCallback<String> callback) {
MultipartRequest mp = new MultipartRequest() {
private String mediaId;
@Override
protected void readResponse(InputStream input)
throws IOException {
mediaId = Util.readToString(input);
}
@Override
protected void postResponse() {
callback.onSucess(mediaId);
}
};
mp.setUrl(BASE_URL + "media/upload");
mp.addRequestHeader("auth", token);
mp.addRequestHeader("Accept", "application/json");
mp.addArgument("role", role);
mp.addArgument("visibility", visibility);
mp.addData("file", data, mime);
mp.setFilename("file", fileName);
addToQueue(mp);
}
ServerAPI
SuccessCallback<String> callback) {
MultipartRequest mp = new MultipartRequest() {
private String mediaId;
@Override
protected void readResponse(InputStream input)
throws IOException {
mediaId = Util.readToString(input);
}
@Override
protected void postResponse() {
callback.onSucess(mediaId);
}
};
mp.setUrl(BASE_URL + "media/upload");
mp.addRequestHeader("auth", token);
mp.addRequestHeader("Accept", "application/json");
mp.addArgument("role", role);
mp.addArgument("visibility", visibility);
mp.addData("file", data, mime);
mp.setFilename("file", fileName);
addToQueue(mp);
}
ServerAPI
mp.addData("file", data, mime);
mp.setFilename("file", fileName);
addToQueue(mp);
}
public static User me() {
if(me == null && isLoggedIn()) {
me = new User();
me.getPropertyIndex().loadJSON("me.json");
}
return me;
}
public static List<Notification> listNotifications(int page, int size) {
Response<Map> response = get("user/notifications").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap();
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Notification> responseList = new ArrayList<>();
for(Map m : l) {
Notification n = new Notification();
n.getPropertyIndex().populateFromMap(m);
responseList.add(n);
ServerAPI
me.getPropertyIndex().loadJSON("me.json");
}
return me;
}
public static List<Notification> listNotifications(int page, int size) {
Response<Map> response = get("user/notifications").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap();
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Notification> responseList = new ArrayList<>();
for(Map m : l) {
Notification n = new Notification();
n.getPropertyIndex().populateFromMap(m);
responseList.add(n);
}
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
ServerAPI
me.getPropertyIndex().loadJSON("me.json");
}
return me;
}
public static List<Notification> listNotifications(int page, int size) {
Response<Map> response = get("user/notifications").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap();
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Notification> responseList = new ArrayList<>();
for(Map m : l) {
Notification n = new Notification();
n.getPropertyIndex().populateFromMap(m);
responseList.add(n);
}
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
ServerAPI
me.getPropertyIndex().loadJSON("me.json");
}
return me;
}
public static List<Notification> listNotifications(int page, int size) {
Response<Map> response = get("user/notifications").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap();
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Notification> responseList = new ArrayList<>();
for(Map m : l) {
Notification n = new Notification();
n.getPropertyIndex().populateFromMap(m);
responseList.add(n);
}
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
ServerAPI
me.getPropertyIndex().loadJSON("me.json");
}
return me;
}
public static List<Notification> listNotifications(int page, int size) {
Response<Map> response = get("user/notifications").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap();
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Notification> responseList = new ArrayList<>();
for(Map m : l) {
Notification n = new Notification();
n.getPropertyIndex().populateFromMap(m);
responseList.add(n);
}
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
ServerAPI
me.getPropertyIndex().loadJSON("me.json");
}
return me;
}
public static List<Notification> listNotifications(int page, int size) {
Response<Map> response = get("user/notifications").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap();
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Notification> responseList = new ArrayList<>();
for(Map m : l) {
Notification n = new Notification();
n.getPropertyIndex().populateFromMap(m);
responseList.add(n);
}
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
ServerAPI
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Post> responseList = new ArrayList<>();
for(Map m : l) {
Post p = new Post();
p.getPropertyIndex().populateFromMap(m);
responseList.add(p);
}
return responseList;
}
return null;
}
public static List<Post> postsOf(String user, int page, int size) {
return processPostResponse(
get("post/list").
queryParam("user", user).
queryParam("page", "" + page).
ServerAPI
return responseList;
}
return null;
}
private static List<Post> processPostResponse(Response<Map> response) {
if(response.getResponseCode() == 200) {
List<Map> l = (List<Map>) response.getResponseData().get("root");
List<Post> responseList = new ArrayList<>();
for(Map m : l) {
Post p = new Post();
p.getPropertyIndex().populateFromMap(m);
responseList.add(p);
}
return responseList;
}
return null;
}
public static List<Post> postsOf(String user, int page, int size) {
return processPostResponse(
get("post/list").
queryParam("user", user).
queryParam("page", "" + page).
ServerAPI
return responseList;
}
return null;
}
public static List<Post> postsOf(String user, int page, int size) {
return processPostResponse(
get("post/list").
queryParam("user", user).
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap());
}
public static List<Post> newsfeed(int page, int size) {
return processPostResponse(
get("post/feed").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap());
}
public static boolean post(Post pd) {
String key = post("post/new").body(pd.getPropertyIndex().toJSON()).
getAsString().getResponseData();
pd.id.set(key);
ServerAPI
return responseList;
}
return null;
}
public static List<Post> postsOf(String user, int page, int size) {
return processPostResponse(
get("post/list").
queryParam("user", user).
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap());
}
public static List<Post> newsfeed(int page, int size) {
return processPostResponse(
get("post/feed").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap());
}
public static boolean post(Post pd) {
String key = post("post/new").body(pd.getPropertyIndex().toJSON()).
getAsString().getResponseData();
pd.id.set(key);
ServerAPI
get("post/feed").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap());
}
public static boolean post(Post pd) {
String key = post("post/new").body(pd.getPropertyIndex().toJSON()).
getAsString().getResponseData();
pd.id.set(key);
return key != null;
}
public static boolean comment(Comment c) {
Response<String> cm = post("post/comment").
body(c.getPropertyIndex().toJSON()).
getAsString();
if(cm.getResponseCode() != 200) {
return false;
}
c.id.set(cm.getResponseData());
return true;
}
public static boolean like(Post p) {
ServerAPI
get("post/feed").
queryParam("page", "" + page).
queryParam("size", "" + size).getAsJsonMap());
}
public static boolean post(Post pd) {
String key = post("post/new").body(pd.getPropertyIndex().toJSON()).
getAsString().getResponseData();
pd.id.set(key);
return key != null;
}
public static boolean comment(Comment c) {
Response<String> cm = post("post/comment").
body(c.getPropertyIndex().toJSON()).
getAsString();
if(cm.getResponseCode() != 200) {
return false;
}
c.id.set(cm.getResponseData());
return true;
}
public static boolean like(Post p) {
ServerAPI
public static boolean post(Post pd) {
String key = post("post/new").body(pd.getPropertyIndex().toJSON()).
getAsString().getResponseData();
pd.id.set(key);
return key != null;
}
public static boolean comment(Comment c) {
Response<String> cm = post("post/comment").
body(c.getPropertyIndex().toJSON()).
getAsString();
if(cm.getResponseCode() != 200) {
return false;
}
c.id.set(cm.getResponseData());
return true;
}
public static boolean like(Post p) {
String ok = get("post/like").queryParam("postId", p.id.get()).
getAsString().getResponseData();
return ok != null && ok.equals("OK");
}
}
ServerAPI

More Related Content

Similar to Creating a Facebook Clone - Part XXVII.pdf

HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
Dmitry Soshnikov
 

Similar to Creating a Facebook Clone - Part XXVII.pdf (20)

Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
async/await in Swift
async/await in Swiftasync/await in Swift
async/await in Swift
 
Creating a Whatsapp Clone - Part XIV - Transcript.pdf
Creating a Whatsapp Clone - Part XIV - Transcript.pdfCreating a Whatsapp Clone - Part XIV - Transcript.pdf
Creating a Whatsapp Clone - Part XIV - Transcript.pdf
 
Creating an Uber Clone - Part XVIII - Transcript.pdf
Creating an Uber Clone - Part XVIII - Transcript.pdfCreating an Uber Clone - Part XVIII - Transcript.pdf
Creating an Uber Clone - Part XVIII - Transcript.pdf
 
Creating a Facebook Clone - Part XXVI.pdf
Creating a Facebook Clone - Part XXVI.pdfCreating a Facebook Clone - Part XXVI.pdf
Creating a Facebook Clone - Part XXVI.pdf
 
Kotlin : Advanced Tricks - Ubiratan Soares
Kotlin : Advanced Tricks - Ubiratan SoaresKotlin : Advanced Tricks - Ubiratan Soares
Kotlin : Advanced Tricks - Ubiratan Soares
 
Creating an Uber Clone - Part XXXII.pdf
Creating an Uber Clone - Part XXXII.pdfCreating an Uber Clone - Part XXXII.pdf
Creating an Uber Clone - Part XXXII.pdf
 
AngularJS Services
AngularJS ServicesAngularJS Services
AngularJS Services
 
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBTDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
 
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
 
Creating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfCreating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdf
 
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
 
Creating an Uber Clone - Part XVII.pdf
Creating an Uber Clone - Part XVII.pdfCreating an Uber Clone - Part XVII.pdf
Creating an Uber Clone - Part XVII.pdf
 
Jason parsing
Jason parsingJason parsing
Jason parsing
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & REST
 
Reduxing like a pro
Reduxing like a proReduxing like a pro
Reduxing like a pro
 
Finch.io - Purely Functional REST API with Finagle
Finch.io - Purely Functional REST API with FinagleFinch.io - Purely Functional REST API with Finagle
Finch.io - Purely Functional REST API with Finagle
 
jQuery Data Manipulate API - A source code dissecting journey
jQuery Data Manipulate API - A source code dissecting journeyjQuery Data Manipulate API - A source code dissecting journey
jQuery Data Manipulate API - A source code dissecting journey
 
Stop Making Excuses and Start Testing Your JavaScript
Stop Making Excuses and Start Testing Your JavaScriptStop Making Excuses and Start Testing Your JavaScript
Stop Making Excuses and Start Testing Your JavaScript
 

More from ShaiAlmog1

More from ShaiAlmog1 (20)

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdf
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdf
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdf
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdf
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdf
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdf
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdf
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdf
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdf
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdf
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdf
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdf
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdf
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdf
 

Recently uploaded

Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 

Recently uploaded (20)

ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdfFrisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
Frisco Automating Purchase Orders with MuleSoft IDP- May 10th, 2024.pptx.pdf
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 

Creating a Facebook Clone - Part XXVII.pdf

  • 1. Creating a Facebook Clone - Part XXVII
  • 2. public class ServerAPI { private static User me; public static final String BASE_URL = "http://localhost:8080/"; private static String token; private static RequestBuilder get(String path) { if(token != null) { return Rest.get(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.get(BASE_URL + path).jsonContent(); } private static RequestBuilder post(String path) { if(token != null) { return Rest.post(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.post(BASE_URL + path).jsonContent(); } ServerAPI
  • 3. public class ServerAPI { private static User me; public static final String BASE_URL = "http://localhost:8080/"; private static String token; private static RequestBuilder get(String path) { if(token != null) { return Rest.get(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.get(BASE_URL + path).jsonContent(); } private static RequestBuilder post(String path) { if(token != null) { return Rest.post(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.post(BASE_URL + path).jsonContent(); } ServerAPI
  • 4. public class ServerAPI { private static User me; public static final String BASE_URL = "http://localhost:8080/"; private static String token; private static RequestBuilder get(String path) { if(token != null) { return Rest.get(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.get(BASE_URL + path).jsonContent(); } private static RequestBuilder post(String path) { if(token != null) { return Rest.post(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.post(BASE_URL + path).jsonContent(); } ServerAPI
  • 5. public class ServerAPI { private static User me; public static final String BASE_URL = "http://localhost:8080/"; private static String token; private static RequestBuilder get(String path) { if(token != null) { return Rest.get(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.get(BASE_URL + path).jsonContent(); } private static RequestBuilder post(String path) { if(token != null) { return Rest.post(BASE_URL + path). header("auth", token).jsonContent(); } return Rest.post(BASE_URL + path).jsonContent(); } ServerAPI
  • 6. } return Rest.post(BASE_URL + path).jsonContent(); } public static boolean isLoggedIn() { token = Preferences.get("authtoken", null); return token != null; } public static void login(User u, Callback<User> callback) { signupOrLogin("user/login", u, callback); } private static void signupOrLogin(String url, User u, final Callback<User> callback) { post(url). body(u.getPropertyIndex().toJSON()). getAsJsonMap( new Callback<Response<Map>>() { @Override public void onSucess(Response<Map> value) { if(value.getResponseCode() != 200) { callback.onError(u, null, value. getResponseCode(), ServerAPI
  • 7. token = Preferences.get("authtoken", null); return token != null; } public static void login(User u, Callback<User> callback) { signupOrLogin("user/login", u, callback); } private static void signupOrLogin(String url, User u, final Callback<User> callback) { post(url). body(u.getPropertyIndex().toJSON()). getAsJsonMap( new Callback<Response<Map>>() { @Override public void onSucess(Response<Map> value) { if(value.getResponseCode() != 200) { callback.onError(u, null, value. getResponseCode(), "Login Error"); return; } me = new User(); me.getPropertyIndex(). ServerAPI
  • 8. public static void login(User u, Callback<User> callback) { signupOrLogin("user/login", u, callback); } private static void signupOrLogin(String url, User u, final Callback<User> callback) { post(url). body(u.getPropertyIndex().toJSON()). getAsJsonMap( new Callback<Response<Map>>() { @Override public void onSucess(Response<Map> value) { if(value.getResponseCode() != 200) { callback.onError(u, null, value. getResponseCode(), "Login Error"); return; } me = new User(); me.getPropertyIndex(). populateFromMap(value.getResponseData()); Preferences.set("authtoken", me.authtoken. get()); token = me.authtoken.get(); ServerAPI
  • 9. public static void login(User u, Callback<User> callback) { signupOrLogin("user/login", u, callback); } private static void signupOrLogin(String url, User u, final Callback<User> callback) { post(url). body(u.getPropertyIndex().toJSON()). getAsJsonMap( new Callback<Response<Map>>() { @Override public void onSucess(Response<Map> value) { if(value.getResponseCode() != 200) { callback.onError(u, null, value. getResponseCode(), "Login Error"); return; } me = new User(); me.getPropertyIndex(). populateFromMap(value.getResponseData()); Preferences.set("authtoken", me.authtoken. get()); token = me.authtoken.get(); ServerAPI
  • 10. public static void login(User u, Callback<User> callback) { signupOrLogin("user/login", u, callback); } private static void signupOrLogin(String url, User u, final Callback<User> callback) { post(url). body(u.getPropertyIndex().toJSON()). getAsJsonMap( new Callback<Response<Map>>() { @Override public void onSucess(Response<Map> value) { if(value.getResponseCode() != 200) { callback.onError(u, null, value. getResponseCode(), "Login Error"); return; } me = new User(); me.getPropertyIndex(). populateFromMap(value.getResponseData()); Preferences.set("authtoken", me.authtoken. get()); token = me.authtoken.get(); ServerAPI
  • 11. public static void login(User u, Callback<User> callback) { signupOrLogin("user/login", u, callback); } private static void signupOrLogin(String url, User u, final Callback<User> callback) { post(url). body(u.getPropertyIndex().toJSON()). getAsJsonMap( new Callback<Response<Map>>() { @Override public void onSucess(Response<Map> value) { if(value.getResponseCode() != 200) { callback.onError(u, null, value. getResponseCode(), "Login Error"); return; } me = new User(); me.getPropertyIndex(). populateFromMap(value.getResponseData()); Preferences.set("authtoken", me.authtoken. get()); token = me.authtoken.get(); ServerAPI
  • 12. callback.onError(u, null, value. getResponseCode(), "Login Error"); return; } me = new User(); me.getPropertyIndex(). populateFromMap(value.getResponseData()); Preferences.set("authtoken", me.authtoken. get()); token = me.authtoken.get(); me.getPropertyIndex().storeJSON("me.json"); callback.onSucess(me); } @Override public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { callback.onError(sender, err, errorCode, errorMessage); } }); } ServerAPI
  • 13. @Override public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { callback.onError(sender, err, errorCode, errorMessage); } }); } public static void refreshMe() { Response<Map> map = get("user/refresh").getAsJsonMap(); if(map.getResponseCode() == 200) { me = new User(); me.getPropertyIndex(). populateFromMap(map.getResponseData()); me.getPropertyIndex().storeJSON("me.json"); } } public static void signup(User u, Callback<User> callback) { signupOrLogin("user/signup", u, callback); } ServerAPI
  • 14. @Override public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { callback.onError(sender, err, errorCode, errorMessage); } }); } public static void refreshMe() { Response<Map> map = get("user/refresh").getAsJsonMap(); if(map.getResponseCode() == 200) { me = new User(); me.getPropertyIndex(). populateFromMap(map.getResponseData()); me.getPropertyIndex().storeJSON("me.json"); } } public static void signup(User u, Callback<User> callback) { signupOrLogin("user/signup", u, callback); } ServerAPI
  • 15. @Override public void onError(Object sender, Throwable err, int errorCode, String errorMessage) { callback.onError(sender, err, errorCode, errorMessage); } }); } public static void refreshMe() { Response<Map> map = get("user/refresh").getAsJsonMap(); if(map.getResponseCode() == 200) { me = new User(); me.getPropertyIndex(). populateFromMap(map.getResponseData()); me.getPropertyIndex().storeJSON("me.json"); } } public static void signup(User u, Callback<User> callback) { signupOrLogin("user/signup", u, callback); } ServerAPI
  • 16. public static void signup(User u, Callback<User> callback) { signupOrLogin("user/signup", u, callback); } public static boolean verifyUser(String code, boolean email) { Response<String> s = get("user/verify"). queryParam("code", code). queryParam("email", "" + email).getAsString(); return "OK".equals(s.getResponseData()); } public static boolean update(User u) { Response<String> s = post("user/update"). body(u.getPropertyIndex().toJSON()).getAsString(); me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } public static boolean setAvatar(String media) { Response<String> s = get("user/set-avatar"). queryParam("media", media).getAsString(); me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } ServerAPI
  • 17. public static void signup(User u, Callback<User> callback) { signupOrLogin("user/signup", u, callback); } public static boolean verifyUser(String code, boolean email) { Response<String> s = get("user/verify"). queryParam("code", code). queryParam("email", "" + email).getAsString(); return "OK".equals(s.getResponseData()); } public static boolean update(User u) { Response<String> s = post("user/update"). body(u.getPropertyIndex().toJSON()).getAsString(); me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } public static boolean setAvatar(String media) { Response<String> s = get("user/set-avatar"). queryParam("media", media).getAsString(); me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } ServerAPI
  • 18. public static void signup(User u, Callback<User> callback) { signupOrLogin("user/signup", u, callback); } public static boolean verifyUser(String code, boolean email) { Response<String> s = get("user/verify"). queryParam("code", code). queryParam("email", "" + email).getAsString(); return "OK".equals(s.getResponseData()); } public static boolean update(User u) { Response<String> s = post("user/update"). body(u.getPropertyIndex().toJSON()).getAsString(); me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } public static boolean setAvatar(String media) { Response<String> s = get("user/set-avatar"). queryParam("media", media).getAsString(); me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } ServerAPI
  • 19. me.getPropertyIndex().storeJSON("me.json"); return "OK".equals(s.getResponseData()); } public static boolean sendFriendRequest(String userId) { Response<String> s = get("user/send-friend-request"). queryParam("userId", userId).getAsString(); return "OK".equals(s.getResponseData()); } public static boolean acceptFriendRequest(String userId) { Response<String> s = get("user/accept-friend-request"). queryParam("userId", userId).getAsString(); return "OK".equals(s.getResponseData()); } private static String contactsToJSON(Contact[] contacts) { StringBuilder content = new StringBuilder("["); boolean first = true; for(Contact c : contacts) { String dname = c.getDisplayName(); if(dname != null) { if(!first) { content.append(","); ServerAPI
  • 20. } } } } String email = c.getPrimaryEmail(); if(email != null) { data.put("email", email); } content.append(JSONParser.mapToJson(data)); } } content.append("]"); return content.toString(); } public static boolean uploadContacts(Contact[] contacts) { Response<String> s = post("user/contacts"). body(contactsToJSON(contacts)).getAsString(); return "OK".equals(s.getResponseData()); } public static void uploadMedia(String mime, String role, String visibility, String fileName, byte[] data, ServerAPI
  • 21. public static boolean acceptFriendRequest(String userId) { Response<String> s = get("user/accept-friend-request"). queryParam("userId", userId).getAsString(); return "OK".equals(s.getResponseData()); } private static String contactsToJSON(Contact[] contacts) { StringBuilder content = new StringBuilder("["); boolean first = true; for(Contact c : contacts) { String dname = c.getDisplayName(); if(dname != null) { if(!first) { content.append(","); } first = false; Map<String, String> data = new HashMap(); data.put("fullName", dname); String phone = c.getPrimaryPhoneNumber(); if(phone != null) { data.put("phone", phone); Map phones = c.getPhoneNumbers(); if(phones != null && phones.size() > 1) { for(Object p : phones.values()) { ServerAPI
  • 22. return "OK".equals(s.getResponseData()); } private static String contactsToJSON(Contact[] contacts) { StringBuilder content = new StringBuilder("["); boolean first = true; for(Contact c : contacts) { String dname = c.getDisplayName(); if(dname != null) { if(!first) { content.append(","); } first = false; Map<String, String> data = new HashMap(); data.put("fullName", dname); String phone = c.getPrimaryPhoneNumber(); if(phone != null) { data.put("phone", phone); Map phones = c.getPhoneNumbers(); if(phones != null && phones.size() > 1) { for(Object p : phones.values()) { if(!p.equals(phone)) { data.put("secondaryPhone", phone); break; ServerAPI
  • 23. StringBuilder content = new StringBuilder("["); boolean first = true; for(Contact c : contacts) { String dname = c.getDisplayName(); if(dname != null) { if(!first) { content.append(","); } first = false; Map<String, String> data = new HashMap(); data.put("fullName", dname); String phone = c.getPrimaryPhoneNumber(); if(phone != null) { data.put("phone", phone); Map phones = c.getPhoneNumbers(); if(phones != null && phones.size() > 1) { for(Object p : phones.values()) { if(!p.equals(phone)) { data.put("secondaryPhone", phone); break; } } } } ServerAPI
  • 24. first = false; Map<String, String> data = new HashMap(); data.put("fullName", dname); String phone = c.getPrimaryPhoneNumber(); if(phone != null) { data.put("phone", phone); Map phones = c.getPhoneNumbers(); if(phones != null && phones.size() > 1) { for(Object p : phones.values()) { if(!p.equals(phone)) { data.put("secondaryPhone", phone); break; } } } } String email = c.getPrimaryEmail(); if(email != null) { data.put("email", email); } content.append(JSONParser.mapToJson(data)); } } content.append("]"); ServerAPI
  • 25. first = false; Map<String, String> data = new HashMap(); data.put("fullName", dname); String phone = c.getPrimaryPhoneNumber(); if(phone != null) { data.put("phone", phone); Map phones = c.getPhoneNumbers(); if(phones != null && phones.size() > 1) { for(Object p : phones.values()) { if(!p.equals(phone)) { data.put("secondaryPhone", phone); break; } } } } String email = c.getPrimaryEmail(); if(email != null) { data.put("email", email); } content.append(JSONParser.mapToJson(data)); } } content.append("]"); ServerAPI
  • 26. String phone = c.getPrimaryPhoneNumber(); if(phone != null) { data.put("phone", phone); Map phones = c.getPhoneNumbers(); if(phones != null && phones.size() > 1) { for(Object p : phones.values()) { if(!p.equals(phone)) { data.put("secondaryPhone", phone); break; } } } } String email = c.getPrimaryEmail(); if(email != null) { data.put("email", email); } content.append(JSONParser.mapToJson(data)); } } content.append("]"); return content.toString(); } ServerAPI
  • 27. Response<String> s = post("user/contacts"). body(contactsToJSON(contacts)).getAsString(); return "OK".equals(s.getResponseData()); } public static void uploadMedia(String mime, String role, String visibility, String fileName, byte[] data, SuccessCallback<String> callback) { MultipartRequest mp = new MultipartRequest() { private String mediaId; @Override protected void readResponse(InputStream input) throws IOException { mediaId = Util.readToString(input); } @Override protected void postResponse() { callback.onSucess(mediaId); } }; mp.setUrl(BASE_URL + "media/upload"); ServerAPI
  • 28. Response<String> s = post("user/contacts"). body(contactsToJSON(contacts)).getAsString(); return "OK".equals(s.getResponseData()); } public static void uploadMedia(String mime, String role, String visibility, String fileName, byte[] data, SuccessCallback<String> callback) { MultipartRequest mp = new MultipartRequest() { private String mediaId; @Override protected void readResponse(InputStream input) throws IOException { mediaId = Util.readToString(input); } @Override protected void postResponse() { callback.onSucess(mediaId); } }; mp.setUrl(BASE_URL + "media/upload"); ServerAPI
  • 29. Response<String> s = post("user/contacts"). body(contactsToJSON(contacts)).getAsString(); return "OK".equals(s.getResponseData()); } public static void uploadMedia(String mime, String role, String visibility, String fileName, byte[] data, SuccessCallback<String> callback) { MultipartRequest mp = new MultipartRequest() { private String mediaId; @Override protected void readResponse(InputStream input) throws IOException { mediaId = Util.readToString(input); } @Override protected void postResponse() { callback.onSucess(mediaId); } }; mp.setUrl(BASE_URL + "media/upload"); ServerAPI
  • 30. Response<String> s = post("user/contacts"). body(contactsToJSON(contacts)).getAsString(); return "OK".equals(s.getResponseData()); } public static void uploadMedia(String mime, String role, String visibility, String fileName, byte[] data, SuccessCallback<String> callback) { MultipartRequest mp = new MultipartRequest() { private String mediaId; @Override protected void readResponse(InputStream input) throws IOException { mediaId = Util.readToString(input); } @Override protected void postResponse() { callback.onSucess(mediaId); } }; mp.setUrl(BASE_URL + "media/upload"); ServerAPI
  • 31. SuccessCallback<String> callback) { MultipartRequest mp = new MultipartRequest() { private String mediaId; @Override protected void readResponse(InputStream input) throws IOException { mediaId = Util.readToString(input); } @Override protected void postResponse() { callback.onSucess(mediaId); } }; mp.setUrl(BASE_URL + "media/upload"); mp.addRequestHeader("auth", token); mp.addRequestHeader("Accept", "application/json"); mp.addArgument("role", role); mp.addArgument("visibility", visibility); mp.addData("file", data, mime); mp.setFilename("file", fileName); addToQueue(mp); } ServerAPI
  • 32. SuccessCallback<String> callback) { MultipartRequest mp = new MultipartRequest() { private String mediaId; @Override protected void readResponse(InputStream input) throws IOException { mediaId = Util.readToString(input); } @Override protected void postResponse() { callback.onSucess(mediaId); } }; mp.setUrl(BASE_URL + "media/upload"); mp.addRequestHeader("auth", token); mp.addRequestHeader("Accept", "application/json"); mp.addArgument("role", role); mp.addArgument("visibility", visibility); mp.addData("file", data, mime); mp.setFilename("file", fileName); addToQueue(mp); } ServerAPI
  • 33. mp.addData("file", data, mime); mp.setFilename("file", fileName); addToQueue(mp); } public static User me() { if(me == null && isLoggedIn()) { me = new User(); me.getPropertyIndex().loadJSON("me.json"); } return me; } public static List<Notification> listNotifications(int page, int size) { Response<Map> response = get("user/notifications"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap(); if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Notification> responseList = new ArrayList<>(); for(Map m : l) { Notification n = new Notification(); n.getPropertyIndex().populateFromMap(m); responseList.add(n); ServerAPI
  • 34. me.getPropertyIndex().loadJSON("me.json"); } return me; } public static List<Notification> listNotifications(int page, int size) { Response<Map> response = get("user/notifications"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap(); if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Notification> responseList = new ArrayList<>(); for(Map m : l) { Notification n = new Notification(); n.getPropertyIndex().populateFromMap(m); responseList.add(n); } return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { ServerAPI
  • 35. me.getPropertyIndex().loadJSON("me.json"); } return me; } public static List<Notification> listNotifications(int page, int size) { Response<Map> response = get("user/notifications"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap(); if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Notification> responseList = new ArrayList<>(); for(Map m : l) { Notification n = new Notification(); n.getPropertyIndex().populateFromMap(m); responseList.add(n); } return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { ServerAPI
  • 36. me.getPropertyIndex().loadJSON("me.json"); } return me; } public static List<Notification> listNotifications(int page, int size) { Response<Map> response = get("user/notifications"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap(); if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Notification> responseList = new ArrayList<>(); for(Map m : l) { Notification n = new Notification(); n.getPropertyIndex().populateFromMap(m); responseList.add(n); } return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { ServerAPI
  • 37. me.getPropertyIndex().loadJSON("me.json"); } return me; } public static List<Notification> listNotifications(int page, int size) { Response<Map> response = get("user/notifications"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap(); if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Notification> responseList = new ArrayList<>(); for(Map m : l) { Notification n = new Notification(); n.getPropertyIndex().populateFromMap(m); responseList.add(n); } return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { ServerAPI
  • 38. me.getPropertyIndex().loadJSON("me.json"); } return me; } public static List<Notification> listNotifications(int page, int size) { Response<Map> response = get("user/notifications"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap(); if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Notification> responseList = new ArrayList<>(); for(Map m : l) { Notification n = new Notification(); n.getPropertyIndex().populateFromMap(m); responseList.add(n); } return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { ServerAPI
  • 39. return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Post> responseList = new ArrayList<>(); for(Map m : l) { Post p = new Post(); p.getPropertyIndex().populateFromMap(m); responseList.add(p); } return responseList; } return null; } public static List<Post> postsOf(String user, int page, int size) { return processPostResponse( get("post/list"). queryParam("user", user). queryParam("page", "" + page). ServerAPI
  • 40. return responseList; } return null; } private static List<Post> processPostResponse(Response<Map> response) { if(response.getResponseCode() == 200) { List<Map> l = (List<Map>) response.getResponseData().get("root"); List<Post> responseList = new ArrayList<>(); for(Map m : l) { Post p = new Post(); p.getPropertyIndex().populateFromMap(m); responseList.add(p); } return responseList; } return null; } public static List<Post> postsOf(String user, int page, int size) { return processPostResponse( get("post/list"). queryParam("user", user). queryParam("page", "" + page). ServerAPI
  • 41. return responseList; } return null; } public static List<Post> postsOf(String user, int page, int size) { return processPostResponse( get("post/list"). queryParam("user", user). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap()); } public static List<Post> newsfeed(int page, int size) { return processPostResponse( get("post/feed"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap()); } public static boolean post(Post pd) { String key = post("post/new").body(pd.getPropertyIndex().toJSON()). getAsString().getResponseData(); pd.id.set(key); ServerAPI
  • 42. return responseList; } return null; } public static List<Post> postsOf(String user, int page, int size) { return processPostResponse( get("post/list"). queryParam("user", user). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap()); } public static List<Post> newsfeed(int page, int size) { return processPostResponse( get("post/feed"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap()); } public static boolean post(Post pd) { String key = post("post/new").body(pd.getPropertyIndex().toJSON()). getAsString().getResponseData(); pd.id.set(key); ServerAPI
  • 43. get("post/feed"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap()); } public static boolean post(Post pd) { String key = post("post/new").body(pd.getPropertyIndex().toJSON()). getAsString().getResponseData(); pd.id.set(key); return key != null; } public static boolean comment(Comment c) { Response<String> cm = post("post/comment"). body(c.getPropertyIndex().toJSON()). getAsString(); if(cm.getResponseCode() != 200) { return false; } c.id.set(cm.getResponseData()); return true; } public static boolean like(Post p) { ServerAPI
  • 44. get("post/feed"). queryParam("page", "" + page). queryParam("size", "" + size).getAsJsonMap()); } public static boolean post(Post pd) { String key = post("post/new").body(pd.getPropertyIndex().toJSON()). getAsString().getResponseData(); pd.id.set(key); return key != null; } public static boolean comment(Comment c) { Response<String> cm = post("post/comment"). body(c.getPropertyIndex().toJSON()). getAsString(); if(cm.getResponseCode() != 200) { return false; } c.id.set(cm.getResponseData()); return true; } public static boolean like(Post p) { ServerAPI
  • 45. public static boolean post(Post pd) { String key = post("post/new").body(pd.getPropertyIndex().toJSON()). getAsString().getResponseData(); pd.id.set(key); return key != null; } public static boolean comment(Comment c) { Response<String> cm = post("post/comment"). body(c.getPropertyIndex().toJSON()). getAsString(); if(cm.getResponseCode() != 200) { return false; } c.id.set(cm.getResponseData()); return true; } public static boolean like(Post p) { String ok = get("post/like").queryParam("postId", p.id.get()). getAsString().getResponseData(); return ok != null && ok.equals("OK"); } } ServerAPI