diff options
Diffstat (limited to 'src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java')
-rw-r--r-- | src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java b/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java deleted file mode 100644 index d331d4b..0000000 --- a/src/main/java/com/android/vts/api/BigtableLegacyJsonServlet.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2016 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you - * may not use this file except in compliance with the License. You may - * obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.android.vts.api; - -import com.android.vts.proto.VtsReportMessage.TestReportMessage; -import com.android.vts.servlet.BaseServlet; -import com.android.vts.util.DatastoreHelper; -import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; -import com.google.api.client.http.javanet.NetHttpTransport; -import com.google.api.client.json.jackson.JacksonFactory; -import com.google.api.services.oauth2.Oauth2; -import com.google.api.services.oauth2.model.Tokeninfo; -import com.google.protobuf.InvalidProtocolBufferException; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.apache.commons.codec.binary.Base64; -import org.json.JSONException; -import org.json.JSONObject; - -/** REST endpoint for posting data JSON to the Dashboard. */ -@Deprecated -public class BigtableLegacyJsonServlet extends HttpServlet { - private static String SERVICE_CLIENT_ID; - private static final String SERVICE_NAME = "VTS Dashboard"; - private static final Logger logger = - Logger.getLogger(BigtableLegacyJsonServlet.class.getName()); - - /** System Configuration Property class */ - protected Properties systemConfigProp = new Properties(); - - @Override - public void init(ServletConfig cfg) throws ServletException { - super.init(cfg); - - try { - InputStream defaultInputStream = - BigtableLegacyJsonServlet.class - .getClassLoader() - .getResourceAsStream("config.properties"); - systemConfigProp.load(defaultInputStream); - - SERVICE_CLIENT_ID = systemConfigProp.getProperty("appengine.serviceClientID"); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void doPost(HttpServletRequest request, HttpServletResponse response) - throws IOException { - // Retrieve the params - String payload = new String(); - JSONObject payloadJson; - try { - String line = null; - BufferedReader reader = request.getReader(); - while ((line = reader.readLine()) != null) { - payload += line; - } - payloadJson = new JSONObject(payload); - } catch (IOException | JSONException e) { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - logger.log(Level.WARNING, "Invalid JSON: " + payload); - return; - } - - // Verify service account access token. - boolean authorized = false; - if (payloadJson.has("accessToken")) { - String accessToken = payloadJson.getString("accessToken").trim(); - GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken); - Oauth2 oauth2 = - new Oauth2.Builder(new NetHttpTransport(), new JacksonFactory(), credential) - .setApplicationName(SERVICE_NAME) - .build(); - Tokeninfo tokenInfo = oauth2.tokeninfo().setAccessToken(accessToken).execute(); - if (tokenInfo.getIssuedTo().equals(SERVICE_CLIENT_ID)) { - authorized = true; - } - } - - if (!authorized) { - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - return; - } - - // Parse the desired action and execute the command - try { - if (payloadJson.has("verb")) { - switch (payloadJson.getString("verb")) { - case "createTable": - logger.log(Level.INFO, "Deprecated verb: createTable."); - break; - case "insertRow": - insertData(payloadJson); - break; - default: - logger.log( - Level.WARNING, - "Invalid Datastore REST verb: " + payloadJson.getString("verb")); - throw new IOException("Unsupported POST verb."); - } - } - } catch (IOException e) { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return; - } - response.setStatus(HttpServletResponse.SC_OK); - } - - /** - * Inserts a data into the Cloud Datastore - * - * @param payloadJson The JSON object representing the row to be inserted. Of the form: { - * (deprecated) 'tableName' : 'table', (deprecated) 'rowKey' : 'row', (deprecated) 'family' - * : 'family', (deprecated) 'qualifier' : 'qualifier', 'value' : 'value' } - * @throws IOException - */ - private void insertData(JSONObject payloadJson) throws IOException { - if (!payloadJson.has("value")) { - logger.log(Level.WARNING, "Missing attributes for datastore api insertRow()."); - return; - } - try { - byte[] value = Base64.decodeBase64(payloadJson.getString("value")); - TestReportMessage testReportMessage = TestReportMessage.parseFrom(value); - } catch (InvalidProtocolBufferException e) { - logger.log(Level.WARNING, "Invalid report posted to dashboard."); - } - } -} |