-
Notifications
You must be signed in to change notification settings - Fork 0
/
Utility.cs
65 lines (57 loc) · 1.91 KB
/
Utility.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
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
namespace Phoenix
{
internal static class Utility
{
// static serialize(obj, parentKey){
// let queryStr = [];
// for(var key in obj){ if(!obj.hasOwnProperty(key)){ continue }
// let paramKey = parentKey ? `${parentKey}[${key}]` : key
// let paramVal = obj[key]
// if(typeof paramVal === "object"){
// queryStr.push(this.serialize(paramVal, paramKey))
// } else {
// queryStr.push(encodeURIComponent(paramKey) + "=" + encodeURIComponent(paramVal))
// }
// }
// return queryStr.join("&")
//}
internal static string Serialize(JObject json, string parentKey = null)
{
var paramsList = new List<string>();
foreach (var jp in json.Children<JProperty>())
{
var key = jp.Name;
var paramKey = (parentKey != null) ? $"{parentKey}[{key}]" : key;
if (jp.Value.Type == JTokenType.Object)
{
var serialized = Serialize((JObject)jp.Value, paramKey);
paramsList.Add(serialized);
}
else
{
var encodedKey = WebUtility.UrlEncode(paramKey);
var encodedValue = WebUtility.UrlEncode(jp.Value.ToString());
paramsList.Add($"{encodedKey}={encodedValue}");
}
}
return String.Join("&", paramsList.ToArray());
}
//static appendParams(url, params){
// if(Object.keys(params).length === 0){ return url }
// let prefix = url.match(/\?/) ? "&" : "?"
// return `${url}${prefix}${this.serialize(params)}`
//}
internal static string AppendParams(string url, JObject params_)
{
if (params_ == null || params_.Children().Count() < 1) return url;
var prefix = url.Contains("?") ? "&" : "?";
var serialized = Serialize(params_);
return $"{url}{prefix}{serialized}";
}
}
}