Store Profile Picture on AWS

Save the profile picture to AWS so that the user need not retrieve it every time.
This commit is contained in:
NMerz
2020-11-29 15:19:10 -05:00
parent bede2fc1a0
commit 70195632f8
7 changed files with 254 additions and 5 deletions

View File

@@ -0,0 +1,34 @@
import java.sql.ResultSet;
import java.sql.SQLException;
public class Picture {
String base64EncodedImage;
public Picture(ResultSet rs) {
try {
this.base64EncodedImage = rs.getString("base64image");
} catch (SQLException throwables) {
throwables.printStackTrace();
this.base64EncodedImage = null;
}
}
public Picture(String base64EncodedImage) {
this.base64EncodedImage = base64EncodedImage;
}
@Override
public String toString() {
return "Picture{" +
"base64EncodedImage='" + base64EncodedImage + '\'' +
'}';
}
public String getBase64EncodedImage() {
return base64EncodedImage;
}
public void setBase64EncodedImage(String base64EncodedImage) {
this.base64EncodedImage = base64EncodedImage;
}
}

View File

@@ -0,0 +1,12 @@
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.util.Map;
public class PictureGET implements RequestHandler<Map<String,Object>, Object> {
public Object handleRequest(Map<String, Object> inputMap, Context unfilled) {
return BasicHandler.handleRequest(inputMap, unfilled, PictureGetter.class);
}
}

View File

@@ -0,0 +1,34 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class PictureGetter implements CallHandler {
private final Connection connection;
private final String cognitoID;
private final String GET_ITEM = "SELECT * FROM Pictures WHERE cognitoID = ?;";
public PictureGetter(Connection connection, String cognitoID) {
this.connection = connection;
this.cognitoID = cognitoID;
}
@Override
public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryMap, String cognitoID) throws SQLException {
PreparedStatement statement = connection.prepareStatement(GET_ITEM);
if (!queryMap.get("id").toString().equals("profile")) {
throw new IllegalArgumentException("Only profile pictures are currently supported.");
}
statement.setString(1, cognitoID);
System.out.println(statement);
ResultSet queryResults = statement.executeQuery();
queryResults.first();
System.out.println(queryResults);
Picture retrievedPicture = new Picture(queryResults);
// System.out.println(retrievedPicture);
return retrievedPicture;
}
}

View File

@@ -0,0 +1,11 @@
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.util.Map;
public class PicturePUT implements RequestHandler<Map<String,Object>, Object> {
public Object handleRequest(Map<String, Object> inputMap, Context unfilled) {
return BasicHandler.handleRequest(inputMap, unfilled, PicturePutter.class);
}
}

View File

@@ -0,0 +1,28 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class PicturePutter implements CallHandler {
private Connection connection;
private String cognitoID;
public PicturePutter(Connection connection, String cognitoID) {
this.connection = connection;
this.cognitoID = cognitoID;
}
final private String STORE_PICTURE_SQL = "REPLACE INTO Pictures(cognitoID, base64image) VALUES(?, ?);";
public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryString, String cognitoID) throws SQLException {
PreparedStatement storePicture = connection.prepareStatement(STORE_PICTURE_SQL);
storePicture.setString(1, cognitoID);
storePicture.setString(2, bodyMap.get("base64EncodedImage").toString());
System.out.println(storePicture);
storePicture.executeUpdate();
connection.commit();
return null;
}
}