예제 #1
0
        public void ApiRequest_FromQuery_WithId()
        {
            // Arrange
            var id = GetId();
            var query = new Query<ODataObject>(GetShareFileClient());
            query.From("Items")
                .Id(id)
                .Action("Download");

            // Act
            var apiRequest = ApiRequest.FromQuery(query);

            // Assert
            apiRequest.Body.Should().BeNull();
            apiRequest.HttpMethod.Should().Be("GET");
            var expectedUri = "https://release.sf-api.com/sf/v3/Items(" + id + ")/Download";
            apiRequest.GetComposedUri().ToString().Should().Be(expectedUri);
        }
예제 #2
0
        /// <summary>
        /// Remove sharefile item
        /// </summary>
        private bool RemoveShareFileItem(ShareFileClient client, Item item)
        {
            Query<ODataObject> query = new Query<ODataObject>(client);

            query.HttpMethod = "DELETE";
            query.Id(item.Id);
            query.From("Items");

            try
            {
                client.Execute(query);
            }
            catch
            {
                return false;
            }

            return true;
        }
        protected override void ProcessRecord()
        {
            if (Id != null && Uri != null) throw new Exception("Set only Id or Uri");
            if (Action == null && Cast != null) Action = Cast;
            if (Action == null && Navigation != null) Action = Navigation;
            if (Method == null) Method = "GET";
            Method = Method.ToUpper();

            Query<ODataObject> query = new Query<ODataObject>(Client.Client);
            query.HttpMethod = Method;

            if (string.IsNullOrWhiteSpace(Filter) == false) query.Filter(AddFilter());
            if (Entity != null) query = query.From(Entity);
            if (Action != null) query = query.Action(Action);
            if (Id != null) query = query.Id(Id);
            else if (Uri != null) query = query.Id(Uri.ToString());

            if (Parameters != null)
            {
                foreach (var key in Parameters.Keys)
                {
                    if (!(key is string)) throw new Exception("Use strings for parameter keys");
                    query = query.QueryString((string)key, Parameters[key].ToString());
                }
            }
            if (Expand != null) query = query.Expand(Expand);
            if (Select != null) query = query.Select(Select);
            if (Body != null)
            {
                query.Body = Body;
            }
            else if (BodyText != null)
            {
                query.Body = BodyText;
            }
            try
            {
                var response = query.Execute();
                if (response != null)
                {
                    Type t = response.GetType();
                    if (t.IsGenericType)
                    {
                        if (t.GetGenericTypeDefinition() == typeof(ODataFeed<>))
                        {
                            var feed = t.GetProperty("Feed").GetValue(response, null) as IEnumerable<ODataObject>;
                            foreach (var o in feed)
                            {
                                WriteObject(o);
                            }
                        }
                    }
                    else
                    {
                        WriteObject(response);
                    }
                }
            }
            catch (ODataException e)
            {
                WriteError(new ErrorRecord(new Exception(e.Code.ToString() + ": " + e.ODataExceptionMessage.Message), e.Code.ToString(), ErrorCategory.NotSpecified, query.GetEntity()));
            }
            catch(Exception e)
            {
                ShowSuggestion(Entity,Action,Parameters);
                throw;
            }
        }