public void prepareSkinAsync(string carId, string skinChecksum, string skinUrl, IJavascriptCallback callback) { ActionExtension.InvokeInMainThreadAsync(async() => { var car = await CarsManager.Instance.GetByIdAsync(carId); if (car == null) { callback?.ExecuteAsync($"Car with ID={carId} is missing"); return; } var cacheDirectory = FilesStorage.Instance.GetTemporaryDirectory("RaceU", "Skins", carId); var destinationFilename = Path.Combine(cacheDirectory, skinChecksum); if (File.Exists(destinationFilename)) { callback?.ExecuteAsync(null); return; } try { var data = await HttpClientHolder.Get().GetByteArrayAsync(skinUrl); await FileUtils.WriteAllBytesAsync(destinationFilename, data); } catch (Exception e) { callback?.ExecuteAsync($"Failed to download skin: {e.Message}"); return; } callback?.ExecuteAsync(null); }); }
public void setName(string name, IJavascriptCallback callback) { if (name == Config.TerminalName) { callback.ExecuteAsync(true); return; } string parmasString = string.Format("code={0}&name={1}", MachineInfo.MachineCode, name); CAjax ajax = new CAjax(); ajax.postJSON("/api/terminal/name", parmasString, (jsonString) => { var data = ajax.Deserialize(jsonString); if (ajax.getIntValue(data, "code") == 200) { Config.TerminalName = name; callback.ExecuteAsync(true); } else { callback.ExecuteAsync(false, "修改名称失败,请稍后再试"); } }, (msg) => { callback.ExecuteAsync(false, "网络请求错误,请稍后再试"); }, "PATCH"); callback.ExecuteAsync(true); }
/// <summary> /// Get chapter list from manga /// </summary> /// <param name="id">ID Provider</param> /// <param name="id_manga">ID Manga</param> /// <param name="page">Page Number</param> /// <param name="javascriptCallback"></param> public void GetChapterList(int id, int id_manga, int page, bool update, IJavascriptCallback javascriptCallback) { Task.Run(async() => { using (javascriptCallback) { var provider = (from a in Providers where a.Value.Id == id select a.Value).SingleOrDefault(); if (provider == null) { await javascriptCallback.ExecuteAsync(""); } else { var skipCnt = (page - 1) * 20; var manga = await provider.GetManga(id_manga); var chapters = await manga.GetChapters(update); var total = Convert.ToDecimal(chapters.Count()); var maxPage = Math.Floor(total / 20); var sliceList = chapters.Skip(skipCnt).Take(20); var response = ToJson(new { total, maxPage, data = sliceList }); await javascriptCallback.ExecuteAsync(response); } } }); }
/// <summary> /// GET JSON文本 /// </summary> /// <param name="api">api</param> /// <param name="success">成功回调</param> /// <param name="fail">失败回调</param> public void getJSON(string api, IJavascriptCallback success = null, IJavascriptCallback fail = null) { // 本地数据 if (api.IndexOf("data/") == 0) { string filePath = Path.Combine(Config.H5Path, api.Replace("/", "\\")); if (File.Exists(filePath)) { string jsonString = File.ReadAllText(filePath); if (success != null) { success.ExecuteAsync(jsonString); } return; } } this.getJSON(api, (jsonString) => { if (success != null) { success.ExecuteAsync(jsonString); } }, (message) => { if (fail != null) { fail.ExecuteAsync(message); } }); }
/// <summary> /// Get page list from chapter /// </summary> /// <param name="id">ID Provider</param> /// <param name="id_manga">ID Manga</param> /// <param name="id_chapter">ID Chapter</param> /// <param name="javascriptCallback"></param> public void GetPageList(int id, int id_manga, int id_chapter, bool update, IJavascriptCallback javascriptCallback) { Task.Run(async() => { using (javascriptCallback) { var provider = (from a in Providers where a.Value.Id == id select a.Value).SingleOrDefault(); var manga = await provider?.GetManga(id_manga); var chapter = await manga?.GetChapter(id_chapter); var pages = await chapter?.GetPages(update); if (pages != null) { var response = ToJson(pages); await javascriptCallback.ExecuteAsync(response); } else { await javascriptCallback.ExecuteAsync(""); } } }); }
/// <summary> /// Get manga list from provider /// </summary> /// <param name="id">ID Provider</param> /// <param name="page">Page Number</param> /// <param name="javascriptCallback"></param> public void GetMangaList(int id, int page, bool update, IJavascriptCallback javascriptCallback) { var provider = (from a in Providers where a.Value.Id == id select a.Value).SingleOrDefault(); Task.Run(async() => { using (javascriptCallback) { if (provider == null) { await javascriptCallback.ExecuteAsync(""); } else { var skipCnt = (page - 1) * 20; var list = await provider.GetMangas(update); var maxPage = Math.Floor(Convert.ToDecimal(list.Count() / 20)); var sliceList = list.Skip(skipCnt).Take(20); var response = ToJson(new { maxPage, data = sliceList, }); await javascriptCallback.ExecuteAsync(response); } } }); }
public void register(string sn, IJavascriptCallback callback) { if (!MachineInfo.CheckSN(sn)) { callback.ExecuteAsync(false, "注册码不能用"); return; } string parmasString = string.Format("code={0}&sn={1}", MachineInfo.MachineCode, sn); CAjax ajax = new CAjax(); ajax.postJSON("/api/terminal/register", parmasString, (jsonString) => { var data = ajax.Deserialize(jsonString); if (ajax.getIntValue(data, "code") == 200) { Config.SN = sn; (MainForm.ActiveForm as MainForm).HideSNLabel(); callback.ExecuteAsync(true); } else { callback.ExecuteAsync(false, "注册失败,请稍后再试"); } }, (msg) => { callback.ExecuteAsync(false, "网络请求错误,请稍后再试"); }, "PATCH"); callback.ExecuteAsync(true); }
// RaceU API, v1 // ReSharper disable InconsistentNaming public void getCarSkinsAsync(string carId, IJavascriptCallback callback) { ActionExtension.InvokeInMainThreadAsync(async() => { var car = await CarsManager.Instance.GetByIdAsync(carId); if (car == null) { callback?.ExecuteAsync($"Car with ID={carId} is missing", null); return; } await car.SkinsManager.EnsureLoadedAsync(); callback?.ExecuteAsync(null, car.EnabledOnlySkins.Select(x => x.Id).ToArray()); }); }
public void Execute(IJavascriptCallback callback, string sql, IDictionary <string, object> args = null) { try { m_ConnectionLock.EnterReadLock(); try { using (var command = new SQLiteCommand(sql, m_Connection)) { if (args != null) { foreach (var arg in args) { command.Parameters.Add(new SQLiteParameter(arg.Key, arg.Value)); } } using (var reader = command.ExecuteReader()) { while (reader.Read() == true) { var values = new object[reader.FieldCount]; reader.GetValues(values); if (callback.CanExecute == true) { callback.ExecuteAsync(null, values); } } } } if (callback.CanExecute == true) { callback.ExecuteAsync(null, null); } } finally { m_ConnectionLock.ExitReadLock(); } } catch (Exception e) { if (callback.CanExecute == true) { callback.ExecuteAsync(e.Message, null); } } callback.Dispose(); }
private static async Task UploadBinaryDataAsync(string endpoint, Func <Task <byte[]> > dataCallback, IJavascriptCallback callback) { string ret; try { var response = await HttpClientHolder.Get().PostAsync(endpoint, new ByteArrayContent(await dataCallback())); response.EnsureSuccessStatusCode(); ret = await response.Content.ReadAsStringAsync(); } catch (Exception e) { callback?.ExecuteAsync($"Failed to upload: {e.Message}", null); return; } callback?.ExecuteAsync(null, ret); }
/// <summary> /// 邀请群成员 /// </summary> /// <param name="id"></param> /// <param name="javascriptCallback"></param> public void newGroupMember(string id, IJavascriptCallback javascriptCallback) { var friend = DBHelper.Instance.allFriend(); var member = DBHelper.Instance.getGroupAllUser(id); foreach (var item in member) { friend = friend.Where(p => p.userID != item.userID).ToList(); } List <JSData> fed = new List <JSData>(); foreach (var item in friend) { var f = new JSData(); f.id = item.userID; f.name = item.friend_self_name; f.url = item.avatar; f.id_card = item.id_Card; fed.Add(f); } NewMemberData data = new NewMemberData(); data.friend = fed; NewMember result = new NewMember(); result.success = true; result.data = data; using (javascriptCallback) { javascriptCallback.ExecuteAsync(JsonConvert.SerializeObject(result)); } }
public void token(IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(SettingMenager.shard.token); } }
public void GetCatalogProductRankList(string obj, int start, int limit, IJavascriptCallback javascriptCallback) { Task.Factory.StartNew(async() => { using (javascriptCallback) { Result <List <ProductListItemViewModel> > result = new Result <List <ProductListItemViewModel> >(true); ProductListItemQueryViewModel queryEntity = JsonConvert.DeserializeObject <ProductListItemQueryViewModel>(obj); if (queryEntity == null) { result.Success = false; result.Msg = "数据转换失败!"; } else { using (DbContext db = DbContextFactory.Context) { //找出mapName var dbSet = db.Set <SysCatalog>(); SysCatalog entity = dbSet.First(o => o.ID == queryEntity.CatalogID); List <SQLiteParameter> param = new List <SQLiteParameter>() { new SQLiteParameter("@CatalogID", queryEntity.CatalogID), new SQLiteParameter("@RankLevel", queryEntity.RankNumber), new SQLiteParameter("@StartDate", queryEntity.StartDate), new SQLiteParameter("@EndDate", queryEntity.EndDate) }; string sql, fromSql, whereSql, totalSql; fromSql = $"from {entity.CatalogProductTableName} map join tb_Sys_Product p on map.ProductID = p.ID "; whereSql = "where map.CatalogID = @CatalogID "; if (!string.IsNullOrEmpty(queryEntity.Name)) { whereSql += $"AND p.Name LIKE @Name "; param.Add(new SQLiteParameter("@Name", $"%{queryEntity.Name}%")); } whereSql += $"AND map.RankLevel = @RankLevel "; whereSql += $"AND map.CreateTime Between @StartDate AND @EndDate "; sql = " select p.Name,p.ImgPath,map.RankTime,map.RankLevel " + fromSql + whereSql + "order by map.CreateTime desc, map.RankLevel asc " + $"limit {limit} offset {start}; "; totalSql = " select count(1) " + fromSql + whereSql; SQLiteParameter[] paramArray = param.ToArray(); result.Data = db.Database.SqlQuery <ProductListItemViewModel>(sql, paramArray).ToList(); result.Total = db.Database.SqlQuery <int>(totalSql, paramArray).FirstOrDefault(); } } await javascriptCallback.ExecuteAsync(JsonConvert.SerializeObject(result)); //javascriptCallback.ExecuteAsync(JsonConvert.SerializeObject(result)); } }); }
public void GetDownloadStatus(int id_download, IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(); } }
public void DetectAD(string json, IJavascriptCallback callback, IJavascriptCallback progress) { var task = new Task(() => { var files = JsonConvert.DeserializeObject <string[]>(json); var notify = new Action <int, int>((used, left) => { progress.ExecuteAsync(used, left); }); var result = CutAD.DetectAD(files, notify); var ret = result.Select(kv => { var ranges = kv.Key; var length = kv.Value; return(new { length = length * 100, ads = ranges.Select(r => new { type = r.type, count = r.count, start = r.begin * 100, end = r.end * 100, }).ToArray() }); }).ToArray(); callback.ExecuteJsonAsync(null, ret); }); task.Start(); }
public void Play(string filename, int start, int end, IJavascriptCallback complete) { var task = new Task(() => { Stop(); var ffplayPath = Path.Combine(Environment.CurrentDirectory, "../ffmpeg/ffplay.exe"); ffplayProcess = new Process(); ffplayProcess.StartInfo.FileName = ffplayPath; var fstart = (float)start / 1000; var fend = (float)end / 1000; var duration = fend - fstart; var arguments = String.Format( "-i \"{0}\" -ss {1} -t {2} -nodisp -autoexit", filename.Replace("\"", "\\\""), fstart, duration ); Console.WriteLine(arguments); ffplayProcess.StartInfo.Arguments = arguments; ffplayProcess.StartInfo.UseShellExecute = false; ffplayProcess.StartInfo.RedirectStandardError = true; ffplayProcess.StartInfo.RedirectStandardOutput = true; ffplayProcess.StartInfo.CreateNoWindow = true; ffplayProcess.Start(); ffplayProcess.StandardError.ReadToEnd(); ffplayProcess.StandardOutput.ReadToEnd(); ffplayProcess.WaitForExit(); ffplayProcess = null; complete.ExecuteAsync(); }); task.Start(); }
public void RunCallback() { if (callback != null && callback.CanExecute) { callback.ExecuteAsync("Hello from c#").ContinueWith(t => { var javascriptResponse = t.Result; var builder = new StringBuilder(); if (javascriptResponse.Success) { builder.AppendLine("Response From Callback: " + javascriptResponse.Result.ToString()); } else { var mainFrame = webBrowser.GetMainFrame(); builder.AppendLine("Javascript callback failed with " + javascriptResponse.Message); builder.AppendLine("<br/>"); builder.AppendLine("Current MainFrame Id:" + mainFrame.Identifier); } webBrowser.LoadHtml(builder.ToString()); }); } else { webBrowser.LoadHtml("Callback CanExecute is now false"); } }
public void PlayVideo(string videoUrl, string tweetUrl, string username, IJavascriptCallback callShowOverlay) { string playerPath = Config.VideoPlayerPath; if (playerPath == null || !File.Exists(playerPath)) { if (videoPlayer == null) { videoPlayer = new VideoPlayer(this); videoPlayer.ProcessExited += (sender, args) => browser.HideVideoOverlay(true); } callShowOverlay.ExecuteAsync(); callShowOverlay.Dispose(); videoPlayer.Launch(videoUrl, tweetUrl, username); } else { callShowOverlay.Dispose(); string quotedUrl = '"' + videoUrl + '"'; string playerArgs = Config.VideoPlayerPathArgs == null ? quotedUrl : Config.VideoPlayerPathArgs + ' ' + quotedUrl; try{ using (Process.Start(playerPath, playerArgs)){} }catch (Exception e) { Program.Reporter.HandleException("Error Opening Video Player", "Could not open the video player.", true, e); } } AnalyticsFile.VideoPlays.Trigger(); }
public async Task <string> JavascriptCallbackEvalPromise(string msg, IJavascriptCallback callback) { var response = await callback.ExecuteAsync(callback.Id, msg); //Echo the response return((string)response.Result); }
public void userId(IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(SettingMenager.shard.userID); } }
public void TestJSCallback(IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync("Hello from winforms and C# land!"); } }
public void DownloadChapter(int chapter_id, IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(); } }
public void DownloadManga(int manga_id, IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(); } }
public void Execute(IJavascriptCallback callback, string sql, IDictionary <string, object> param = null) { m_Lock.EnterReadLock(); try { using (var C = new SQLiteCommand(sql, m_Connection)) { if (param != null) { foreach (var prop in param) { C.Parameters.Add(new SQLiteParameter("@" + prop.Key, prop.Value)); } } using (var R = C.ExecuteReader()) { while (R.Read()) { var row = new object[R.FieldCount]; R.GetValues(row); callback.ExecuteAsync(row); } } } } finally { m_Lock.ExitReadLock(); } }
public void getCarDataChecksumAsync(string carId, IJavascriptCallback callback = null) { Task.Run(() => { var checksum = GetAcChecksum(CarsManager.Instance.GetById(carId)?.Location, @"data.acd"); callback?.ExecuteAsync(checksum); }).Ignore(); }
public void getTrackGeneralFileChecksumAsync(string trackId, string layoutId, string fileName, IJavascriptCallback callback = null) { Task.Run(() => { var checksum = GetAcChecksum(TracksManager.Instance.GetLayoutById(trackId, layoutId)?.Location, FileUtils.NormalizePath(fileName)); callback?.ExecuteAsync(checksum); }).Ignore(); }
public string TestCallbackFromObject(SimpleClass simpleClass) { if (simpleClass == null) { return("TestCallbackFromObject dictionary param is null"); } IJavascriptCallback javascriptCallback = simpleClass.Callback; if (javascriptCallback == null) { return("callback property not found or property is not a function"); } const int taskDelay = 1500; Task.Run(async() => { await Task.Delay(taskDelay); if (javascriptCallback != null) { using (javascriptCallback) { await javascriptCallback.ExecuteAsync("message from C# " + simpleClass.TestString + " - " + simpleClass.SubClasses[0].PropertyOne); } } }); return("waiting for callback execution..."); }
public void getCarGeneralFileChecksumAsync(string carId, string fileName, IJavascriptCallback callback = null) { Task.Run(() => { var checksum = GetAcChecksum(CarsManager.Instance.GetById(carId)?.Location, fileName); callback?.ExecuteAsync(checksum); }).Ignore(); }
public void startOnlineRace(string ip, int port, int httpPort, IJavascriptCallback callback = null) { if (_car == null) { throw new Exception("Car is not set"); } if (_track == null) { throw new Exception("Track is not set"); } ActionExtension.InvokeInMainThread(async() => { var result = await GameWrapper.StartAsync(new Game.StartProperties { BasicProperties = new Game.BasicProperties { CarId = _car.Id, TrackId = _track.MainTrackObject.Id, TrackConfigurationId = _track.LayoutId, CarSkinId = _carSkin?.Id ?? _car.SelectedSkin?.Id ?? "" }, ModeProperties = new Game.OnlineProperties { Guid = SteamIdHelper.Instance.Value, ServerIp = ip, ServerPort = port, ServerHttpPort = httpPort, Password = InternalUtils.GetRaceUPassword(_track.IdWithLayout, ip, port), RequestedCar = _car.Id } }); callback?.ExecuteAsync(result?.IsNotCancelled); }).Ignore(); }
public async void CalcAsync( string name, IJavascriptCallback resolve, IJavascriptCallback reject) { try { if (resolve.IsDisposed) { return; } int i = /* compute i */; if (!resolve.IsDisposed) { await resolve.ExecuteAsync(i); } } catch (Exception e) { if (!reject.IsDisposed) { await reject.ExecuteAsync(e.ToString()); } } }
public void TestCallback(IJavascriptCallback javascriptCallback) { const int taskDelay = 1500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { await javascriptCallback.ExecuteAsync("This callback from C# was delayed " + taskDelay + "ms"); } }); }
public void TestCallbackStruct(IJavascriptCallback javascriptCallback) { const int taskDelay = 500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { CallbackResponseStruct response = new CallbackResponseStruct("Test"); await javascriptCallback.ExecuteAsync(response); } }); }
public void TestCallback(IJavascriptCallback javascriptCallback) { const int taskDelay = 1500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { //NOTE: Classes are not supported, simple structs are var response = new CallbackResponseStruct("This callback from C# was delayed " + taskDelay + "ms"); await javascriptCallback.ExecuteAsync(response); } }); }
public void TestCallbackClass(IJavascriptCallback javascriptCallback) { const int taskDelay = 500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { CallbackResponseClass response = new CallbackResponseClass("Test"); try { javascriptCallback.ExecuteAsync(response); } catch (Exception ex) { javascriptCallback.ExecuteAsync(string.Format("Error: {0}", ex.Message)); } } }); }
public void TestCallbackException(IJavascriptCallback errorCallback, IJavascriptCallback errorCallbackResult) { const int taskDelay = 500; Task.Run(async () => { await Task.Delay(taskDelay); using (errorCallback) { JavascriptResponse result = await errorCallback.ExecuteAsync("This callback from C# was delayed " + taskDelay + "ms"); string resultMessage; if (result.Success) { resultMessage = "Fatal: No Exception thrown in error callback"; } else { resultMessage = "Exception Thrown: " + result.Message; } await errorCallbackResult.ExecuteAsync(resultMessage); } }); }