package com.cardshifter.api.incoming;
import com.cardshifter.api.messages.Message;
/**
* Make a specific type of request to the server.
* <p>
* This is used to request an action from the server which requires server-side information.
*/
public class ServerQueryMessage extends Message {
/**
* Types of request available.
* <li>USERS : Request list of available users.
* <li>DECK_BUILDER : Request the deck builder, which queries information both server-side (card sets) and client-side (saved decks).
*/
public enum Request {
USERS,
DECK_BUILDER,
STATUS,
}
private final Request request;
private final String message;
/** Constructor for USERS request. */
ServerQueryMessage() {
this(Request.USERS);
}
/**
* Constructor.
* @param request This request
*/
public ServerQueryMessage(Request request) {
this(request, "");
}
/**
* Constructor.
* @param request This request
* @param message The message accompanying this request
*/
public ServerQueryMessage(Request request, String message) {
super("query");
this.request = request;
this.message = message;
}
/** @return This request */
public Request getRequest() {
return request;
}
/** @return The message accompanying this request */
public String getMessage() {
return message;
}
/** @return This request as converted to String */
@Override
public String toString() {
return getClass().getSimpleName() + ": Request " + request + " message: " + message;
}
}