Update Google sheet response time files

pull/1/head
Akeela Azhar 2 years ago
parent 37bef26862
commit be786e1a78

@ -465,5 +465,10 @@
<artifactId>google-api-services-sheets</artifactId>
<version>v4-rev539-1.25.0</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.43.1</version>
</dependency>
</dependencies>
</project>

@ -1,108 +1,108 @@
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.googleapis.json.GoogleJsonError;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.services.sheets.v4.Sheets;
import com.google.api.services.sheets.v4.model.AppendValuesResponse;
import com.google.api.services.sheets.v4.model.ValueRange;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.osgi.service.application.ApplicationDescriptor.APPLICATION_NAME;
import static org.wso2.carbon.device.mgt.jaxrs.service.impl.GoogleSheet.JSON_FACTORY;
import static org.wso2.carbon.device.mgt.jaxrs.service.impl.GoogleSheet.getCredentials;
@SuppressWarnings("ALL")
@RestController
public class ApiResponseTime {
public static Object getstartTime() {
return null;
}
public static Object getendTime() {
return null;
}
public static Object getelapsedTime() {
return null;
}
public static void appendDetails(long startTime, long endTime, long elapsedTime)
throws GeneralSecurityException, IOException, URISyntaxException {
final String spreadsheetId = "1OZCS5NRwwSum9ai3ra4lABtU0UGW-9yLYgZk-aQfxpw";
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Sheets service =
new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
// Create a list of values to append to the sheet
List<Object> newList1 = new ArrayList<>(Arrays.asList(startTime, endTime, elapsedTime));
List<List<Object>> values = new ArrayList<>(Arrays.asList(newList1));
// Append the values to the sheet
AppendValuesResponse result = null;
try {
ValueRange valueRange = new ValueRange().setValues(values);
result = service.spreadsheets().values().append(spreadsheetId, "A2", valueRange)
.setValueInputOption("RAW").execute();
System.out.printf("%d cells appended.", result.getUpdates().getUpdatedCells());
} catch (GoogleJsonResponseException e) {
GoogleJsonError error = e.getDetails();
if (((GoogleJsonError) error).getCode() == 404) {
System.out.printf("Spreadsheet not found with id '%s'.\n", spreadsheetId);
} else {
throw e;
}
}
}
@GetMapping("/my-api")
public String myApi() {
// Set the URL for the API call
String url = "/next-pending/operation/{type}/{id}";
try {
// Record the start time
long startTime = System.currentTimeMillis();
// Make the API call using the RestTemplate
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject(url, String.class);
// Record the end time
long endTime = System.currentTimeMillis();
// Calculate the elapsed time
long elapsedTime = endTime - startTime;
// Print the elapsed time in milliseconds
System.out.println("Start Time: " + startTime + " ms");
System.out.println("End Time: " + endTime + " ms");
System.out.println("Elapsed time: " + elapsedTime + " ms");
// Append the API call details to a Google Sheet
appendDetails(startTime, endTime, elapsedTime);
return response;
} catch (Exception e) {
e.printStackTrace();
return "Error occurred: " + e.getMessage();
}
}
}
//package org.wso2.carbon.device.mgt.jaxrs.service.impl;
//
//
//import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
//import com.google.api.client.googleapis.json.GoogleJsonError;
//import com.google.api.client.googleapis.json.GoogleJsonResponseException;
//import com.google.api.client.http.javanet.NetHttpTransport;
//import com.google.api.services.sheets.v4.Sheets;
//import com.google.api.services.sheets.v4.model.AppendValuesResponse;
//import com.google.api.services.sheets.v4.model.ValueRange;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.client.RestTemplate;
//
//import java.io.IOException;
//import java.net.URISyntaxException;
//import java.security.GeneralSecurityException;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//
//import static org.osgi.service.application.ApplicationDescriptor.APPLICATION_NAME;
//import static org.wso2.carbon.device.mgt.jaxrs.service.impl.GoogleSheet.JSON_FACTORY;
//import static org.wso2.carbon.device.mgt.jaxrs.service.impl.GoogleSheet.getCredentials;
//
//@SuppressWarnings("ALL")
//@RestController
//public class ApiResponseTime {
//
// public static Object getstartTime() {
// return null;
// }
//
// public static Object getendTime() {
// return null;
// }
//
// public static Object getelapsedTime() {
// return null;
// }
//
// public static void appendDetails(long startTime, long endTime, long elapsedTime)
// throws GeneralSecurityException, IOException, URISyntaxException {
// final String spreadsheetId = "1OZCS5NRwwSum9ai3ra4lABtU0UGW-9yLYgZk-aQfxpw";
// final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
//
// Sheets service =
// new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
// .setApplicationName(APPLICATION_NAME)
// .build();
//
// // Create a list of values to append to the sheet
// List<Object> newList1 = new ArrayList<>(Arrays.asList(startTime, endTime, elapsedTime));
// List<List<Object>> values = new ArrayList<>(Arrays.asList(newList1));
//
// // Append the values to the sheet
// AppendValuesResponse result = null;
// try {
// ValueRange valueRange = new ValueRange().setValues(values);
// result = service.spreadsheets().values().append(spreadsheetId, "A2", valueRange)
// .setValueInputOption("RAW").execute();
// System.out.printf("%d cells appended.", result.getUpdates().getUpdatedCells());
// } catch (GoogleJsonResponseException e) {
// GoogleJsonError error = e.getDetails();
// if (((GoogleJsonError) error).getCode() == 404) {
// System.out.printf("Spreadsheet not found with id '%s'.\n", spreadsheetId);
// } else {
// throw e;
// }
// }
// }
//
// @GetMapping("/my-api")
// public String myApi() {
// // Set the URL for the API call
// String url = "/next-pending/operation/{type}/{id}";
//
// try {
// // Record the start time
// long startTime = System.currentTimeMillis();
//
// // Make the API call using the RestTemplate
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject(url, String.class);
//
// // Record the end time
// long endTime = System.currentTimeMillis();
//
// // Calculate the elapsed time
// long elapsedTime = endTime - startTime;
//
// // Print the elapsed time in milliseconds
// System.out.println("Start Time: " + startTime + " ms");
// System.out.println("End Time: " + endTime + " ms");
// System.out.println("Elapsed time: " + elapsedTime + " ms");
//
// // Append the API call details to a Google Sheet
// appendDetails(startTime, endTime, elapsedTime);
//
// return response;
//
// } catch (Exception e) {
// e.printStackTrace();
// return "Error occurred: " + e.getMessage();
// }
// }
//}
//

@ -69,7 +69,7 @@ import java.util.Map;
@Path("/device/agent")
public class DeviceAgentServiceImpl implements DeviceAgentService {
private static final Log log = LogFactory.getLog(DeviceAgentServiceImpl.class);
static final Log log = LogFactory.getLog(DeviceAgentServiceImpl.class);
private static final String POLICY_MONITOR = "POLICY_MONITOR";
@POST
@Path("/enroll")

@ -1,34 +1,34 @@
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.sheets.v4.SheetsScopes;
import java.io.File;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class GoogleSheet {
private static final String APPLICATION_NAME = "ApiCall";
static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens/path";
private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS,SheetsScopes.DRIVE);
static GoogleCredential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
throws IOException, GeneralSecurityException {
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("apicall@apicall-382608.iam.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File(new File("/home/entgra/MyProject/device-mgt-core/components/device-mgt/org.wso2.carbon.device.mgt.api/target/credentials.p12")).setServiceAccountScopes(Collections.singleton(SheetsScopes.SPREADSHEETS)).build();
credential.refreshToken();
return credential;
}
}
//package org.wso2.carbon.device.mgt.jaxrs.service.impl;
//
//import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
//import com.google.api.client.http.javanet.NetHttpTransport;
//import com.google.api.client.json.JsonFactory;
//import com.google.api.client.json.gson.GsonFactory;
//import com.google.api.services.sheets.v4.SheetsScopes;
//
//import java.io.File;
//import java.io.IOException;
//import java.security.GeneralSecurityException;
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.List;
//
//public class GoogleSheet {
//
// private static final String APPLICATION_NAME = "ApiCall";
// static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
// private static final String TOKENS_DIRECTORY_PATH = "tokens/path";
// private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS,SheetsScopes.DRIVE);
//
// static GoogleCredential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
// throws IOException, GeneralSecurityException {
// GoogleCredential credential = new GoogleCredential.Builder()
// .setTransport(HTTP_TRANSPORT)
// .setJsonFactory(JSON_FACTORY)
// .setServiceAccountId("apicall@apicall-382608.iam.gserviceaccount.com")
// .setServiceAccountPrivateKeyFromP12File(new File("/home/entgra/MyProject/device-mgt-core/components/device-mgt/org.wso2.carbon.device.mgt.api/target/credentials.p12")).setServiceAccountScopes(Collections.singleton(SheetsScopes.SPREADSHEETS)).build();
// credential.refreshToken();
// return credential;
// }
//
//}

@ -0,0 +1,102 @@
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.sheets.v4.Sheets;
import com.google.api.services.sheets.v4.SheetsScopes;
import com.google.api.services.sheets.v4.model.AppendValuesResponse;
import com.google.api.services.sheets.v4.model.ValueRange;
import javax.annotation.PreDestroy;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;
import static org.wso2.carbon.device.mgt.jaxrs.service.impl.DeviceAgentServiceImpl.log;
@Path("/pending/operations/{type}/{id}")
public class PendingOperationsResourceResponseTime {
private final Client client;
private final Sheets sheetsService;
private final String spreadsheetId;
private final String sheetName;
public PendingOperationsResourceResponseTime() throws IOException, GeneralSecurityException {
this.client = ClientBuilder.newClient();
// Build the credentials object using Google OAuth 2.0 authentication
Credential credential = GoogleCredential.getApplicationDefault().createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS));
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
// Create a Sheets service object to interact with the Google Sheets API
this.sheetsService = new Sheets.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("ApiCall")
.build();
// Set the spreadsheet ID and sheet name to write the results to
this.spreadsheetId = "1OZCS5NRwwSum9ai3ra4lABtU0UGW-9yLYgZk-aQfxpw";
this.sheetName = "Sheet1";
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getPendingOperations(@PathParam("type") String type, @PathParam("id") String deviceId) {
long startTime = System.currentTimeMillis();
Response apiResponse = client.target("http://example.com/api/pending-operations")
.queryParam("type", type)
.queryParam("deviceId", deviceId)
.request(MediaType.APPLICATION_JSON)
.get();
long endTime = System.currentTimeMillis();
long responseTime = endTime - startTime;
// log the response time
log.info("API response time: {} ms");
// write the results to Google Sheets
try {
writeResultsToSheet(startTime, endTime, responseTime);
} catch (IOException e) {
log.error("Error writing results to Google Sheets", e);
}
return apiResponse;
}
@PreDestroy
public void cleanup() {
client.close();
}
private void writeResultsToSheet(long startTime, long endTime, long responseTime) throws IOException {
// create a ValueRange object with the data to write
ValueRange valueRange = new ValueRange().setValues(Collections.singletonList(
Collections.singletonList(startTime + "," + endTime + "," + responseTime)));
// append the data to the Google Sheet
try {
AppendValuesResponse response = sheetsService.spreadsheets().values()
.append(spreadsheetId, sheetName, valueRange)
.setValueInputOption("RAW")
.execute();
log.info("Data written to Google Sheets: {}");
} catch (GoogleJsonResponseException e) {
log.error("Error writing data to Google Sheets: {}");
}
}
}
Loading…
Cancel
Save