protected override async void PerformNavigate() { try { IsBusy = true; if (Content == null || Content.Length == 0) { throw new Exception("File not selected"); } var uri = new Uri(Address); var host = uri.Host; var resource = uri.AbsolutePath; var port = uri.Port; var sc = new SkClient(host, port); var request = RequestFactory.CreatePut(resource, Content); using (var ms = new MemoryStream()) { var response = await sc.ExecuteAsync(request, ms, progressIndicator); Status = response.StatusCode + " " + response.ReasonPhase; Headers.Clear(); foreach (var header in response.Headers) { Headers.Add(header.Key + ": " + header.Value); } if (response.Viewable) Html = response.PayloadString; else { Html = ""; } } } catch (Exception e) { MessageBox.Show(e.Message); } finally { IsBusy = false; } }
protected override async void PerformNavigate() { // pobierz plik tymczasowy do którego zostanie zapisany content string tmp = Path.GetTempFileName(); try { IsBusy = true; var uri = new Uri(Address); var host = uri.Host; var resource = uri.AbsolutePath; var port = uri.Port; var sc = new SkClient(host, port); var request = RequestFactory.CreateGet(resource); using (var fs = new FileStream(tmp, FileMode.Create)) { var response = await sc.ExecuteAsync(request, fs, progressIndicator, stream => { // zasób ma typ MIME którego nie umiemy wyświetlić, Pytamy o plik do którego go zapisać var dlg = new SaveFileDialog(); dlg.OverwritePrompt = true; dlg.FileName = uri.Segments.Last(); if (dlg.ShowDialog() == true) { using (var dstFile = dlg.OpenFile()) { fs.CopyTo(dstFile); } } }); Status = response.StatusCode + " " + response.ReasonPhase; Headers.Clear(); foreach (var header in response.Headers) { Headers.Add(header.Key + ": " + header.Value); } if (response.Viewable) { Html = response.PayloadString; } else { Html = "Pobrano plik"; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { IsBusy = false; try { File.Delete(tmp); } catch { // pass } } }