aboutsummaryrefslogtreecommitdiff
blob: daf1e79a2e25c9575647dd91f7a4c2729854e1ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.UI.Popups;
using CoreFtp;
using CoreFtp.Infrastructure;

namespace France_Vacances.Methods
{
    public static class OnlineOperations
    {
        public static string DownloadString(string fileUri)
        {
            var uri = new Uri(fileUri);
            var httpClient = new HttpClient();

            // Always catch network exceptions for async methods
            try
            {
                var response = httpClient.GetAsync(uri).Result;

                if (response.IsSuccessStatusCode)
                {
                    // by calling .Result you are performing a synchronous call
                    var responseContent = response.Content;

                    // by calling .Result you are synchronously reading the result
                    string responseString = responseContent.ReadAsStringAsync().Result;
                    return responseString;
                }
            }
            catch (Exception ex)
            {
                MessageDialog messageDialog = new MessageDialog(ex.Message);
                messageDialog.ShowAsync();
            }


            // Once your app is done using the HttpClient object call dispose to 
            // free up system resources (the underlying socket and memory used for the object)

            httpClient.Dispose();
            return null;
        }

        public static async void DownloadFile(string fileUri, string fileLocation, string fileName)
        {

            HttpClient httpClient = new HttpClient();
            // Always catch network exceptions for async methods
            try
            {
                Uri uri = new Uri(fileUri);
                StorageFolder localFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(fileLocation,CreationCollisionOption.OpenIfExists);
                StorageFile file = await localFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                byte[] buffer = await httpClient.GetByteArrayAsync(uri); // Download file
                using (Stream stream = await file.OpenStreamForWriteAsync()) stream.Write(buffer, 0, buffer.Length); // Save
            }

            catch (Exception ex)
            {
                MessageDialog messageDialog = new MessageDialog(ex.Message);
                messageDialog.ShowAsync();
            }


            // Once your app is done using the HttpClient object call dispose to 
            // free up system resources (the underlying socket and memory used for the object)

            httpClient.Dispose();
        }

        public static async void UploadToFtp(string fileName, string remoteLocation)
        {
            //Configuration for FTP client
            FtpClientConfiguration ftpClientConfiguration = new FtpClientConfiguration
            {
                Host = "ftp.retroth.ml",
                Port = 21,
                Username = "u157773980.3duser",
                Password = "ftppass67",
                BaseDirectory = remoteLocation

            };
            FtpClient ftpClient = new FtpClient(ftpClientConfiguration);
            try
            {
                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
                byte[] buffer = File.ReadAllBytes(file.Path);
                await ftpClient.LoginAsync();
                using (Stream stream = await ftpClient.OpenFileWriteStreamAsync(fileName)) stream.Write(buffer, 0, buffer.Length);
                await ftpClient.LogOutAsync();
            }
            catch (Exception ex)
            {
                MessageDialog messageDialog = new MessageDialog(ex.Message);
                await messageDialog.ShowAsync();
            }

            ftpClient.Dispose();
        }

        public static async Task<ReadOnlyCollection<FtpNodeInformation>> GetListOfFiles(string remoteLocation)
        {
            //Configuration for FTP client
            FtpClientConfiguration ftpClientConfiguration = new FtpClientConfiguration
            {
                Host = "ftp.retroth.ml",
                Port = 21,
                Username = "u157773980.3duser",
                Password = "ftppass67",
                BaseDirectory = remoteLocation

            };
            FtpClient ftpClient = new FtpClient(ftpClientConfiguration);
            try
            {
                await ftpClient.LoginAsync();
                ReadOnlyCollection<FtpNodeInformation> filesCollection = await ftpClient.ListFilesAsync();
                await ftpClient.LogOutAsync();
                return filesCollection;
            }
            catch (Exception ex)
            {
                MessageDialog messageDialog = new MessageDialog(ex.Message);
                await messageDialog.ShowAsync();
            }

            ftpClient.Dispose();
            return null;
        }
    }
}