package gov.nysenate.openleg.model.auth;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.time.LocalDateTime;
import java.util.Optional;
public class ApiRequest
{
/** The time at which an ApiRequest is made */
private LocalDateTime requestTime;
/** The requested URL */
private String url;
/** The IP Address that made the request */
private InetAddress ipAddress;
/** The request method used */
private String requestMethod;
/** THe User Agent that made this request */
private String userAgent;
/** The user's api key, if provided */
private String apiKey;
/** Reference to the ApiUser if applicable */
private ApiUser apiUser;
/** A unique identifier used to specify each request made */
private Integer requestId;
/** --- Constructors --- */
public ApiRequest() {}
public ApiRequest (HttpServletRequest request, LocalDateTime requestDateTime) {
if (request != null) {
this.apiKey = request.getParameter("key");
this.userAgent = request.getHeader("User-Agent");
try {
this.ipAddress = InetAddress.getByName(request.getRemoteAddr());
} catch (UnknownHostException e) {
// Ignore
}
this.requestMethod = request.getMethod();
this.url = request.getRequestURI() + ((request.getQueryString() != null) ? ("?" + request.getQueryString()) : "");
this.requestTime = requestDateTime;
}
}
/** --- Basic Getters/Setters --- */
public LocalDateTime getRequestTime() {
return requestTime;
}
public void setRequestTime(LocalDateTime requestTime) {
this.requestTime = requestTime;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public InetAddress getIpAddress() {
return ipAddress;
}
public void setIpAddress(InetAddress ipAddress) {
this.ipAddress = ipAddress;
}
public String getRequestMethod() {
return requestMethod;
}
public void setRequestMethod(String requestMethod) {
this.requestMethod = requestMethod;
}
public String getUserAgent() {
return userAgent;
}
public void setUserAgent(String userAgent) {
this.userAgent = userAgent;
}
public String getApiKey() {
return apiKey;
}
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
public ApiUser getApiUser() {
return apiUser;
}
public void setApiUser(ApiUser apiUser) {
this.apiUser = apiUser;
}
public Integer getRequestId() {
return requestId;
}
public void setRequestId(int requestId) {
this.requestId = requestId;
}
}