package carpool.service;
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.routing.Router;
import carpool.common.DebugLog;
import carpool.configurations.CarpoolConfig;
import carpool.resources.adminResource.AdminRoutineResource;
import carpool.resources.adminResource.AdminStateChangeResource;
import carpool.resources.adminResource.AdminStatResource;
import carpool.resources.dianmingResource.*;
import carpool.resources.generalResource.*;
import carpool.resources.letterResource.LetterResource;
import carpool.resources.letterResource.LetterResourceId;
import carpool.resources.letterResource.LetterUserResource;
import carpool.resources.locationResource.*;
import carpool.resources.notificationResource.*;
import carpool.resources.transactionResource.*;
import carpool.resources.userResource.*;
import carpool.resources.userResource.userAuthResource.ChangePasswordResource;
import carpool.resources.userResource.userAuthResource.ForgetPasswordResource;
import carpool.resources.userResource.userAuthResource.LogInResource;
import carpool.resources.userResource.userAuthResource.LogOutResource;
import carpool.resources.userResource.userAuthResource.SessionRedirect;
import carpool.resources.userResource.userEmailResource.ResendActivationEmailResource;
import carpool.resources.userResource.userEmailResource.UserEmailActivationResource;
import carpool.resources.userResource.userEmailResource.UserEmailResource;
/**
* This class is the collection of our routes, it is the only Application attached to the default host
* **/
public class RoutingService extends Application {
public RoutingService() {
super();
}
public RoutingService(Context context) {
super(context);
}
//@Override
public synchronized Restlet createInboundRoot(){
DebugLog.d("initiaing router::RoutingService");
Router router = new Router(getContext());
/** -------------------- APIs for dianming module -------------- **/
String dMServicePrefix = "/dianming";
// API for dianming messages: /api/v1.0/dianming/*
String DMResourcePrefix = "/dianming";
// API for Get/Post dianming messages: /api/v1.0/dianming/dianming
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + dMServicePrefix + DMResourcePrefix, DMResource.class);
// API for Get/Put/Delete dianming messages: /api/v1.0/dianming/dianming/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + dMServicePrefix + DMResourcePrefix + "/{id}", DMResourceId.class);
String DMRecentResourcePrefix = "/recent";
// API for DM message getting recent messages: /api/v1.0/dianming/recent
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + dMServicePrefix + DMRecentResourcePrefix, RecentMessageResource.class);
String DMSearchResourcePrefix = "/search";
// API for DM message search: /api/v1.0/dianming/search
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + dMServicePrefix + DMSearchResourcePrefix, DMSearchResource.class);
String DMTransactionResourcePrefix = "/transaction";
// API for DM message fetchTransactionList : /api/v1.0/dianming/transaction/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + dMServicePrefix + DMTransactionResourcePrefix + "/{id}", DMTransactionResource.class);
String DMAutoMatchResourcePrefix = "/autoMatch";
// API for DM message auto-matching : /api/v1.0/dianming/autoMatch/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + dMServicePrefix + DMAutoMatchResourcePrefix + "/{id}", DMAutoMatchResource.class);
/** -------------------- APIs for transaction module -------------- **/
String transactionServicePrefix = "/transaction";
// API for transaction: /api/v1.0/transaction/*
String TransactionResourcePrefix = "/transaction";
// API for Get/Post transactions: /api/v1.0/transaction/transaction
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + transactionServicePrefix + TransactionResourcePrefix, TransactionResource.class);
// API for Get/Put/Delete transactions: /api/v1.0/transaction/transaction/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + transactionServicePrefix + TransactionResourcePrefix + "/{id}", TransactionResourceId.class);
/** -------------------- APIs for notification module -------------- **/
String notificationServicePrefix = "/notification";
// API for transaction: /api/v1.0/notification/*
String NotificationResourcePrefix = "/notification";
// API for Get notifications: /api/v1.0/notification/notification
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + notificationServicePrefix + NotificationResourcePrefix, NotificationResource.class);
// API for Get/Put/Delete notification: /api/v1.0/notification/notification/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + notificationServicePrefix + NotificationResourcePrefix + "/{id}", NotificationResourceId.class);
String NotificationDeleteByIdListResourcePrefix = "/notificationByIdList";
// API for Check/Delete notification by an id list: /api/v1.0/notification/notificationByIdList
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + notificationServicePrefix + NotificationDeleteByIdListResourcePrefix, NotificationByIdListResource.class);
/** -------------------- APIs for letter module -------------- **/
String letterServicePrefix = "/letter";
// API for transaction: /api/v1.0/letter/*
String LetterResourcePrefix = "/letter";
// API for Get letters: /api/v1.0/letter/letter
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + letterServicePrefix + LetterResourcePrefix, LetterResource.class);
// API for Get/Put/Delete letters: /api/v1.0/letter/letter/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + letterServicePrefix + LetterResourcePrefix + "/{id}", LetterResourceId.class);
String LetterUserResourcePrefix = "/user";
// API for Get users in chat history: /api/v1.0/letter/user/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + letterServicePrefix + LetterUserResourcePrefix + "/{id}", LetterUserResource.class);
/** -------------------- APIs for user module ------------------ **/
String userServicePrefix = "/users";
// API for users: /api/v1.0/users/*
String SessionRedirectPrefix = "/findSession";
// API for session redirection upon non-session pages: /api/v1.0/users/findSession
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + SessionRedirectPrefix, SessionRedirect.class);
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + SessionRedirectPrefix + "/{id}", SessionRedirect.class);
String UserResourcePrefix = "/user";
// API for Get/Post user: /api/v1.0/users/user
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserResourcePrefix, UserResource.class);
// API for Get/Post/Delete user: /api/v1.0/users/user/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserResourcePrefix + "/{id}", UserResourceId.class);
String LogInResourcePrefix = "/login";
// API for user Login: /api/v1.0/users/login
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + LogInResourcePrefix, LogInResource.class);
String LogOutResourcePrefix = "/logout";
// API for user Logout: /api/v1.0/users/logout/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + LogOutResourcePrefix + "/{id}", LogOutResource.class);
String ImgResourcePrefix = "/img";
// API for user Image resources: /api/v1.0/users/img/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + ImgResourcePrefix + "/{id}", ImgResource.class);
String EmailResourcePrefix = "/email";
// API for check email availability: /api/v1.0/users/email
// API for user update email: /api/v1.0/users/email/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + EmailResourcePrefix, UserEmailResource.class);
//router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + EmailResourcePrefix + "/{id}", UserEmailResourceId.class);
String ChangePasswordResourcePrefix = "/changePassword";
// API for user changing the password: /api/v1.0/users/changePassword/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + ChangePasswordResourcePrefix + "/{id}", ChangePasswordResource.class);
String ContactInfoResourcePrefix = "/contactInfo";
// API for user changing the contact information: /api/v1.0/users/contactInfo/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + ContactInfoResourcePrefix + "/{id}", UserChangeContactInfoResource.class);
String SingleLocationResourcePrefix = "/singleLocation";
// API for user changing the single location: /api/v1.0/users/singleLocation/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + SingleLocationResourcePrefix + "/{id}", UserSingleLocationResource.class);
String EmailActivationResourcePrefix = "/emailActivation";
// API for user email activation: /api/v1.0/users/emailActivation
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + EmailActivationResourcePrefix, UserEmailActivationResource.class);
String ResendActivationEmailResourcePrefix = "/resendActivationEmail";
// API for sending activation email to target userId: /api/v1.0/users/resendActivationEmail/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + ResendActivationEmailResourcePrefix + "/{id}", ResendActivationEmailResource.class);
String ForgetPasswordResourcePrefix = "/forgetPassword";
// API for user forgetting the password: /api/v1.0/users/forgetPassword
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + ForgetPasswordResourcePrefix, ForgetPasswordResource.class);
String UserToggleEmailNoticePrefix = "/toggleNotices";
// API for user to toggle email notice state: /api/v1.0/users/toggleNotices/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserToggleEmailNoticePrefix + "/{id}", UserToggleNoticesResource.class);
String UserWatchUserResourcePrefix = "/watchUser";
// API for user watch/de-watch other users: /api/v1.0/users/watchUser/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserWatchUserResourcePrefix + "/{id}", UserWatchUserResource.class);
String UserIsWatchedResourcePrefix = "/isWatched";
// API for user watch/de-watch other users: /api/v1.0/users/isWatched/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserIsWatchedResourcePrefix + "/{id}", UserIsWatchedResource.class);
String UserSearchUserResourcePrefix = "/searchUser";
// API for user watch/de-watch other users: /api/v1.0/users/searchUser
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserSearchUserResourcePrefix, UserSearchUserResource.class);
String UserMessageHistoryResourcePrefix = "/messageHistory";
// API for user getting history messages: /api/v1.0/users/messageHistory/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserMessageHistoryResourcePrefix + "/{id}", UserMessageHistoryResource.class);
String UserTransactionResourcePrefix = "/transaction";
// API for user getting transactions: /api/v1.0/users/transaction/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserTransactionResourcePrefix + "/{id}", UserTransactionResource.class);
String UserNotificationResourcePrefix = "/notification";
// API for user getting history notification: /api/v1.0/users/notification/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserNotificationResourcePrefix + "/{id}", UserNotificationResource.class);
String UserUncheckedNotificationResourcePrefix = "/uncheckedNotification";
// API for user getting unread notificaitons: /api/v1.0/users/uncheckedNotification/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserUncheckedNotificationResourcePrefix + "/{id}", UserUncheckedNotificationResource.class);
String UserUncheckedLetterResourcePefix = "/uncheckedLetter";
// API for user getting unread letters: /api/v1.0/users/uncheckedLetter/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserUncheckedLetterResourcePefix + "/{id}", UserUncheckedLetterResource.class);
String UserSearchHistoryResourcePrefix = "/searchHistory";
// API for user getting history messages: /api/v1.0/users/searchHistory/:id
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + userServicePrefix + UserSearchHistoryResourcePrefix + "/{id}", UserSearchHistoryResource.class);
/** --------------------- APIs for general module (legacy from v0.9) ------------------ **/
String generalServicePrefix = "/general";
// API for feedback module: /api/v1.0/general/*
String feedBackResourcePrefix = "/feedBack";
// API for feed back: /api/v1.0/general/feedBack
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + generalServicePrefix + feedBackResourcePrefix, FeedBackResource.class);
/** APIs for location module**/
String locationServicePrefix = "/location";
// API for location module: /api/v1.0/location/*
String locationDefaultResourcePrefix = "/default";
// API for location default resources: /api/v1.0/location/default
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + locationServicePrefix + locationDefaultResourcePrefix, LocationDefaultResource.class);
/** --------------------- APIs for Administrator ------------------ **/
String adminServicePrefix = "/admin";
// API for single messages: /api/v1.0/admin/*
String StateChangeResourcePrefix = "/stateChange";
// API for admin state changes actions on user/message/transaction: /api/v1.0/admin/stateChange
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + adminServicePrefix + StateChangeResourcePrefix, AdminStateChangeResource.class);
String RoutineResourcePrefix = "/routine";
// API for admin to force routine tasks to take place: /api/v1.0/admin/routine
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + adminServicePrefix + RoutineResourcePrefix, AdminRoutineResource.class);
String StatAnalysisPrefix = "/stat";
// API for admin to analyze statistic of data service: /api/v1.0/admin/stat
router.attach(CarpoolConfig.applicationPrefix + CarpoolConfig.versionPrefix + adminServicePrefix + StatAnalysisPrefix + "/{type}", AdminStatResource.class);
return router;
}
}