forked from ArduPilot/MissionPlanner
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDigitalSky.cs
114 lines (97 loc) · 3.96 KB
/
DigitalSky.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
using Flurl;
using Flurl.Http;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
namespace MissionPlanner.Utilities
{
public class DigitalSky
{
public string URL = "https://digitalsky-uat.centralindia.cloudapp.azure.com:8080";
private JObject login;
private string accessToken
{
get { return login["accessToken"].Value<string>(); }
}
static DigitalSky()
{
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
}
public void test()
{
if (Login("", "").Result)
{
var userdrones = GetDrones();
foreach (var userdrone in userdrones.Result)
{
var permlist = ListFlyPermission(userdrone.Key);
foreach (var perm in permlist.Result)
{
if (perm.Value["status"].Value<string>().Contains("APPROVED"))
{
var flyArea = perm.Value["flyArea"].Children().Select(a =>
new PointLatLngAlt(a["latitude"].Value<double>(),
a["longitude"].Value<double>(),
perm.Value["maxAltitude"].Value<double>() / 3.281,
perm.Value["id"].Value<string>()));
}
else
{
}
}
}
}
}
public async Task<bool> Login(string username, string password)
{
login = await URL
.AppendPathSegment("api/auth/token")
.PostJsonAsync(new {email = username, password = password}).ReceiveJson<JObject>();
return !String.IsNullOrEmpty(accessToken);
}
public async Task<Dictionary<int, JToken>> GetDrones()
{
var drones = await URL
.AppendPathSegment("api/operatorDrone")
.WithOAuthBearerToken(accessToken)
.GetJsonAsync<JArray>();
return drones.Where(a => a["operatorDroneStatus"].Value<string>() == "UIN_APPROVED")
.ToDictionary(a => a["id"].Value<int>());
}
public async Task<Dictionary<string, JToken>> ListFlyPermission(int drone)
{
var flyDronePermissionApplication_list = await URL
.AppendPathSegment("/api/applicationForm/flyDronePermissionApplication/list")
.SetQueryParam("droneId", drone)
.WithOAuthBearerToken(accessToken)
.GetJsonAsync<JArray>();
return flyDronePermissionApplication_list.ToDictionary(a => a["id"].Value<string>());
}
public async Task<string> GetPermissionArtifact(string applicationid)
{
var flyDronePermissionApplication_application = await
URL
.AppendPathSegment(
"api/applicationForm/flyDronePermissionApplication/" + applicationid +
"/document/permissionArtifact")
.WithOAuthBearerToken(accessToken).GetStringAsync();
return flyDronePermissionApplication_application;
}
public async Task<JObject> UploadFlightLog(string applicationid, string flightlogfile)
{
var uploadlog = await URL
.AppendPathSegment(
"/api/applicationForm/flyDronePermissionApplication/" + applicationid + "/document/flightLog")
.WithOAuthBearerToken(accessToken)
.PostMultipartAsync(mp =>
mp.AddFile("flightLogDocument", flightlogfile))
.ReceiveJson<JObject>();
return uploadlog;
}
}
}