public RtTicket ParseTicketGetResponse(RtResponse response) { IDictionary<string, string> ticketData = new Dictionary<string, string>(); string fieldName = null; var tmp = new StringBuilder(); foreach (var ticketLine in response.Body.Split(TicketLinesDelimiter, true)) { var m = KeyValueRegex.Matches(ticketLine); if (m.Count > 0) { var match = m[0]; var groupCollection = match.Groups; if (fieldName != null) { ticketData[fieldName] = tmp.ToString(); tmp.Length = 0; } fieldName = groupCollection[1].ToString(); tmp.Append(groupCollection[2]); } else { tmp.Append(ticketLine); } } if (fieldName != null) ticketData[fieldName] = tmp.ToString(); return ProcessTicketData(ticketData); }
public IEnumerable<RtTicket> ParseTicketSearchResponse(RtResponse response) { var resultData = new List<IDictionary<string, string>>(); if (response.Body == NoMatchingResults) return ProcessResultData(resultData); foreach (var ticketString in response.Body.Split(TicketsDelimiter, true)) { IDictionary<string, string> ticketData = new Dictionary<string, string>(); string fieldName = null; var tmp = new StringBuilder(); foreach (var ticketLine in ticketString.Split(TicketLinesDelimiter, true)) { var m = KeyValueRegex.Matches(ticketLine); if (m.Count > 0) { var match = m[0]; var groupCollection = match.Groups; if (fieldName != null) { ticketData[fieldName] = tmp.ToString(); tmp.Length = 0; } fieldName = groupCollection[1].ToString(); tmp.Append(groupCollection[2]); } else { tmp.Append(ticketLine); } } if (fieldName != null) ticketData[fieldName] = tmp.ToString(); resultData.Add(ticketData); } return ProcessResultData(resultData); }
private RtResponse GetResponse(string url, Dictionary<string, string> parameters) { string responseBody; if (parameters.Any()) { var postData = new StringBuilder(); foreach (var item in parameters) postData.Append(String.Format("{0}={1}&", item.Key, HttpUtility.UrlEncode(item.Value))); responseBody = _httpClient.UploadString(BaseUrl + url, postData.ToString()); } else responseBody = _httpClient.DownloadString(BaseUrl + url); var matcher = ResponseBodyRegex.Matches(responseBody); if (matcher.Count > 0) { var match = matcher[0]; var groupCollection = match.Groups; var response = new RtResponse { Version = groupCollection[1].ToString(), StatusCode = Convert.ToInt64(groupCollection[2].ToString()), StatusMessage = groupCollection[3].ToString(), Body = groupCollection[4].ToString().Trim() }; return response; } Console.Error.WriteLine("not matched"); return new RtResponse(); }