Search in sources :

Example 11 with UserData

use of com.google.samples.apps.iosched.server.userdata.db.UserData in project iosched by google.

the class UserdataEndpoint method addWaitlistedSession.

/**
 * Add a waitlisted session for the specified user. If the session is already in the user's feed,
 * it will be annotated with status=WAITLISTED.
 *
 * @param user         Service account making the request (injected by Endpoints)
 * @param userId       User ID of user that reserved a session.
 * @param sessionId    Session ID to mark as reserved.
 * @param timestampUTC The time (in millis, UTC) when the user performed this action. May be
 *                     different than the time this method is called if offline sync is
 *                     implemented. MUST BE ACCURATE - COMPENSATE FOR CLOCK DRIFT!
 * @return The list of reserved sessions for the user
 */
@ApiMethod(name = "addWaitlistedSession", path = "reservations/waitlist", httpMethod = ApiMethod.HttpMethod.PUT, clientIds = { Ids.SERVICE_ACCOUNT_CLIENT_ID })
public Map<String, ReservedSession> addWaitlistedSession(User user, @Named("userId") String userId, @Named("sessionId") String sessionId, @Named("timestampUTC") long timestampUTC) throws UnauthorizedException {
    UserData data = getUser(user, userId);
    ReservedSession s = new ReservedSession(sessionId, Status.WAITLISTED, timestampUTC);
    data.reservedSessions.put(sessionId, s);
    save(data);
    // notify user's clients of reservation change change
    new GCMPing().notifyUserSync(data.userId);
    return data.reservedSessions;
}
Also used : GCMPing(com.google.samples.apps.iosched.server.schedule.server.GCMPing) ReservedSession(com.google.samples.apps.iosched.server.userdata.db.ReservedSession) UserData(com.google.samples.apps.iosched.server.userdata.db.UserData) ApiMethod(com.google.api.server.spi.config.ApiMethod)

Aggregations

UserData (com.google.samples.apps.iosched.server.userdata.db.UserData)11 ApiMethod (com.google.api.server.spi.config.ApiMethod)10 BookmarkedSession (com.google.samples.apps.iosched.server.userdata.db.BookmarkedSession)4 ReservedSession (com.google.samples.apps.iosched.server.userdata.db.ReservedSession)4 GCMPing (com.google.samples.apps.iosched.server.schedule.server.GCMPing)3 JsonArray (com.google.gson.JsonArray)1 JsonObject (com.google.gson.JsonObject)1 Status (com.google.samples.apps.iosched.server.userdata.db.ReservedSession.Status)1 NotFoundException (com.googlecode.objectify.NotFoundException)1 InputStream (java.io.InputStream)1 HashMap (java.util.HashMap)1 ServletContext (javax.servlet.ServletContext)1