-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
DownloadHelpers.cs
114 lines (104 loc) · 6.47 KB
/
DownloadHelpers.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 System;
using System.Collections.Generic;
using System.IO;
using System.Net;
namespace FeBuddyLibrary.Helpers
{
public class DownloadHelpers
{
public static void DownloadAllFiles(string effectiveDate, string airacCycle, bool getMetaFile = true)
{
Logger.LogMessage("DEBUG", "DOWNLOADING ALL FILES REQUIRED");
GlobalConfig.DownloadedFilePaths = new List<string>();
Dictionary<string, string> allURLs;
// TODO - This should be a static readonly dictionary, then grab only what we need in terms of meta info or not
if (getMetaFile)
{
Logger.LogMessage("DEBUG", "INCLUDING META FILES");
allURLs = new Dictionary<string, string>()
{
{ $"{effectiveDate}_STARDP.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/STARDP.zip" },
{ $"{effectiveDate}_APT.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/APT.zip" },
{ $"{effectiveDate}_ARB.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/ARB.zip" },
{ $"{effectiveDate}_ATS.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/ATS.zip" },
{ $"{effectiveDate}_AWY.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/AWY.zip"},
{ $"{airacCycle}_FAA_Meta.xml", $"https://aeronav.faa.gov/d-tpp/{airacCycle}/xml_data/d-tpp_Metafile.xml"},
{ $"{effectiveDate}_FIX.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/FIX.zip" },
{ $"{effectiveDate}_NAV.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/NAV.zip"},
{ $"{airacCycle}_TELEPHONY.html", $"https://www.faa.gov/air_traffic/publications/atpubs/cnt_html/chap3_section_2.html" },
{ $"{effectiveDate}_NWS-WX-STATIONS.xml", $"https://w1.weather.gov/xml/current_obs/index.xml" },
{ $"{effectiveDate}_AWOS.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/AWOS.zip" }
};
}
else
{
Logger.LogMessage("DEBUG", "EXCLUDING META FILES");
FileHelpers.WriteWarnMeFile();
allURLs = new Dictionary<string, string>()
{
{ $"{effectiveDate}_STARDP.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/STARDP.zip" },
{ $"{effectiveDate}_APT.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/APT.zip" },
{ $"{effectiveDate}_ARB.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/ARB.zip" },
{ $"{effectiveDate}_ATS.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/ATS.zip" },
{ $"{effectiveDate}_AWY.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/AWY.zip"},
{ $"{effectiveDate}_FIX.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/FIX.zip" },
{ $"{effectiveDate}_NAV.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/NAV.zip"},
{ $"{airacCycle}_TELEPHONY.html", $"https://www.faa.gov/air_traffic/publications/atpubs/cnt_html/chap3_section_2.html" },
{ $"{effectiveDate}_NWS-WX-STATIONS.xml", $"https://w1.weather.gov/xml/current_obs/index.xml" },
{ $"{effectiveDate}_AWOS.zip", $"https://nfdc.faa.gov/webContent/28DaySub/{effectiveDate}/AWOS.zip" }
};
}
// Web Client used to connect to the FAA website.
using (var client = new WebClient())
{
foreach (string fileName in allURLs.Keys)
{
if (File.Exists($"{GlobalConfig.tempPath}\\{fileName}") && GlobalConfig.DEVMODE)
{
GlobalConfig.DownloadedFilePaths.Add($"{GlobalConfig.tempPath}\\{fileName}");
continue;
}
try
{
Logger.LogMessage("INFO", $"ATTEMPTING TO DOWNLOAD: {fileName}");
if (GlobalConfig.hasCurl)
{
if (fileName == $"{effectiveDate}_NWS-WX-STATIONS.xml")
{
BatchFileHelpers.CreateCurlBatchFile("NWS-WX-STATIONS.bat", "https://w1.weather.gov/xml/current_obs/index.xml", fileName);
BatchFileHelpers.ExecuteCurlBatchFile("NWS-WX-STATIONS.bat");
}
else if (fileName == $"{airacCycle}_TELEPHONY.html")
{
BatchFileHelpers.CreateCurlBatchFile("TELEPHONY.bat", "https://www.faa.gov/air_traffic/publications/atpubs/cnt_html/chap3_section_2.html", fileName);
BatchFileHelpers.ExecuteCurlBatchFile("TELEPHONY.bat");
}
else if (fileName == $"{airacCycle}_FAA_Meta.xml")
{
BatchFileHelpers.CreateCurlBatchFile("FAA_Meta.bat", $"https://aeronav.faa.gov/d-tpp/{airacCycle}/xml_data/d-tpp_Metafile.xml", fileName);
BatchFileHelpers.ExecuteCurlBatchFile("FAA_Meta.bat");
}
else
{
client.DownloadFile(allURLs[fileName], $"{GlobalConfig.tempPath}\\{fileName}");
}
}
else
{
client.DownloadFile(allURLs[fileName], $"{GlobalConfig.tempPath}\\{fileName}");
}
Logger.LogMessage("INFO", $"DOWNLOAD SUCCESSFUL: {fileName}");
}
catch (Exception)
{
Logger.LogMessage("ERROR", $"DOWNLOAD FAILED: {fileName}");
MessageBoxHelpers.FileDownloadErrorMB(fileName, allURLs);
Logger.LogMessage("ERROR", $"PROGRAM CLOSING: {fileName}");
Environment.Exit(-1);
}
GlobalConfig.DownloadedFilePaths.Add($"{GlobalConfig.tempPath}\\{fileName}");
}
}
}
}
}