| /* |
| * Copyright 2019 Google LLC |
| * |
| * 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 |
| * |
| * https://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 org.jetbrains.dokka.Utilities |
| |
| import okhttp3.OkHttpClient |
| import okhttp3.Request |
| import java.io.File |
| import java.io.FileOutputStream |
| |
| object DownloadSamples { |
| |
| /** HTTP Client to make requests **/ |
| val client = OkHttpClient() |
| |
| /** |
| * Function that downloads samples based on the directory structure described in hashmap |
| */ |
| fun downloadSamples(): Boolean { |
| |
| //loop through each directory of AOSP code in SamplesPathsToURLs.kt |
| filepathsToUrls.forEach { (filepath, url) -> |
| |
| //build request using each URL |
| val request = Request.Builder() |
| .url(url) |
| .build() |
| |
| val response = client.newCall(request).execute() |
| |
| if (response.isSuccessful) { |
| |
| //save .tar.gz file to filepath designated by map |
| val currentFile = File(filepath) |
| currentFile.mkdirs() |
| |
| val fos = FileOutputStream("$filepath.tar.gz") |
| fos.write(response.body?.bytes()) |
| fos.close() |
| |
| //Unzip, Untar, and delete compressed file after |
| extractFiles(filepath) |
| |
| } else { |
| println("Error Downloading Samples: $response") |
| return false |
| } |
| } |
| |
| println("Successfully completed download of samples.") |
| return true |
| |
| } |
| |
| /** |
| * Execute bash commands to extract file, then delete archive file |
| */ |
| private fun extractFiles(pathToFile: String) { |
| |
| ProcessBuilder() |
| .command("tar","-zxf", "$pathToFile.tar.gz", "-C", pathToFile) |
| .redirectError(ProcessBuilder.Redirect.INHERIT) |
| .redirectOutput(ProcessBuilder.Redirect.INHERIT) |
| .start() |
| .waitFor() |
| |
| ProcessBuilder() |
| .command("rm", "$pathToFile.tar.gz") |
| .redirectError(ProcessBuilder.Redirect.INHERIT) |
| .redirectOutput(ProcessBuilder.Redirect.INHERIT) |
| .start() |
| .waitFor() |
| } |
| |
| } |