/// <summary> /// /// Encapsulate the oodss client requst in a simpler GetMetadata call. /// </summary> /// <param name="url"></param> /// <returns></returns> public async Task<Document> RequestMetadata(ParsedUri uri) { Document result = null; if (_metadataClient != null) { Debug.WriteLine("Performing asynchronous call"); ResponseMessage metadataResponse = _metadataClient.RequestAsync(new MetadataRequest(uri.ToString())).Result; Debug.WriteLine("Received asynchronous request "); if (metadataResponse != null && metadataResponse is MetadataResponse) { result = (metadataResponse as MetadataResponse).Metadata; } else if (metadataResponse != null && metadataResponse is SemanticServiceError) { (metadataResponse as SemanticServiceError).Perform(); } else throw new Exception(); } else { var requestUri = new ParsedUri(_serviceBaseUri, "?url=" + uri.AbsoluteUri); result = await _metadataTypeScope.DeserializeUri(requestUri, Format.Xml) as Document; } return result; }
public ParsedUri Perform(ParsedUri input) { ParsedUri result = null; if (input != null && match != null) { String str = input.ToString(); Match matcher = match.Match(str); if (matcher.Success) { if (replace == null) replace = ""; Debug.WriteLine(matcher.Groups[0].Value + " " + matcher.Groups[1].Value); String rez = input.ToString().Replace(matcher.Groups[0].Value, replace); for (int i = 1; i < matcher.Groups.Count; i++) rez = rez.Replace("$" + i, matcher.Groups[i].Value); result = new ParsedUri(rez); } } return result; }