Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
Arquivo: SQLite.cs Projeto: VRCMG/VRCX
        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();
        }
        public void MakeGetRequest(string url, IJavascriptCallback onSuccess, IJavascriptCallback onError)
        {
            Task.Run(async() => {
                var client = WebUtils.NewClient(BrowserUtils.UserAgentVanilla);

                try{
                    var result = await client.DownloadStringTaskAsync(url);
                    await onSuccess.ExecuteAsync(result);
                }catch (Exception e) {
                    await onError.ExecuteAsync(e.Message);
                }finally{
                    onSuccess.Dispose();
                    onError.Dispose();
                    client.Dispose();
                }
            });
        }
Exemplo n.º 4
0
#pragma warning disable CS4014
        public async void Execute(IDictionary <string, object> options, IJavascriptCallback callback)
        {
            try
            {
                var request = WebRequest.CreateHttp((string)options["url"]);
                request.CookieContainer = _cookieContainer;
                request.KeepAlive       = true;

                if (options.TryGetValue("headers", out object headers) == true)
                {
                    foreach (var header in (IEnumerable <KeyValuePair <string, object> >)headers)
                    {
                        var key   = header.Key;
                        var value = header.Value.ToString();

                        if (string.Compare(key, "Content-Type", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            request.ContentType = value;
                        }
                        else if (string.Compare(key, "User-Agent", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            request.UserAgent = value;
                        }
                        else
                        {
                            request.Headers.Add(key, value);
                        }
                    }
                }

                if (options.TryGetValue("method", out object method) == true)
                {
                    var _method = (string)method;
                    request.Method = _method;

                    if (string.Compare(_method, "GET", StringComparison.OrdinalIgnoreCase) != 0 &&
                        options.TryGetValue("body", out object body) == true)
                    {
                        using (var stream = await request.GetRequestStreamAsync())
                            using (var streamWriter = new StreamWriter(stream))
                            {
                                await streamWriter.WriteAsync((string)body);
                            }
                    }
                }

                try
                {
                    using (var response = await request.GetResponseAsync() as HttpWebResponse)
                        using (var stream = response.GetResponseStream())
                            using (var streamReader = new StreamReader(stream))
                            {
                                callback.ExecuteAsync(null, new
                                {
                                    data   = await streamReader.ReadToEndAsync(),
                                    status = response.StatusCode
                                });
                            }
                }
                catch (WebException webException)
                {
                    if (webException.Response is HttpWebResponse response)
                    {
                        using (var stream = response.GetResponseStream())
                            using (var streamReader = new StreamReader(stream))
                            {
                                callback.ExecuteAsync(null, new
                                {
                                    data   = await streamReader.ReadToEndAsync(),
                                    status = response.StatusCode
                                });
                            }
                    }
                    else
                    {
                        callback.ExecuteAsync(webException.Message, null);
                    }
                }
            }
            catch (Exception e)
            {
                // FIXME: 브라우저는 종료되었는데 얘는 이후에 실행되면 터짐
                callback.ExecuteAsync(e.Message, null);
            }

            callback.Dispose();
        }
Exemplo n.º 5
0
#pragma warning disable CS4014
        public async void Execute(IDictionary <string, object> options, IJavascriptCallback callback)
        {
            try
            {
                var request = WebRequest.CreateHttp((string)options["url"]);
                request.CookieContainer = _cookieContainer;
                request.KeepAlive       = true;

                if (options.TryGetValue("headers", out object headers) == true)
                {
                    foreach (var header in (IEnumerable <KeyValuePair <string, object> >)headers)
                    {
                        var key   = header.Key;
                        var value = header.Value.ToString();

                        if (string.Compare(key, "Content-Type", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            request.ContentType = value;
                        }
                        else if (string.Compare(key, "User-Agent", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            request.UserAgent = value;
                        }
                        else
                        {
                            request.Headers.Add(key, value);
                        }
                    }
                }

                if (options.TryGetValue("method", out object method) == true)
                {
                    var _method = (string)method;
                    request.Method = _method;

                    if (string.Compare(_method, "GET", StringComparison.OrdinalIgnoreCase) != 0 &&
                        options.TryGetValue("body", out object body) == true)
                    {
                        using (var stream = await request.GetRequestStreamAsync())
                            using (var streamWriter = new StreamWriter(stream))
                            {
                                await streamWriter.WriteAsync((string)body);
                            }
                    }
                }

                if (options.TryGetValue("uploadImage", out object uploadImage) == true)
                {
                    request.Method = "POST";
                    string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
                    request.ContentType = "multipart/form-data; boundary=" + boundary;
                    Stream requestStream = request.GetRequestStream();
                    if (options.TryGetValue("postData", out object postDataObject) == true)
                    {
                        Dictionary <string, string> postData = new Dictionary <string, string>();
                        postData.Add("data", (string)postDataObject);
                        string FormDataTemplate = "--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}\r\n";
                        foreach (string key in postData.Keys)
                        {
                            string item      = String.Format(FormDataTemplate, boundary, key, postData[key]);
                            byte[] itemBytes = System.Text.Encoding.UTF8.GetBytes(item);
                            requestStream.Write(itemBytes, 0, itemBytes.Length);
                        }
                    }
                    var    imageData      = options["imageData"] as string;
                    byte[] fileToUpload   = Convert.FromBase64CharArray(imageData.ToCharArray(), 0, imageData.Length);
                    string fileFormKey    = "image";
                    string fileName       = "image.png";
                    string fileMimeType   = "image/png";
                    string HeaderTemplate = "--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n";
                    string header         = String.Format(HeaderTemplate, boundary, fileFormKey, fileName, fileMimeType);
                    byte[] headerbytes    = Encoding.UTF8.GetBytes(header);
                    requestStream.Write(headerbytes, 0, headerbytes.Length);
                    using (MemoryStream fileStream = new MemoryStream(fileToUpload))
                    {
                        byte[] buffer    = new byte[1024];
                        int    bytesRead = 0;
                        while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            requestStream.Write(buffer, 0, bytesRead);
                        }
                        fileStream.Close();
                    }
                    byte[] newlineBytes = Encoding.UTF8.GetBytes("\r\n");
                    requestStream.Write(newlineBytes, 0, newlineBytes.Length);
                    byte[] endBytes = System.Text.Encoding.UTF8.GetBytes("--" + boundary + "--");
                    requestStream.Write(endBytes, 0, endBytes.Length);
                    requestStream.Close();
                }

                try
                {
                    using (var response = await request.GetResponseAsync() as HttpWebResponse)
                    {
                        if (response.Headers["Set-Cookie"] != null)
                        {
                            _cookieDirty = true;
                        }
                        using (var stream = response.GetResponseStream())
                            using (var streamReader = new StreamReader(stream))
                            {
                                if (callback.CanExecute == true)
                                {
                                    callback.ExecuteAsync(null, new
                                    {
                                        data   = await streamReader.ReadToEndAsync(),
                                        status = response.StatusCode
                                    });
                                }
                            }
                    }
                }
                catch (WebException webException)
                {
                    if (webException.Response is HttpWebResponse response)
                    {
                        if (response.Headers["Set-Cookie"] != null)
                        {
                            _cookieDirty = true;
                        }
                        using (var stream = response.GetResponseStream())
                            using (var streamReader = new StreamReader(stream))
                            {
                                if (callback.CanExecute == true)
                                {
                                    callback.ExecuteAsync(null, new
                                    {
                                        data   = await streamReader.ReadToEndAsync(),
                                        status = response.StatusCode
                                    });
                                }
                            }
                    }
                    else if (callback.CanExecute == true)
                    {
                        callback.ExecuteAsync(webException.Message, null);
                    }
                }
            }
            catch (Exception e)
            {
                if (callback.CanExecute == true)
                {
                    // FIXME: 브라우저는 종료되었는데 얘는 이후에 실행되면 터짐
                    callback.ExecuteAsync(e.Message, null);
                }
            }

            callback.Dispose();
        }