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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }