protected List <T> RetrieveEtObjects <T>( string objType, string[] retProps, out string continueRequestId, FilterPart filter = null, string existingRequestId = null ) where T : APIObject { RetrieveRequest rr = null; continueRequestId = null; if (!string.IsNullOrEmpty(existingRequestId)) { rr = new RetrieveRequest { ContinueRequest = existingRequestId }; } else if (filter != null) { rr = new RetrieveRequest { ObjectType = objType, Properties = retProps, Filter = filter }; } else { rr = new RetrieveRequest { ObjectType = objType, Properties = retProps, }; } if (_auth.ClientId.HasValue) { rr.ClientIDs = new ClientID[] { new ClientID() { ID = _auth.ClientId.Value, IDSpecified = true } }; } RetrieveRequest1 request1 = new RetrieveRequest1(rr); var result = Client.RetrieveAsync(request1).Result; if (result.OverallStatus.ToLower().StartsWith("error")) { throw new Exception(result.OverallStatus); } if (result.OverallStatus.ToLower() == "moredataavailable") { continueRequestId = result.RequestID; } return(result.Results.ToList().ConvertAll(obj => (T)obj)); }
private static Expression ParseListComprehension(Parser parser, Token token, Expression firstExpression) { ComprehensionPart root = null; ComprehensionPart prev = null; while (true) { ComprehensionPart curr; if (parser.Match(TokenType.Identifier) && parser.Match(TokenType.In, 1)) { var identifier = parser.Take(TokenType.Identifier).Contents; parser.Take(TokenType.In); var list = parser.ParseExpession(); curr = new ListPart(token, identifier, list); } else { var filter = parser.ParseExpession(); curr = new FilterPart(token, filter); } if (root == null) { root = curr; } if (prev != null) { prev.Next = curr; } prev = curr; if (!parser.Match(TokenType.Comma)) { break; } parser.Take(TokenType.Comma); } parser.Take(TokenType.RightSquare); prev.Next = new YieldPart(token, firstExpression); var body = new BlockExpression(new List <Expression> { root.Compile() }); return(new ListComprehensionExpression(token, body)); }
public IEnumerable <T> GetMany <T>(FilterPart filter, string[] properties) where T : APIObject { RetrieveRequest request = new RetrieveRequest(); request.ObjectType = typeof(T).Name; request.Properties = properties; request.Filter = filter; List <T> rv = new List <T>(); foreach (var result in GetObjects(request)) { rv.Add((T)result); } return(rv); }
public T Get <T>(FilterPart filter, string[] properties) where T : APIObject { RetrieveRequest request = new RetrieveRequest(); request.ObjectType = typeof(T).Name; request.Properties = properties; request.Filter = filter; var obs = GetObjects(request); if (obs.Length > 0) { return((T)obs[0]); } else { return(null); } }