SlideShare a Scribd company logo
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

Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
Bastian Hofmann
 
async/await in Swift
async/await in Swiftasync/await in Swift
async/await in Swift
Peter Friese
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
Kotlin : Advanced Tricks - Ubiratan Soares
Kotlin : Advanced Tricks - Ubiratan SoaresKotlin : Advanced Tricks - Ubiratan Soares
Kotlin : Advanced Tricks - Ubiratan Soares
iMasters
 
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
ShaiAlmog1
 
AngularJS Services
AngularJS ServicesAngularJS Services
AngularJS Services
Eyal Vardi
 
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
tdc-globalcode
 
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
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
 
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
ShaiAlmog1
 
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
Codemotion
 
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
ShaiAlmog1
 
Jason parsing
Jason parsingJason parsing
Jason parsing
parallelminder
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & REST
Hugo Hamon
 
Reduxing like a pro
Reduxing like a proReduxing like a pro
Reduxing like a pro
Boris Dinkevich
 
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
Vladimir Kostyukov
 
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
Huiyi Yan
 
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
Ryan Anklam
 

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

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 ...
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
ShaiAlmog1
 
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
ShaiAlmog1
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
ShaiAlmog1
 
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
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

Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
Data Hops
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
maazsz111
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 

Recently uploaded (20)

Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
SAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloudSAP S/4 HANA sourcing and procurement to Public cloud
SAP S/4 HANA sourcing and procurement to Public cloud
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 

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