private static void deleteFolder(final File folder) { if (!folder.exists()) { return; } File[] files = folder.listFiles(); if (files != null) { for (final File file : files) { if (file.isDirectory()) { deleteFolder(file); } else { if (!file.delete()) { throw new GradleException("Failed to delete: " + file); } } } } if (!folder.delete()) { throw new GradleException("Failed to delete: " + folder); } }
/** * Handle a client object for maps (@string/google_maps_key). * @param clientObject the client Json object. * @throws IOException */ private void handleMapsService(JsonObject clientObject, Map<String, String> resValues) throws IOException { JsonObject mapsService = getServiceByName(clientObject, "maps_service"); if (mapsService == null) return; String apiKey = getAndroidApiKey(clientObject); if (apiKey != null) { resValues.put("google_maps_key", apiKey); return; } throw new GradleException("Missing api_key/current_key object"); }
getProject().getLogger().warn("Parsing json file: " + quickstartFile.getPath()); deleteFolder(intermediateDir); if (!intermediateDir.mkdirs()) { throw new GradleException("Failed to create folder: " + intermediateDir); Map<String, Map<String, String>> resAttributes = new TreeMap<>(); handleProjectNumberAndProjectId(rootObject, resValues); handleFirebaseUrl(rootObject, resValues); JsonObject clientObject = getClientForPackageName(rootObject); handleAnalytics(clientObject, resValues); handleMapsService(clientObject, resValues); handleGoogleApiKey(clientObject, resValues); handleGoogleAppId(clientObject, resValues); handleWebClientId(clientObject, resValues); } else { throw new GradleException("No matching client found for package name '" + getPackageName() + "'"); .write(getValuesContent(resValues, resAttributes));
/** * Handle a client object for analytics (@xml/global_tracker) * @param clientObject the client Json object. * @throws IOException */ private void handleAnalytics(JsonObject clientObject, Map<String, String> resValues) throws IOException { JsonObject analyticsService = getServiceByName(clientObject, "analytics_service"); if (analyticsService == null) return; JsonObject analyticsProp = analyticsService.getAsJsonObject("analytics_property"); if (analyticsProp == null) return; JsonPrimitive trackingId = analyticsProp.getAsJsonPrimitive("tracking_id"); if (trackingId == null) return; resValues.put("ga_trackingId", trackingId.getAsString()); File xml = new File(intermediateDir, "xml"); if (!xml.exists() && !xml.mkdirs()) { throw new GradleException("Failed to create folder: " + xml); } Files.write(getGlobalTrackerContent( trackingId.getAsString()), new File(xml, "global_tracker.xml"), Charsets.UTF_8); }
private void handleGoogleApiKey(JsonObject clientObject, Map<String, String> resValues) { String apiKey = getAndroidApiKey(clientObject); if (apiKey != null) { resValues.put("google_api_key", apiKey); // TODO: remove this once SDK starts to use google_api_key. resValues.put("google_crash_reporting_api_key", apiKey); return; } // if google_crash_reporting_api_key is missing. // throw new GradleException("Missing api_key/current_key object"); throw new GradleException("Missing api_key/current_key object"); }
/** * Finds a service by name in the client object. Returns null if the service is not found or if * the service is disabled. * * @param clientObject the json object that represents the client. * @param serviceName the service name * @return the service if found. */ private JsonObject getServiceByName(JsonObject clientObject, String serviceName) { JsonObject services = clientObject.getAsJsonObject("services"); if (services == null) return null; JsonObject service = services.getAsJsonObject(serviceName); if (service == null) return null; JsonPrimitive status = service.getAsJsonPrimitive("status"); if (status == null) return null; String statusStr = status.getAsString(); if (STATUS_DISABLED.equals(statusStr)) return null; if (!STATUS_ENABLED.equals(statusStr)) { getLogger() .warn( String.format( "Status with value '%1$s' for service '%2$s' is unknown", statusStr, serviceName)); return null; } return service; }
Project project = getProject(); ConfigurationContainer configurations = project.getConfigurations(); if (configurations == null) {
@TaskAction public void action() throws IOException { checkVersionConflict(); if (!quickstartFile.isFile()) { throw new GradleException(String.format("File %s is missing. " + getProject().getLogger().warn("Parsing json file: " + quickstartFile.getPath()); deleteFolder(intermediateDir); if (!intermediateDir.mkdirs()) { throw new GradleException("Failed to create folder: " + intermediateDir); Map<String, Map<String, String>> resAttributes = new TreeMap<String, Map<String, String>>(); handleProjectNumberAndProjectId(rootObject, resValues); handleFirebaseUrl(rootObject, resValues); JsonObject clientObject = getClientForPackageName(rootObject); handleAnalytics(clientObject, resValues); handleMapsService(clientObject, resValues); handleGoogleApiKey(clientObject, resValues); handleGoogleAppId(clientObject, resValues); handleWebClientId(clientObject, resValues); } else { throw new GradleException("No matching client found for package name '" + packageName + "'"); Files.write(getValuesContent(resValues, resAttributes), new File(values, "values.xml"), Charsets.UTF_8);
/** * Handle a client object for analytics (@xml/global_tracker) * * @param clientObject the client Json object. * @throws IOException */ private void handleAnalytics(JsonObject clientObject, Map<String, String> resValues) throws IOException { JsonObject analyticsService = getServiceByName(clientObject, "analytics_service"); if (analyticsService == null) return; JsonObject analyticsProp = analyticsService.getAsJsonObject("analytics_property"); if (analyticsProp == null) return; JsonPrimitive trackingId = analyticsProp.getAsJsonPrimitive("tracking_id"); if (trackingId == null) return; resValues.put("ga_trackingId", trackingId.getAsString()); File xml = new File(intermediateDir, "xml"); if (!xml.exists() && !xml.mkdirs()) { throw new GradleException("Failed to create folder: " + xml); } Files.asCharSink(new File(xml, "global_tracker.xml"), Charsets.UTF_8) .write(getGlobalTrackerContent(trackingId.getAsString())); }
private void handleGoogleApiKey(JsonObject clientObject, Map<String, String> resValues) { String apiKey = getAndroidApiKey(clientObject); if (apiKey != null) { resValues.put("google_api_key", apiKey); // TODO: remove this once SDK starts to use google_api_key. resValues.put("google_crash_reporting_api_key", apiKey); return; } // if google_crash_reporting_api_key is missing. // throw new GradleException("Missing api_key/current_key object"); throw new GradleException("Missing api_key/current_key object"); }
/** * Finds a service by name in the client object. Returns null if the service is not found * or if the service is disabled. * * @param clientObject the json object that represents the client. * @param serviceName the service name * @return the service if found. */ private JsonObject getServiceByName(JsonObject clientObject, String serviceName) { JsonObject services = clientObject.getAsJsonObject("services"); if (services == null) return null; JsonObject service = services.getAsJsonObject(serviceName); if (service == null) return null; JsonPrimitive status = service.getAsJsonPrimitive("status"); if (status == null) return null; String statusStr = status.getAsString(); if (STATUS_DISABLED.equals(statusStr)) return null; if (!STATUS_ENABLED.equals(statusStr)) { getLogger().warn(String.format("Status with value '%1$s' for service '%2$s' is unknown", statusStr, serviceName)); return null; } return service; }
getProject().getLogger().warn("Parsing json file: " + quickstartFile.getPath()); deleteFolder(intermediateDir); if (!intermediateDir.mkdirs()) { throw new GradleException("Failed to create folder: " + intermediateDir); Map<String, Map<String, String>> resAttributes = new TreeMap<>(); handleProjectNumberAndProjectId(rootObject, resValues); handleFirebaseUrl(rootObject, resValues); JsonObject clientObject = getClientForPackageName(rootObject); handleAnalytics(clientObject, resValues); handleMapsService(clientObject, resValues); handleGoogleApiKey(clientObject, resValues); handleGoogleAppId(clientObject, resValues); handleWebClientId(clientObject, resValues); } else { throw new GradleException("No matching client found for package name '" + getPackageName() + "'"); .write(getValuesContent(resValues, resAttributes));
/** * Handle a client object for maps (@string/google_maps_key). * * @param clientObject the client Json object. * @throws IOException */ private void handleMapsService(JsonObject clientObject, Map<String, String> resValues) throws IOException { JsonObject mapsService = getServiceByName(clientObject, "maps_service"); if (mapsService == null) return; String apiKey = getAndroidApiKey(clientObject); if (apiKey != null) { resValues.put("google_maps_key", apiKey); return; } throw new GradleException("Missing api_key/current_key object"); }
/** * Handle a client object for analytics (@xml/global_tracker) * * @param clientObject the client Json object. * @throws IOException */ private void handleAnalytics(JsonObject clientObject, Map<String, String> resValues) throws IOException { JsonObject analyticsService = getServiceByName(clientObject, "analytics_service"); if (analyticsService == null) return; JsonObject analyticsProp = analyticsService.getAsJsonObject("analytics_property"); if (analyticsProp == null) return; JsonPrimitive trackingId = analyticsProp.getAsJsonPrimitive("tracking_id"); if (trackingId == null) return; resValues.put("ga_trackingId", trackingId.getAsString()); File xml = new File(intermediateDir, "xml"); if (!xml.exists() && !xml.mkdirs()) { throw new GradleException("Failed to create folder: " + xml); } Files.asCharSink(new File(xml, "global_tracker.xml"), Charsets.UTF_8) .write(getGlobalTrackerContent(trackingId.getAsString())); }
private void handleGoogleApiKey(JsonObject clientObject, Map<String, String> resValues) { String apiKey = getAndroidApiKey(clientObject); if (apiKey != null) { resValues.put("google_api_key", apiKey); // TODO: remove this once SDK starts to use google_api_key. resValues.put("google_crash_reporting_api_key", apiKey); return; } // if google_crash_reporting_api_key is missing. // throw new GradleException("Missing api_key/current_key object"); throw new GradleException("Missing api_key/current_key object"); }
private static void deleteFolder(final File folder) { if (!folder.exists()) { return; } File[] files = folder.listFiles(); if (files != null) { for (final File file : files) { if (file.isDirectory()) { deleteFolder(file); } else { if (!file.delete()) { throw new GradleException("Failed to delete: " + file); } } } } if (!folder.delete()) { throw new GradleException("Failed to delete: " + folder); } }
/** * Finds a service by name in the client object. Returns null if the service is not found or if * the service is disabled. * * @param clientObject the json object that represents the client. * @param serviceName the service name * @return the service if found. */ private JsonObject getServiceByName(JsonObject clientObject, String serviceName) { JsonObject services = clientObject.getAsJsonObject("services"); if (services == null) return null; JsonObject service = services.getAsJsonObject(serviceName); if (service == null) return null; JsonPrimitive status = service.getAsJsonPrimitive("status"); if (status == null) return null; String statusStr = status.getAsString(); if (STATUS_DISABLED.equals(statusStr)) return null; if (!STATUS_ENABLED.equals(statusStr)) { getLogger() .warn( String.format( "Status with value '%1$s' for service '%2$s' is unknown", statusStr, serviceName)); return null; } return service; }
/** * Handle a client object for maps (@string/google_maps_key). * * @param clientObject the client Json object. * @throws IOException */ private void handleMapsService(JsonObject clientObject, Map<String, String> resValues) throws IOException { JsonObject mapsService = getServiceByName(clientObject, "maps_service"); if (mapsService == null) return; String apiKey = getAndroidApiKey(clientObject); if (apiKey != null) { resValues.put("google_maps_key", apiKey); return; } throw new GradleException("Missing api_key/current_key object"); }
private static void deleteFolder(final File folder) { if (!folder.exists()) { return; } File[] files = folder.listFiles(); if (files != null) { for (final File file : files) { if (file.isDirectory()) { deleteFolder(file); } else { if (!file.delete()) { throw new GradleException("Failed to delete: " + file); } } } } if (!folder.delete()) { throw new GradleException("Failed to delete: " + folder); } } }