Exemplo n.º 1
0
        private static async Task <string> GetToken(string email, string password)
        {
            string apiUrl = config["apiUrl"];
            var    req    = new WebRequestOptions {
                UriString = $"{apiUrl}{Urls.login}"
            };

            HttpResponseMessage response = await client.PostAsJsonAsync(req.UriString,
                                                                        new Authorize()
            {
                Email    = email,
                Password = password,
                TzOffset = 360
            });

            if (response.IsSuccessStatusCode)
            {
                string json = await response.Content.ReadAsStringAsync();

                var loginResponse = JsonConvert.DeserializeObject <Credential>(json);
                return(loginResponse.Token);
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
            }
            return("");
        }
Exemplo n.º 2
0
        public static BlobStream GetStream(this WebRequestOptions parms)
        {
            var request = parms.BuildRequest();

            request.Method = "GET";
            return(request.ReadStreamResponse());
        }
Exemplo n.º 3
0
        public static string Get(this WebRequestOptions parms)
        {
            var request = parms.BuildRequest();

            request.Method = "GET";
            return(request.ReadStringResponse());
        }
Exemplo n.º 4
0
        static List <KeyValuePair <string, byte[]> > Export(string token, string exportdir)
        {
            string apiUrl = config["apiUrl"];

            var req = new WebRequestOptions
            {
                UriString = $"{apiUrl}{Urls.assessments}",
                Headers   = new Dictionary <string, string> {
                    { "Authorization", token }
                }
            };

            var files       = new List <KeyValuePair <string, byte[]> >();
            var assessments = req.Get().FromJson <Assessment[]>();

            foreach (var id in assessments.Select(x => x.AssessmentId))
            {
                req.UriString = $"{apiUrl}{Urls.token}?assessmentid={id}&expSeconds=10";
                var assmt_token = req.Get().FromJson <Credential>().Token;
                if (!string.IsNullOrEmpty(assmt_token))
                {
                    var expreq = new WebRequestOptions {
                        UriString = $"{apiUrl}{Urls.export}?token={assmt_token}"
                    };
                    using (var bs = expreq.GetStream())
                    {
                        var filename = bs.FileName.SanitizePathPart();
                        files.Add(new KeyValuePair <string, byte[]>(filename, bs.Buffer));
                        var log = $"{filename} | \"Assessment was successfully exported\"";
                        Console.WriteLine(log);
                        Log.Information(log);
                    }
                }
            }

            if (!string.IsNullOrEmpty(exportdir))
            {
                var dir = new DirectoryInfo(exportdir);
                if (!dir.Exists)
                {
                    dir.Create();
                }
                dir.Clear();
                foreach (var file in files)
                {
                    var filepath = Path.Combine(exportdir, file.Key.SanitizePathPart());
                    filepath = FileHelper.GetSafeFileName(filepath);
                    File.WriteAllBytes(filepath, file.Value);
                }
            }
            return(files);
        }
Exemplo n.º 5
0
        public static string Post(this WebRequestOptions parms, HttpPostPayload payload)
        {
            var request = parms.BuildRequest();

            request.Method      = "POST";
            request.ContentType = payload.ContentType;
            var buffer = payload.Buffer;

            request.ContentLength = buffer.Length;
            using (var rs = request.GetRequestStream())
            {
                rs.Write(buffer, 0, buffer.Length);
            }
            return(request.ReadStringResponse());
        }
Exemplo n.º 6
0
        static string GetToken(string email, string password)
        {
            string apiUrl = config["apiUrl"];
            var    req    = new WebRequestOptions {
                UriString = $"{apiUrl}{Urls.login}"
            };
            var resp = req.Post(new HttpPostPayload
            {
                ContentType = "application/json",
                Data        = new Authorize
                {
                    Email    = email,
                    Password = password
                }.ToJson()
            }).FromJson <Credential>();

            return(resp.Token);
        }
Exemplo n.º 7
0
        public static WebRequest BuildRequest(this WebRequestOptions parms)
        {
            var request = (HttpWebRequest)WebRequest.Create(parms.UriString);

            if (!string.IsNullOrWhiteSpace(parms.Username))
            {
                var credentials = new NetworkCredential(parms.Username, parms.Password);
                request.Credentials = credentials.GetCredential(parms.Uri, parms.AuthType ?? string.Empty);
            }

            if (!string.IsNullOrWhiteSpace(parms.Referer))
            {
                request.Referer = parms.Referer;
            }

            parms.Headers = parms.Headers ?? new Dictionary <string, string>();
            foreach (var kvp in parms.Headers)
            {
                request.Headers[kvp.Key] = kvp.Value;
            }

            return(request);
        }
Exemplo n.º 8
0
        static void Import(string token, string importdir, List <KeyValuePair <string, byte[]> > files)
        {
            string apiUrl = config["apiUrl"];

            if (Directory.Exists(importdir))
            {
                files.Clear();
                foreach (var filepath in Directory.GetFiles(importdir, "*.csetw", SearchOption.AllDirectories))
                {
                    var buffer = File.ReadAllBytes(filepath);
                    files.Add(new KeyValuePair <string, byte[]>(Path.GetFileName(filepath), buffer));
                }
            }

            var req = new WebRequestOptions
            {
                UriString = $"{apiUrl}{Urls.import}",
                Headers   = new Dictionary <string, string> {
                    { "Authorization", token }
                }
            };

            foreach (var file in files)
            {
                var filename = file.Key;
                var buffer   = file.Value;
                using (var bs = new BlobStream(filename, "application/octet-stream"))
                {
                    bs.Write(buffer, 0, buffer.Length);
                    var content = new Dictionary <string, object> {
                        { "file", bs }
                    };
                    using (var data = MimeMultipartStream.FromContent(content))
                    {
                        try
                        {
                            var resp = req.Post(new HttpPostPayload
                            {
                                ContentType = data.ContentType,
                                Data        = data.Buffer
                            });
                            var log = $"{filename} | {resp}";
                            Console.WriteLine(log);
                            Log.Information(log);
                        }
                        catch (WebException ex)
                        {
                            using (var stream = ex.Response.GetResponseStream())
                            {
                                using (var reader = new StreamReader(stream))
                                {
                                    var json = reader.ReadToEnd();
                                    var err  = JObject.Parse(json);
                                    var log  = $"{filename} | \"Failed to import assessment\"";
                                    Console.WriteLine(log);
                                    Log.Error(ex, log);
                                    Log.Error("Server-Message: {0}", err.Value <string>("Message"));
                                    Log.Error("Server-ExceptionType: {0}", err.Value <string>("ExceptionType"));
                                    Log.Error("Server-ExceptionMessage: {0}", err.Value <string>("ExceptionMessage"));
                                    Log.Error("Server-StackTrace: {0}", err.Value <string>("StackTrace"));
                                }
                            }
                        }
                    }
                }
            }
        }