Package com.example.helloworld.resources

Source Code of com.example.helloworld.resources.UserResource

package com.example.helloworld.resources;

import io.dropwizard.hibernate.UnitOfWork;
import io.dropwizard.jersey.errors.ErrorMessage;

import java.text.ParseException;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import com.example.helloworld.auth.AuthUtils;
import com.example.helloworld.core.User;
import com.example.helloworld.db.UserDAO;
import com.google.common.base.Optional;

@Path("/api/me")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class UserResource {
 
  private final UserDAO dao;
 
  public UserResource(UserDAO userDAO) {
    this.dao = userDAO;
  }

  @GET
  @UnitOfWork
  public Response getUser(@Context HttpServletRequest request) throws ParseException {
    Optional<User> foundUser = getAuthUser(request);
   
    if (!foundUser.isPresent()) {
      return Response.status(Status.NOT_FOUND).build();
    }
    return Response.ok().entity(foundUser.get()).build();
  }
 
  // for testing
  @GET
  @Path("/all")
  @UnitOfWork
  public Response getAllUsers() {
    return Response.ok().entity(dao.findAll()).build();
  }

  @PUT
  @UnitOfWork
  public Response updateUser(@Valid User user, @Context HttpServletRequest request) throws ParseException {
    Optional<User> foundUser = getAuthUser(request);
   
    if (!foundUser.isPresent()) {
      return Response
          .status(Status.NOT_FOUND)
          .entity(new ErrorMessage(AuthResource.NOT_FOUND_MSG)).build();
    }
   
    User userToUpdate = foundUser.get();
    userToUpdate.setDisplayName(user.getDisplayName());
    userToUpdate.setEmail(user.getEmail());
    dao.save(userToUpdate);

    return Response.ok().build();
  }
 
  /*
   * Helper methods
   */ 
  private Optional<User> getAuthUser(HttpServletRequest request) throws ParseException {
    String subject = AuthUtils.getSubject(request.getHeader(AuthUtils.AUTH_HEADER_KEY));
    return dao.findById(Long.parseLong(subject));
  }

}
TOP

Related Classes of com.example.helloworld.resources.UserResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.