This repository has been archived by the owner on Nov 17, 2017. It is now read-only.
/
ExtensionMethods.cs
126 lines (96 loc) · 3.25 KB
/
ExtensionMethods.cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Cimbalino.Phone.Toolkit.Extensions;
using Newtonsoft.Json;
namespace PedroLamas.GDrive.Helpers
{
public static class ExtensionMethods
{
private static readonly string[] _availableSuffixes = new[] { "B", "KB", "MB", "GB", "TB" };
public static string ToQueryString(this IDictionary<string, string> dictionary)
{
if (dictionary.Count == 0)
{
return string.Empty;
}
return "?" + string.Join("&", dictionary
.Select(x => string.Format("{0}={1}", Uri.EscapeUriString(x.Key), Uri.EscapeUriString(x.Value))));
}
public static async Task<T> SendAndDeserialize<T>(this HttpClient client, HttpRequestMessage requestMessage, CancellationToken cancellationToken)
{
var response = await client.SendAsync(requestMessage, cancellationToken);
if (response.StatusCode == HttpStatusCode.NotModified)
{
return default(T);
}
response.EnsureSuccessStatusCode();
return JsonConvert.DeserializeObject<T>(await response.Content.ReadAsStringAsync());
}
public static string FormatAsSize(this int size)
{
if (size <= 1024)
{
return "1 KB";
}
var suffixIndex = 0;
while (size > 1024)
{
size = size / 1024;
suffixIndex++;
}
return "{0} {1}".FormatWithInvariantCulture(size, _availableSuffixes[suffixIndex]);
}
}
//public enum ResultStatus
//{
// Completed,
// Empty,
// Aborted,
// Error
//}
//public class Result<T>
//{
// #region Properties
// public ResultStatus Status { get; private set; }
// public T Data { get; private set; }
// public HttpStatusCode StatusCode { get; private set; }
// public DateTime? LastModified { get; private set; }
// public string ETag { get; private set; }
// public Exception Error { get; private set; }
// #endregion
// public Result(T data, HttpStatusCode statusCode, DateTime? lastModified, string etag)
// {
// Data = data;
// StatusCode = statusCode;
// LastModified = lastModified;
// ETag = etag;
// switch (statusCode)
// {
// case HttpStatusCode.OK:
// Status = ResultStatus.Completed;
// break;
// case HttpStatusCode.NoContent:
// case HttpStatusCode.NotModified:
// Status = ResultStatus.Empty;
// break;
// default:
// Status = ResultStatus.Error;
// break;
// }
// }
// public Result(Exception error)
// {
// Error = error;
// Status = ResultStatus.Error;
// }
// public Result(ResultStatus status)
// {
// Status = status;
// }
//}
}