public virtual void Synchronize(SirenOfShameSettings settings, string exportedBuilds, string exportedAchievements, Action <DateTime> onSuccess, Action <string, ServerUnavailableException> onFail) { WebClientXml webClientXml = new WebClientXml(); AddSosOnlineCredentials(settings, webClientXml); webClientXml.Add("Builds", exportedBuilds); webClientXml.Add("Achievements", exportedAchievements); if (settings.SoftwareInstanceId.HasValue) { webClientXml.Add("SoftwareInstanceId", settings.SoftwareInstanceId.Value.ToString(CultureInfo.InvariantCulture)); } webClientXml.UploadValuesAndReturnXmlAsync(SOS_URL + "/ApiV1/Synchronize", doc => { string success = doc.Descendants("Success").First().Value; if (success == "true") { string newHighWaterMarkStr = doc.Descendants("NewHighWaterMark").First().Value; DateTime newHighWaterMark = new DateTime(long.Parse(newHighWaterMarkStr)); onSuccess(newHighWaterMark); } else { string errorMessage = doc.Descendants("ErrorMessage").First().Value; onFail(errorMessage, null); } }, OnConnectionFail(onFail), settings.GetSosOnlineProxy()); }
public virtual void BuildStatusChanged(SirenOfShameSettings settings, IList <BuildStatus> changedBuildStatuses) { WebClientXml webClientXml = new WebClientXml(); AddSosOnlineCredentials(settings, webClientXml); string json = JsonConvert.SerializeObject(changedBuildStatuses); webClientXml.Add("ChangedBuildStatuses", json); if (settings.SoftwareInstanceId.HasValue) { webClientXml.Add("SoftwareInstanceId", settings.SoftwareInstanceId.Value.ToString(CultureInfo.InvariantCulture)); } const string url = SOS_URL + "/ApiV1/BuildStatusChangedV1"; webClientXml.UploadValuesAndReturnStringAsync(url, resultsStr => { var result = JsonConvert.DeserializeObject <ApiResultBase>(resultsStr); if (!result.Success) { string errorMessage = result.Message; _log.Error("Error publishing to: " + url + " error: " + errorMessage); } }, ex => _log.Error("Error publishing to: " + url, ex), settings.GetSosOnlineProxy()); }
private void SendNewCustomImages(SirenOfShameSettings settings, List <InstanceUserDto> changedUsers) { var changedPeople = changedUsers .Select(changedUser => settings.FindPersonByRawName(changedUser.RawName)) .Where(person => person != null); var changedPeopleWithUnUploadedCustomImages = changedPeople .Where(i => !string.IsNullOrEmpty(i.AvatarImageName) && !i.AvatarImageUploaded); foreach (var person in changedPeopleWithUnUploadedCustomImages) { var webClientXml = new WebClientXml(); AddSosOnlineCredentials(settings, webClientXml); webClientXml.Add("AvatarImageName", person.AvatarImageName); var avatarImagePath = SirenOfShameSettings.GetAvatarImagePath(person.AvatarImageName); var imageAsBytes = File.ReadAllBytes(avatarImagePath); var imageAsString = Convert.ToBase64String(imageAsBytes); webClientXml.Add("AvatarImage", imageAsString); string url = SOS_URL + "/ApiV1/AddImage"; var person1 = person; webClientXml.UploadValuesAndReturnStringAsync(url, s => _log.Debug("Uploaded " + person1.AvatarImageName), ex => _log.Error("Error uploading image for " + person1.AvatarImageName), settings.GetSosOnlineProxy()); person.AvatarImageUploaded = true; settings.Save(); } }
public virtual void BuildStatusChanged(SirenOfShameSettings settings, IList <BuildStatus> changedBuildStatuses, List <InstanceUserDto> changedUsers) { WebClientXml webClientXml = new WebClientXml(); AddSosOnlineCredentials(settings, webClientXml); webClientXml.Add("ChangedBuildStatuses", JsonConvert.SerializeObject(changedBuildStatuses)); webClientXml.Add("ChangedUsers", JsonConvert.SerializeObject(changedUsers)); if (settings.SoftwareInstanceId.HasValue) { webClientXml.Add("SoftwareInstanceId", settings.SoftwareInstanceId.Value.ToString(CultureInfo.InvariantCulture)); } string url = SOS_URL + "/ApiV1/BuildStatusChangedV1"; webClientXml.UploadValuesAndReturnStringAsync(url, ReadResult, ex => _log.Error("Error publishing to: " + url, ex), settings.GetSosOnlineProxy()); }
public virtual void SendMessage(SirenOfShameSettings settings, string message) { WebClientXml webClientXml = new WebClientXml(); AddSosOnlineCredentials(settings, webClientXml); webClientXml.Add("Message", message); webClientXml.UploadValuesAndReturnXmlAsync(SOS_URL + "/ApiV1/AddMessage", doc => { string success = doc.Descendants("Success").First().Value; if (success == "true") { _log.Debug("Message successfully added"); } else { string errorMessage = doc.Descendants("ErrorMessage").First().Value; _log.Error("Failed to add message: " + errorMessage); } }, OnConnectionFail, settings.GetSosOnlineProxy()); }
private static void AddSosOnlineCredentials(SirenOfShameSettings settings, WebClientXml webClientXml) { webClientXml.Add("UserName", settings.SosOnlineUsername); // send the encrypted version of the password since we're too cheap to support SSL at present webClientXml.Add("Password", settings.SosOnlinePassword); }