static void WriteFile(string folder, string filename, Byte[] bytes)
        {
            string fullfilename = Path.Combine(folder, WSUtilities.MakeSafeFilename(filename));

            using (var fs = new FileStream(fullfilename, FileMode.Create, FileAccess.Write))
            {
                fs.Write(bytes, 0, bytes.Length);
            }
            Console.WriteLine("{0} written, {1} bytes", fullfilename, bytes.Length);
        }
        static async Task RunAsync(string [] args)
        {
            if (args.Length < 2)
            {
                WSUtilities.PrintVersionMesssage("RiskPack", "1.0");
                Console.WriteLine("riskpack.exe [settings file] [riskID]");
                Console.WriteLine("riskpack.exe --example [settings file]");
                return;
            }
            if (args[0].ToLower() == "--example")
            {
                Console.WriteLine(WSSettings.WriteExample(args[1]));
                return;
            }
            WSSettings settings;

            try
            {
                settings = WSSettings.Load(args[0]);
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR {0}", ex.Message);
                return;
            }
            string json = String.Empty, req = String.Empty;

            try
            {
                string folder = WSUtilities.MakeSafeFilename(args[1]) + DateTime.Now.ToString("_ddMMyy_HHmmss");
                Directory.CreateDirectory(folder);

                WSAPIClient client = WSAPIClient.ForToken(settings);
                _ = await client.DoOIDC(settings);

                req    = String.Format("/export/pdf/{0}", args[1]);
                client = WSAPIClient.ForPDF(settings);

                var bytes = await client.GetByteArrayAsync(req);

                WriteFile(folder, args[1] + ".pdf", bytes);

                client = WSAPIClient.ForJSON(settings);
                req    = String.Format("/api/attachments/{0}", MakeATCH(args[1]));
                json   = await client.GetStringAsync(req);

                Dictionary <String, WSAttachment> dict = JsonConvert.DeserializeObject <Dictionary <String, WSAttachment> >(json);
                foreach (string key in dict.Keys)
                {
                    WSAttachment att = dict[key];
                    client = WSAPIClient.ForMIMEType(settings, att.content_type);
                    req    = string.Format("/api/attachments/{0}/{1}", MakeATCH(args[1]), key);
                    bytes  = await client.GetByteArrayAsync(req);

                    WriteFile(folder, key, bytes);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine("Last URL was {0}", req);
            }
        }