public async Task <string> TranslateTextByAsyncModeAsync(
            RozettaApiUser rozettaApiUser,
            TextTranslationOption option,
            string[] text)
        {
            string url = baseUrl + "/translate/async";

            string jwtToken = await HttpUtils.GenerateJwtDataAsync(
                rozettaApiUser.AccessKey,
                rozettaApiUser.SecretKey,
                this.defautDuration,
                this.jwtTokenRequestUrl);

            Dictionary <string, object> headers = HttpUtils.BuildJwtHeaders(jwtToken);

            Dictionary <string, object> body = BuildBody(option, rozettaApiUser.ContractId, text);

            var content = await HttpUtils.SendAsync(HttpMethod.Post, url, headers, body);

            var byteArray = await content.ReadAsByteArrayAsync();

            var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

            var definition = new { status = "", data = new { queueId = "" } };

            var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition);

            if (serverResp.status != ResponseStatus.Success)
            {
                throw new Exception("text translation failed");
            }

            return(serverResp.data.queueId);
        }
        public async Task <TextTranslationResult[]> TranslateFlowAsync(RozettaApiUser rozettaApiUser, TextTranslationOption option, string[] text)
        {
            this.rozettaApiUser = rozettaApiUser;

            this.queueId = await client.TranslateTextByAsyncModeAsync(rozettaApiUser, option, text);

            if (aTimer != null)
            {
                StopTimer(aTimer);
            }

            aTimer = new System.Timers.Timer();

            aTimer.Interval = Interval;

            aTimer.Elapsed += OnTimedEvent;

            aTimer.AutoReset = true;

            aTimer.Enabled = true;

            while (!done)
            {
                Thread.Sleep(1000);
            }

            return(result);
        }
示例#3
0
        public async Task <bool> DeleteUserDictionaryItemAsync(
            RozettaApiUser rozettaApiUser, int id)
        {
            string url = baseUrl + "/dictionary/" + id;

            string jwtToken = await HttpUtils.GenerateJwtDataAsync(
                rozettaApiUser.AccessKey,
                rozettaApiUser.SecretKey,
                this.defautDuration,
                this.jwtTokenRequestUrl);

            Dictionary <string, object> headers = HttpUtils.BuildJwtHeaders(jwtToken);

            var content = await HttpUtils.SendAsync(HttpMethod.Delete, url, headers, null);

            var byteArray = await content.ReadAsByteArrayAsync();

            var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

            var definition = new { status = "" };

            var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition);

            if (serverResp.status != ResponseStatus.Success)
            {
                throw new Exception("delete user dictionary item failed");
            }

            return(true);
        }
示例#4
0
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            UserInfo.init("config.json");
            string         baseUrl        = "https://translate.rozetta-api.io/api/v1";
            RozettaApiUser rozettaApiUser = new RozettaApiUser {
                AccessKey  = UserInfo.ROZETTA_API_ACCESS_KEY,
                SecretKey  = UserInfo.ROZETTA_API_SECRET_KEY,
                ContractId = UserInfo.TEXT_CONTRACT_ID
            };

            // テキスト翻訳を試す
            await TestTextTranslation(baseUrl, rozettaApiUser);

            // ユーザー辞書を試す
            await TestUserDictionary(baseUrl, rozettaApiUser);
        }
示例#5
0
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            UserInfo.init("config.json");
            FileTranslateFlow flow = new FileTranslateFlow("https://translate.rozetta-api.io/api/v1");

            string[]       files          = { @"C:\mydocuments\morning.docx" };
            string[]       langs          = { "en" };
            int            fieldId        = 1;
            bool           done           = false;
            RozettaApiUser rozettaApiUser = new RozettaApiUser {
                AccessKey  = UserInfo.ROZETTA_API_ACCESS_KEY,
                SecretKey  = UserInfo.ROZETTA_API_SECRET_KEY,
                ContractId = UserInfo.FILE_CONTRACT_ID
            };

            done = await flow.RozettaApiFlowAsync(rozettaApiUser, files, langs, fieldId);

            Debug.Assert(done);
        }
        public async Task <bool> RozettaApiFlowAsync(RozettaApiUser rozettaApiUser, string[] files, string[] langs, int fieldId)
        {
            this.rozettaApiUser = rozettaApiUser;

            long timeStamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();

            FileTranslationOption option = new FileTranslationOption
            {
                Langs     = langs,
                AccessKey = rozettaApiUser.AccessKey,
                SecretKey = rozettaApiUser.SecretKey,
                Nonce     = timeStamp.ToString(),
                FieldId   = fieldId
            };

            translateId = await client.TranslateAsync(files, rozettaApiUser.ContractId, option);

            if (aTimer != null)
            {
                StopTimer(aTimer);
            }

            aTimer = new System.Timers.Timer();

            aTimer.Interval = Interval;

            aTimer.Elapsed += OnTimedEvent;

            aTimer.AutoReset = true;

            aTimer.Enabled = true;

            while (!done)
            {
                Thread.Sleep(1000);
            }

            return(true);
        }
示例#7
0
        public async Task <bool> AddUserDictionaryItemAsync(
            RozettaApiUser rozettaApiUser, UserDictionaryItem item)
        {
            string url = baseUrl + "/dictionary";

            string jwtToken = await HttpUtils.GenerateJwtDataAsync(
                rozettaApiUser.AccessKey,
                rozettaApiUser.SecretKey,
                this.defautDuration,
                this.jwtTokenRequestUrl);

            Dictionary <string, object> headers = HttpUtils.BuildJwtHeaders(jwtToken);

            Dictionary <string, object> body = new Dictionary <string, object>()
            {
                { "fromLang", item.fromLang },
                { "fromText", item.fromText },
                { "toLang", item.toLang },
                { "toText", item.toText }
            };

            var content = await HttpUtils.SendAsync(HttpMethod.Post, url, headers, body);

            var byteArray = await content.ReadAsByteArrayAsync();

            var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

            var definition = new { status = "" };

            var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition);

            if (serverResp.status != ResponseStatus.Success)
            {
                throw new Exception("add user dictionary item failed");
            }

            return(true);
        }
        public async Task <TextTranslationResult[]> GetTranslationResultAsync(
            RozettaApiUser rozettaApiUser,
            string queueId)
        {
            string url = baseUrl + "/translate/async/" + queueId;

            string jwtToken = await HttpUtils.GenerateJwtDataAsync(
                rozettaApiUser.AccessKey,
                rozettaApiUser.SecretKey,
                this.defautDuration,
                this.jwtTokenRequestUrl);

            Dictionary <string, object> headers = HttpUtils.BuildJwtHeaders(jwtToken);

            var content = await HttpUtils.SendAsync(HttpMethod.Get, url, headers, null);

            var byteArray = await content.ReadAsByteArrayAsync();

            var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

            var definition = new { status = "", data = new { taskId = "", translationResult = new TextTranslationResult[] { } } };

            var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition);

            if (serverResp.status != ResponseStatus.Success)
            {
                throw new Exception("text translation failed");
            }

            if (serverResp.data.taskId == null)
            {
                return(new TextTranslationResult[] { });
            }

            return(serverResp.data.translationResult);
        }
        public async Task <bool> DownloadZipAsync(RozettaApiUser rozettaApiUser, string ids, string savePath)
        {
            string url = baseUrl + "/downloads?ids=" + HttpUtility.UrlEncode(ids);

            string apiPath   = HttpUtility.UrlDecode(new Uri(url).PathAndQuery);
            string nonce     = DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString();
            string signature = Utils.GetSignature(nonce, apiPath, rozettaApiUser.SecretKey);

            Dictionary <string, object> headers = new Dictionary <string, object> {
                { "accessKey", rozettaApiUser.AccessKey },
                { "nonce", nonce },
                { "signature", signature }
            };

            var content = await HttpUtils.SendAsync(HttpMethod.Get, url, headers, null);

            MemoryStream stream = new MemoryStream();

            await content.CopyToAsync(stream);

            Utils.UnzipStream(stream, savePath);

            return(true);
        }
        public async Task <Translate> GetOneHistoryAsync(RozettaApiUser rozettaApiUser, string translateId)
        {
            string url = baseUrl + "/translate-result/" + translateId;

            Dictionary <string, object> headers = HttpUtils.BuildHeaders(rozettaApiUser, url);

            var content = await HttpUtils.SendAsync(HttpMethod.Get, url, headers, null);

            var byteArray = await content.ReadAsByteArrayAsync();

            var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

            var definition = new { status = "", data = new Translate {
                                   } };

            var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition);

            if (serverResp.status != ResponseStatus.Success)
            {
                return(null);
            }

            return(serverResp.data);
        }
 public Translate[] GetAllHistories(RozettaApiUser rozettaApiUser)
 {
     Translate[] ret = { };
     return(ret);
 }
示例#12
0
        private static async System.Threading.Tasks.Task TestUserDictionary(string baseUrl, RozettaApiUser rozettaApiUser)
        {
            UserDictionaryClient userDictionaryClient = new UserDictionaryClient(baseUrl);

            UserDictionaryItem item = new UserDictionaryItem {
                fromLang = "en", fromText = "hello", toLang = "ja", toText = "おはよう"
            };

            bool bRet;

            string[] text = new string[] { "hello" };
            TextTranslationOption option = new TextTranslationOption
            {
                FieldId    = 1,
                SourceLang = "en",
                TargetLang = "ja"
            };
            TextTranslationClient textTranslationClient = new TextTranslationClient(baseUrl);

            TextTranslationResult[] textTranslationResults;
            UserDictionaryItem[]    userDictionaryItems;

            // ユーザー辞書を登録
            bRet = await userDictionaryClient.AddUserDictionaryItemAsync(rozettaApiUser, item);

            Debug.Assert(bRet);

            // ユーザー辞書を取得
            userDictionaryItems = await userDictionaryClient.GetUserDictionaryAsync(rozettaApiUser);

            Debug.Assert(userDictionaryItems.Length == 1);
            Debug.Assert(userDictionaryItems[0] == item);

            // ユーザー辞書を確認 -----------------------------------------------------
            textTranslationResults = await textTranslationClient.TranslateTextBySyncModeAsync(rozettaApiUser, option, text);

            Debug.Assert(textTranslationResults.Length == 1);
            Debug.Assert(textTranslationResults[0].sourceText == "hello");
            Debug.Assert(textTranslationResults[0].translatedText == "おはよう");
            // ユーザー辞書を確認 ----------------------------------------------------- end


            // ユーザー辞書を削除
            bRet = await userDictionaryClient.DeleteUserDictionaryItemAsync(rozettaApiUser, userDictionaryItems[0].id);

            Debug.Assert(bRet);

            // ユーザー辞書数を確認
            userDictionaryItems = await userDictionaryClient.GetUserDictionaryAsync(rozettaApiUser);

            Debug.Assert(userDictionaryItems.Length == 0);
        }
示例#13
0
        private static async System.Threading.Tasks.Task TestTextTranslation(string baseUrl, RozettaApiUser rozettaApiUser)
        {
            string[] text = new string[] { "hello" };
            TextTranslationOption option = new TextTranslationOption
            {
                FieldId    = 1,
                TargetLang = "ja",
                SourceLang = "en"
            };
            TextTranslationClient textTranslationClient = new TextTranslationClient(baseUrl);

            //  同期テキスト翻訳
            TextTranslationResult[] ret = await textTranslationClient.TranslateTextBySyncModeAsync(rozettaApiUser, option, text);

            Debug.Assert(ret.Length == 1);
            Debug.Assert(ret[0].sourceText == "hello");
            Debug.Assert(ret[0].translatedText == "こんにちは");

            //  非同期テキスト翻訳
            TranslateTextByAsyncModeFlow flow = new TranslateTextByAsyncModeFlow(baseUrl);

            ret = await flow.TranslateFlowAsync(rozettaApiUser, option, text);

            Debug.Assert(ret.Length == 1);
            Debug.Assert(ret[0].sourceText == "hello");
            Debug.Assert(ret[0].translatedText == "こんにちは");
        }