Go to the documentation of this file.
19package org.sleuthkit.autopsy.texttranslation.translators;
21import com.google.gson.JsonArray;
22import com.google.gson.JsonObject;
23import com.google.gson.JsonParser;
25import java.io.IOException;
26import javax.swing.JPanel;
27import okhttp3.MediaType;
28import okhttp3.OkHttpClient;
29import okhttp3.Request;
30import okhttp3.RequestBody;
31import okhttp3.Response;
32import org.openide.util.NbBundle.Messages;
33import org.openide.util.lookup.ServiceProvider;
34import org.sleuthkit.autopsy.coreutils.ThreadConfined;
35import org.sleuthkit.autopsy.texttranslation.TextTranslator;
36import org.sleuthkit.autopsy.texttranslation.TranslationConfigException;
37import org.sleuthkit.autopsy.texttranslation.TranslationException;
49 private static final String
BASE_URL =
"https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=";
54 private final OkHttpClient
CLIENT =
new OkHttpClient();
72 static String getTranlatorUrl(String languageCode) {
73 return BASE_URL + languageCode;
88 MediaType mediaType = MediaType.parse(
"application/json");
90 JsonArray jsonArray =
new JsonArray();
91 JsonObject jsonObject =
new JsonObject();
92 jsonObject.addProperty(
"Text",
string);
93 jsonArray.add(jsonObject);
94 String bodyString = jsonArray.toString();
96 RequestBody body = RequestBody.create(mediaType,
98 Request request =
new Request.Builder()
99 .url(getTranlatorUrl(
settings.getTargetLanguageCode())).post(body)
100 .addHeader(
"Ocp-Apim-Subscription-Key",
settings.getAuthenticationKey())
101 .addHeader(
"Content-type",
"application/json").build();
102 Response response =
CLIENT.newCall(request).execute();
103 return response.body().string();
108 if (
settings.getAuthenticationKey() ==
null ||
settings.getAuthenticationKey().isEmpty()) {
109 throw new TranslationException(
"Bing Translator has not been configured, authentication key needs to be specified");
111 String toTranslate =
string.trim();
127 throw new TranslationException(
"Exception while attempting to translate using BingTranslator", ex);
131 @Messages({
"BingTranslator.name.text=Bing Translator"})
134 return Bundle.BingTranslator_name_text();
170 JsonArray responses = JsonParser.parseString(json_text).getAsJsonArray();
172 JsonObject response0 = responses.get(0).getAsJsonObject();
173 JsonArray translations = response0.getAsJsonArray(
"translations");
174 JsonObject translation0 = translations.get(0).getAsJsonObject();
175 return translation0.get(
"text").getAsString();
176 }
catch (IllegalStateException | ClassCastException | NullPointerException | IndexOutOfBoundsException e) {
final OkHttpClient CLIENT
String translate(String string)
String parseJSONResponse(String json_text)
JPanel getSettingsPanel()
static final String BASE_URL
BingTranslatorSettingsPanel settingsPanel
final BingTranslatorSettings settings
String postTranslationRequest(String string)
static final int MAX_STRING_LENGTH
Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a
Creative Commons Attribution-Share Alike 3.0 United States License.