SlideShare a Scribd company logo
Creating a Facebook Clone - Part XXIII
@Service
public class NotificationService {
@Autowired
private NotificationRepository notifications;
public void sendNotification(User u, NotificationDAO nd) {
Notification n = new Notification();
n.setDate(System.currentTimeMillis());
n.setReaction(nd.getReaction());
n.setReactionColor(nd.getReactionColor());
n.setText(nd.getText());
n.setUser(u);
n.setWasRead(nd.isWasRead());
notifications.save(n);
}
public List<NotificationDAO> listNotifications(String authtoken,
int page, int amount) {
Page<Notification> notificationsPage = notifications.
findNotificationsForUser(
authtoken, PageRequest.of(page, amount,
NotificationService
@Service
public class NotificationService {
@Autowired
private NotificationRepository notifications;
public void sendNotification(User u, NotificationDAO nd) {
Notification n = new Notification();
n.setDate(System.currentTimeMillis());
n.setReaction(nd.getReaction());
n.setReactionColor(nd.getReactionColor());
n.setText(nd.getText());
n.setUser(u);
n.setWasRead(nd.isWasRead());
notifications.save(n);
}
public List<NotificationDAO> listNotifications(String authtoken,
int page, int amount) {
Page<Notification> notificationsPage = notifications.
findNotificationsForUser(
authtoken, PageRequest.of(page, amount,
NotificationService
@Service
public class NotificationService {
@Autowired
private NotificationRepository notifications;
public void sendNotification(User u, NotificationDAO nd) {
Notification n = new Notification();
n.setDate(System.currentTimeMillis());
n.setReaction(nd.getReaction());
n.setReactionColor(nd.getReactionColor());
n.setText(nd.getText());
n.setUser(u);
n.setWasRead(nd.isWasRead());
notifications.save(n);
}
public List<NotificationDAO> listNotifications(String authtoken,
int page, int amount) {
Page<Notification> notificationsPage = notifications.
findNotificationsForUser(
authtoken, PageRequest.of(page, amount,
NotificationService
public void sendNotification(User u, NotificationDAO nd) {
Notification n = new Notification();
n.setDate(System.currentTimeMillis());
n.setReaction(nd.getReaction());
n.setReactionColor(nd.getReactionColor());
n.setText(nd.getText());
n.setUser(u);
n.setWasRead(nd.isWasRead());
notifications.save(n);
}
public List<NotificationDAO> listNotifications(String authtoken,
int page, int amount) {
Page<Notification> notificationsPage = notifications.
findNotificationsForUser(
authtoken, PageRequest.of(page, amount,
Sort.by(Sort.Direction.DESC, "date")));
List<NotificationDAO> resp = new ArrayList<>();
for(Notification c : notificationsPage) {
resp.add(c.getDAO());
}
return resp;
}
}
NotificationService
public void sendNotification(User u, NotificationDAO nd) {
Notification n = new Notification();
n.setDate(System.currentTimeMillis());
n.setReaction(nd.getReaction());
n.setReactionColor(nd.getReactionColor());
n.setText(nd.getText());
n.setUser(u);
n.setWasRead(nd.isWasRead());
notifications.save(n);
}
public List<NotificationDAO> listNotifications(String authtoken,
int page, int amount) {
Page<Notification> notificationsPage = notifications.
findNotificationsForUser(
authtoken, PageRequest.of(page, amount,
Sort.by(Sort.Direction.DESC, "date")));
List<NotificationDAO> resp = new ArrayList<>();
for(Notification c : notificationsPage) {
resp.add(c.getDAO());
}
return resp;
}
}
NotificationService
public void sendNotification(User u, NotificationDAO nd) {
Notification n = new Notification();
n.setDate(System.currentTimeMillis());
n.setReaction(nd.getReaction());
n.setReactionColor(nd.getReactionColor());
n.setText(nd.getText());
n.setUser(u);
n.setWasRead(nd.isWasRead());
notifications.save(n);
}
public List<NotificationDAO> listNotifications(String authtoken,
int page, int amount) {
Page<Notification> notificationsPage = notifications.
findNotificationsForUser(
authtoken, PageRequest.of(page, amount,
Sort.by(Sort.Direction.DESC, "date")));
List<NotificationDAO> resp = new ArrayList<>();
for(Notification c : notificationsPage) {
resp.add(c.getDAO());
}
return resp;
}
}
NotificationService
@Service
public class MediaService {
@Autowired
private MediaRepository media;
@Autowired
private UserRepository user;
public String storeMedia(String authtoken, byte[] data,
String mimeType, String role, String visibility,
String filename) {
User u = user.findByAuthtoken(authtoken).get(0);
Media m = new Media();
m.setData(data);
m.setOwner(u);
m.setDate(System.currentTimeMillis());
m.setFilename(filename);
m.setMimeType(mimeType);
m.setRole(role);
MediaService
@Service
public class MediaService {
@Autowired
private MediaRepository media;
@Autowired
private UserRepository user;
public String storeMedia(String authtoken, byte[] data,
String mimeType, String role, String visibility,
String filename) {
User u = user.findByAuthtoken(authtoken).get(0);
Media m = new Media();
m.setData(data);
m.setOwner(u);
m.setDate(System.currentTimeMillis());
m.setFilename(filename);
m.setMimeType(mimeType);
m.setRole(role);
MediaService
@Service
public class MediaService {
@Autowired
private MediaRepository media;
@Autowired
private UserRepository user;
public String storeMedia(String authtoken, byte[] data,
String mimeType, String role, String visibility,
String filename) {
User u = user.findByAuthtoken(authtoken).get(0);
Media m = new Media();
m.setData(data);
m.setOwner(u);
m.setDate(System.currentTimeMillis());
m.setFilename(filename);
m.setMimeType(mimeType);
m.setRole(role);
MediaService
private MediaRepository media;
@Autowired
private UserRepository user;
public String storeMedia(String authtoken, byte[] data,
String mimeType, String role, String visibility,
String filename) {
User u = user.findByAuthtoken(authtoken).get(0);
Media m = new Media();
m.setData(data);
m.setOwner(u);
m.setDate(System.currentTimeMillis());
m.setFilename(filename);
m.setMimeType(mimeType);
m.setRole(role);
m.setVisibility(visibility);
media.save(m);
return m.getId();
}
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
MediaService
m.setVisibility(visibility);
media.save(m);
return m.getId();
}
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
public MediaDAO getMedia(String authToken, String id) throws
PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
if(!m.getOwner().getAuthtoken().equals(authToken)) {
if(!m.getOwner().isFriendByToken(authToken)) {
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
MediaService
return m.getId();
}
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
public MediaDAO getMedia(String authToken, String id) throws
PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
if(!m.getOwner().getAuthtoken().equals(authToken)) {
if(!m.getOwner().isFriendByToken(authToken)) {
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
}
MediaService
public enum VisibilityConstants {
PUBLIC("public"), FRIENDS("friends");
private String str;
private VisibilityConstants(String str) {
this.str = str;
}
public String asString() {
return str;
}
public static boolean isPublic(String s) {
return s == null || s.equalsIgnoreCase(PUBLIC.asString());
}
}
return m.getId();
}
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
public MediaDAO getMedia(String authToken, String id) throws
PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
if(!m.getOwner().getAuthtoken().equals(authToken)) {
if(!m.getOwner().isFriendByToken(authToken)) {
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
}
MediaService
public class PermissionException extends Exception {
public PermissionException(String message) {
super(message);
}
}
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
public MediaDAO getMedia(String authToken, String id) throws
PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
if(!m.getOwner().getAuthtoken().equals(authToken)) {
if(!m.getOwner().isFriendByToken(authToken)) {
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
}
return m.getDAO();
}
}
MediaService
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
public MediaDAO getMedia(String authToken, String id) throws
PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
if(!m.getOwner().getAuthtoken().equals(authToken)) {
if(!m.getOwner().isFriendByToken(authToken)) {
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
}
return m.getDAO();
}
}
MediaService
public MediaDAO getPublicMedia(String id) throws PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
public MediaDAO getMedia(String authToken, String id) throws
PermissionException {
Media m = media.findById(id).get();
if(VisibilityConstants.isPublic(m.getVisibility())) {
return m.getDAO();
}
if(!m.getOwner().getAuthtoken().equals(authToken)) {
if(!m.getOwner().isFriendByToken(authToken)) {
throw new PermissionException(
"Media item belongs to a user that isn't a friend");
}
}
return m.getDAO();
}
}
MediaService

More Related Content

Similar to Creating a Facebook Clone - Part XXIII.pdf

Creating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdfCreating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part III.pdf
Creating a Whatsapp Clone - Part III.pdfCreating a Whatsapp Clone - Part III.pdf
Creating a Whatsapp Clone - Part III.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdfCreating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XXV.pdf
Creating a Facebook Clone - Part XXV.pdfCreating a Facebook Clone - Part XXV.pdf
Creating a Facebook Clone - Part XXV.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part XIII.pdf
Creating a Whatsapp Clone - Part XIII.pdfCreating a Whatsapp Clone - Part XIII.pdf
Creating a Whatsapp Clone - Part XIII.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part XI.pdf
Creating a Whatsapp Clone - Part XI.pdfCreating a Whatsapp Clone - Part XI.pdf
Creating a Whatsapp Clone - Part XI.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdfCreating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XXVI - Transcript.pdf
Creating a Facebook Clone - Part XXVI - Transcript.pdfCreating a Facebook Clone - Part XXVI - Transcript.pdf
Creating a Facebook Clone - Part XXVI - Transcript.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XL.pdf
Creating a Facebook Clone - Part XL.pdfCreating a Facebook Clone - Part XL.pdf
Creating a Facebook Clone - Part XL.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 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 Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - Transcript.pdfCreating a Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - 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
 
Creating a Whatsapp Clone - Part XII.pdf
Creating a Whatsapp Clone - Part XII.pdfCreating a Whatsapp Clone - Part XII.pdf
Creating a Whatsapp Clone - Part XII.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part XIII - Transcript.pdf
Creating a Whatsapp Clone - Part XIII - Transcript.pdfCreating a Whatsapp Clone - Part XIII - Transcript.pdf
Creating a Whatsapp Clone - Part XIII - Transcript.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdfCreating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdf
ShaiAlmog1
 
Presentation Android Architecture Components
Presentation Android Architecture ComponentsPresentation Android Architecture Components
Presentation Android Architecture Components
Attract Group
 
Creating a Facebook Clone - Part XXXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXXVIII - Transcript.pdfCreating a Facebook Clone - Part XXXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXXVIII - Transcript.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part X.pdf
Creating a Facebook Clone - Part X.pdfCreating a Facebook Clone - Part X.pdf
Creating a Facebook Clone - Part X.pdf
ShaiAlmog1
 
Creating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfCreating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdf
ShaiAlmog1
 

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

Creating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdfCreating a Facebook Clone - Part XIV.pdf
Creating a Facebook Clone - Part XIV.pdf
 
Creating a Whatsapp Clone - Part III.pdf
Creating a Whatsapp Clone - Part III.pdfCreating a Whatsapp Clone - Part III.pdf
Creating a Whatsapp Clone - Part III.pdf
 
Creating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdfCreating a Facebook Clone - Part XX - Transcript.pdf
Creating a Facebook Clone - Part XX - Transcript.pdf
 
Creating a Facebook Clone - Part XXV.pdf
Creating a Facebook Clone - Part XXV.pdfCreating a Facebook Clone - Part XXV.pdf
Creating a Facebook Clone - Part XXV.pdf
 
Creating a Whatsapp Clone - Part XIII.pdf
Creating a Whatsapp Clone - Part XIII.pdfCreating a Whatsapp Clone - Part XIII.pdf
Creating a Whatsapp Clone - Part XIII.pdf
 
Creating a Whatsapp Clone - Part XI.pdf
Creating a Whatsapp Clone - Part XI.pdfCreating a Whatsapp Clone - Part XI.pdf
Creating a Whatsapp Clone - Part XI.pdf
 
Creating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdfCreating a Facebook Clone - Part XIV - Transcript.pdf
Creating a Facebook Clone - Part XIV - Transcript.pdf
 
Creating a Facebook Clone - Part XXVI - Transcript.pdf
Creating a Facebook Clone - Part XXVI - Transcript.pdfCreating a Facebook Clone - Part XXVI - Transcript.pdf
Creating a Facebook Clone - Part XXVI - Transcript.pdf
 
Creating a Facebook Clone - Part XL.pdf
Creating a Facebook Clone - Part XL.pdfCreating a Facebook Clone - Part XL.pdf
Creating a Facebook Clone - Part XL.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 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 Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - Transcript.pdfCreating a Facebook Clone - Part XIX - Transcript.pdf
Creating a Facebook Clone - Part XIX - 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
 
Creating a Whatsapp Clone - Part XII.pdf
Creating a Whatsapp Clone - Part XII.pdfCreating a Whatsapp Clone - Part XII.pdf
Creating a Whatsapp Clone - Part XII.pdf
 
Creating a Whatsapp Clone - Part XIII - Transcript.pdf
Creating a Whatsapp Clone - Part XIII - Transcript.pdfCreating a Whatsapp Clone - Part XIII - Transcript.pdf
Creating a Whatsapp Clone - Part XIII - Transcript.pdf
 
Creating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdfCreating a Facebook Clone - Part XIX.pdf
Creating a Facebook Clone - Part XIX.pdf
 
Presentation Android Architecture Components
Presentation Android Architecture ComponentsPresentation Android Architecture Components
Presentation Android Architecture Components
 
Creating a Facebook Clone - Part XXXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXXVIII - Transcript.pdfCreating a Facebook Clone - Part XXXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXXVIII - Transcript.pdf
 
Creating a Facebook Clone - Part X.pdf
Creating a Facebook Clone - Part X.pdfCreating a Facebook Clone - Part X.pdf
Creating a Facebook Clone - Part X.pdf
 
Creating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfCreating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdf
 

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 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
 
Creating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdfCreating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdf
ShaiAlmog1
 
Creating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdfCreating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.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 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
 
Creating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdfCreating a Whatsapp Clone - Part IX.pdf
Creating a Whatsapp Clone - Part IX.pdf
 
Creating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdfCreating a Whatsapp Clone - Part VI.pdf
Creating a Whatsapp Clone - Part VI.pdf
 

Recently uploaded

20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
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
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
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
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
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
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
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
 
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
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
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
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 

Recently uploaded (20)

20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
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
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
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
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
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
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
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
 
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
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
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...
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 

Creating a Facebook Clone - Part XXIII.pdf

  • 1. Creating a Facebook Clone - Part XXIII
  • 2. @Service public class NotificationService { @Autowired private NotificationRepository notifications; public void sendNotification(User u, NotificationDAO nd) { Notification n = new Notification(); n.setDate(System.currentTimeMillis()); n.setReaction(nd.getReaction()); n.setReactionColor(nd.getReactionColor()); n.setText(nd.getText()); n.setUser(u); n.setWasRead(nd.isWasRead()); notifications.save(n); } public List<NotificationDAO> listNotifications(String authtoken, int page, int amount) { Page<Notification> notificationsPage = notifications. findNotificationsForUser( authtoken, PageRequest.of(page, amount, NotificationService
  • 3. @Service public class NotificationService { @Autowired private NotificationRepository notifications; public void sendNotification(User u, NotificationDAO nd) { Notification n = new Notification(); n.setDate(System.currentTimeMillis()); n.setReaction(nd.getReaction()); n.setReactionColor(nd.getReactionColor()); n.setText(nd.getText()); n.setUser(u); n.setWasRead(nd.isWasRead()); notifications.save(n); } public List<NotificationDAO> listNotifications(String authtoken, int page, int amount) { Page<Notification> notificationsPage = notifications. findNotificationsForUser( authtoken, PageRequest.of(page, amount, NotificationService
  • 4. @Service public class NotificationService { @Autowired private NotificationRepository notifications; public void sendNotification(User u, NotificationDAO nd) { Notification n = new Notification(); n.setDate(System.currentTimeMillis()); n.setReaction(nd.getReaction()); n.setReactionColor(nd.getReactionColor()); n.setText(nd.getText()); n.setUser(u); n.setWasRead(nd.isWasRead()); notifications.save(n); } public List<NotificationDAO> listNotifications(String authtoken, int page, int amount) { Page<Notification> notificationsPage = notifications. findNotificationsForUser( authtoken, PageRequest.of(page, amount, NotificationService
  • 5. public void sendNotification(User u, NotificationDAO nd) { Notification n = new Notification(); n.setDate(System.currentTimeMillis()); n.setReaction(nd.getReaction()); n.setReactionColor(nd.getReactionColor()); n.setText(nd.getText()); n.setUser(u); n.setWasRead(nd.isWasRead()); notifications.save(n); } public List<NotificationDAO> listNotifications(String authtoken, int page, int amount) { Page<Notification> notificationsPage = notifications. findNotificationsForUser( authtoken, PageRequest.of(page, amount, Sort.by(Sort.Direction.DESC, "date"))); List<NotificationDAO> resp = new ArrayList<>(); for(Notification c : notificationsPage) { resp.add(c.getDAO()); } return resp; } } NotificationService
  • 6. public void sendNotification(User u, NotificationDAO nd) { Notification n = new Notification(); n.setDate(System.currentTimeMillis()); n.setReaction(nd.getReaction()); n.setReactionColor(nd.getReactionColor()); n.setText(nd.getText()); n.setUser(u); n.setWasRead(nd.isWasRead()); notifications.save(n); } public List<NotificationDAO> listNotifications(String authtoken, int page, int amount) { Page<Notification> notificationsPage = notifications. findNotificationsForUser( authtoken, PageRequest.of(page, amount, Sort.by(Sort.Direction.DESC, "date"))); List<NotificationDAO> resp = new ArrayList<>(); for(Notification c : notificationsPage) { resp.add(c.getDAO()); } return resp; } } NotificationService
  • 7. public void sendNotification(User u, NotificationDAO nd) { Notification n = new Notification(); n.setDate(System.currentTimeMillis()); n.setReaction(nd.getReaction()); n.setReactionColor(nd.getReactionColor()); n.setText(nd.getText()); n.setUser(u); n.setWasRead(nd.isWasRead()); notifications.save(n); } public List<NotificationDAO> listNotifications(String authtoken, int page, int amount) { Page<Notification> notificationsPage = notifications. findNotificationsForUser( authtoken, PageRequest.of(page, amount, Sort.by(Sort.Direction.DESC, "date"))); List<NotificationDAO> resp = new ArrayList<>(); for(Notification c : notificationsPage) { resp.add(c.getDAO()); } return resp; } } NotificationService
  • 8. @Service public class MediaService { @Autowired private MediaRepository media; @Autowired private UserRepository user; public String storeMedia(String authtoken, byte[] data, String mimeType, String role, String visibility, String filename) { User u = user.findByAuthtoken(authtoken).get(0); Media m = new Media(); m.setData(data); m.setOwner(u); m.setDate(System.currentTimeMillis()); m.setFilename(filename); m.setMimeType(mimeType); m.setRole(role); MediaService
  • 9. @Service public class MediaService { @Autowired private MediaRepository media; @Autowired private UserRepository user; public String storeMedia(String authtoken, byte[] data, String mimeType, String role, String visibility, String filename) { User u = user.findByAuthtoken(authtoken).get(0); Media m = new Media(); m.setData(data); m.setOwner(u); m.setDate(System.currentTimeMillis()); m.setFilename(filename); m.setMimeType(mimeType); m.setRole(role); MediaService
  • 10. @Service public class MediaService { @Autowired private MediaRepository media; @Autowired private UserRepository user; public String storeMedia(String authtoken, byte[] data, String mimeType, String role, String visibility, String filename) { User u = user.findByAuthtoken(authtoken).get(0); Media m = new Media(); m.setData(data); m.setOwner(u); m.setDate(System.currentTimeMillis()); m.setFilename(filename); m.setMimeType(mimeType); m.setRole(role); MediaService
  • 11. private MediaRepository media; @Autowired private UserRepository user; public String storeMedia(String authtoken, byte[] data, String mimeType, String role, String visibility, String filename) { User u = user.findByAuthtoken(authtoken).get(0); Media m = new Media(); m.setData(data); m.setOwner(u); m.setDate(System.currentTimeMillis()); m.setFilename(filename); m.setMimeType(mimeType); m.setRole(role); m.setVisibility(visibility); media.save(m); return m.getId(); } public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { MediaService
  • 12. m.setVisibility(visibility); media.save(m); return m.getId(); } public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } throw new PermissionException( "Media item belongs to a user that isn't a friend"); } public MediaDAO getMedia(String authToken, String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } if(!m.getOwner().getAuthtoken().equals(authToken)) { if(!m.getOwner().isFriendByToken(authToken)) { throw new PermissionException( "Media item belongs to a user that isn't a friend"); MediaService
  • 13. return m.getId(); } public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } throw new PermissionException( "Media item belongs to a user that isn't a friend"); } public MediaDAO getMedia(String authToken, String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } if(!m.getOwner().getAuthtoken().equals(authToken)) { if(!m.getOwner().isFriendByToken(authToken)) { throw new PermissionException( "Media item belongs to a user that isn't a friend"); } } MediaService public enum VisibilityConstants { PUBLIC("public"), FRIENDS("friends"); private String str; private VisibilityConstants(String str) { this.str = str; } public String asString() { return str; } public static boolean isPublic(String s) { return s == null || s.equalsIgnoreCase(PUBLIC.asString()); } }
  • 14. return m.getId(); } public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } throw new PermissionException( "Media item belongs to a user that isn't a friend"); } public MediaDAO getMedia(String authToken, String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } if(!m.getOwner().getAuthtoken().equals(authToken)) { if(!m.getOwner().isFriendByToken(authToken)) { throw new PermissionException( "Media item belongs to a user that isn't a friend"); } } MediaService public class PermissionException extends Exception { public PermissionException(String message) { super(message); } }
  • 15. public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } throw new PermissionException( "Media item belongs to a user that isn't a friend"); } public MediaDAO getMedia(String authToken, String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } if(!m.getOwner().getAuthtoken().equals(authToken)) { if(!m.getOwner().isFriendByToken(authToken)) { throw new PermissionException( "Media item belongs to a user that isn't a friend"); } } return m.getDAO(); } } MediaService
  • 16. public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } throw new PermissionException( "Media item belongs to a user that isn't a friend"); } public MediaDAO getMedia(String authToken, String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } if(!m.getOwner().getAuthtoken().equals(authToken)) { if(!m.getOwner().isFriendByToken(authToken)) { throw new PermissionException( "Media item belongs to a user that isn't a friend"); } } return m.getDAO(); } } MediaService
  • 17. public MediaDAO getPublicMedia(String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } throw new PermissionException( "Media item belongs to a user that isn't a friend"); } public MediaDAO getMedia(String authToken, String id) throws PermissionException { Media m = media.findById(id).get(); if(VisibilityConstants.isPublic(m.getVisibility())) { return m.getDAO(); } if(!m.getOwner().getAuthtoken().equals(authToken)) { if(!m.getOwner().isFriendByToken(authToken)) { throw new PermissionException( "Media item belongs to a user that isn't a friend"); } } return m.getDAO(); } } MediaService