////api/observations public CreateObservationResponse CreateObservation(PostObservationModel model) { if (String.IsNullOrWhiteSpace(model.Name)) model.Name = "Fungi"; var postUri = "observations?" + ConstructQueryString(model); var request = new RestRequest(postUri, Method.POST); var response = RestClient.Execute(request); var result = response.Content.ParseXML<XMLResponseModels.ApiResponse>(); if (result.Errors != null) { return new CreateObservationResponse() { Success = false, Message = result.Errors.Items.FirstOrDefault()?.Details }; } return new CreateObservationResponse() { Success = true, Message = result.Results?.Items?.FirstOrDefault()?.Id.ToString() }; }
private string ConstructQueryString(PostObservationModel model) { var queryParams = new NameValueCollection(); queryParams.Add("api_key", ApiKey); queryParams.Add("date", model.Date); queryParams.Add("location", model.Location); queryParams.Add("notes", model.Notes); queryParams.Add("has_specimen", model.HasSpecimen); queryParams.Add("name", model.Name); queryParams.Add("vote", model.Confidence); queryParams.Add("log", "no"); var items = new List<string>(); foreach (string name in queryParams) { items.Add(string.Concat(name, "=", HttpUtility.UrlEncode(queryParams[name]))); } return string.Join("&", items); }