// "https://verrechnungsportal.hsr.ch:4450/VerrechnungsportalService.svc/JSON/getBadgeSaldo"
 public static void GetUserBadgeInformation(UserCredentials userCredentials, BadgeInformationCallback callback)
 {
     var b = new BackgroundWorker();
     b.DoWork += (sender, args) =>
     {
         if (userCredentials.CredentialsFilled)
         {
             System.Net.ServicePointManager.ServerCertificateValidationCallback += (s, certificate, chain, sslPolicyErrors) => true;
             var restClient = new RestClient(BadgeportalUrl);
             restClient.Authenticator = new HttpBasicAuthenticator(userCredentials.DomainName, userCredentials.Password);
             restClient.ExecuteAsync(new RestRequest("/getBadgeSaldo", Method.GET), (response, handle) =>
             {
                 try
                 {
                     var badgeportal = JsonHelper.ParseJson<BadgeInformation>(response);
                     callback(badgeportal);
                 } catch (Exception e)
                 {
                     callback(new BadgeInformation(){ErrorMessage = e.Message});
                 }
             });
         }
         else
         {
             callback(new BadgeInformation(){ CashAmount = 0 });
         }};
     b.RunWorkerAsync();
 }
 public static void GetUserTimetable(UserCredentials userCredentials, string username, TimetableCallback callback, object[] callbackArguments = null)
 {
     var b = new BackgroundWorker();
     b.DoWork += (sender, args) =>
     {
         if (userCredentials.CredentialsFilled)
         {
             var restClient = new RestClient(HsrRestUrl);
             restClient.Authenticator = new HttpBasicAuthenticator(userCredentials.Name, userCredentials.Password);
             restClient.AddDefaultHeader("Accept", "text/json");
             restClient.ExecuteAsync(new RestRequest("/api/Timetable/" + username, Method.GET), (response, handle) =>
             {
                 Timetable timetable;
                 if (response.StatusCode == System.Net.HttpStatusCode.OK)
                 {
                     timetable = JsonHelper.ParseJson<Timetable>(response);
                     timetable.LastUpdated = DateTime.Now;
                     timetable.Username = username;
                     callback(timetable, callbackArguments);
                 }
                 else if (response.StatusCode == System.Net.HttpStatusCode.Forbidden && string.IsNullOrEmpty(response.Content))
                 {
                     callback(new Timetable(){BlockedTimetable = true, LastUpdated = DateTime.Now, Username = username}, callbackArguments);
                 }
                 else
                 {
                     callback(new Timetable(){ErrorMessage = response.StatusDescription, LastUpdated = DateTime.Now, Username = username}, callbackArguments);
                 }
             });
         }
         else
         {
             callback(new Timetable(){ErrorMessage = "Keine Benutzerdaten vorhanden.", LastUpdated = DateTime.Now, Username = username}, callbackArguments);
         }};
     b.RunWorkerAsync();
 }
 public static void GetUserTimetable(UserCredentials userCredentials, TimetableCallback callback, object[] callbackArguments = null)
 {
     GetUserTimetable(userCredentials, userCredentials.Name, callback, callbackArguments);
 }