/// <summary>
        /// Gets the response.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query">The query.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">query</exception>
        public override T GetResponse <T>(IBaseQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            // build the query
            var uri = query.BuildUri(HostName);

            HttpWebRequest request;

            switch (query.QueryType)
            {
            case SitecoreQueryType.Create:
            case SitecoreQueryType.Update:
                request = CreateRequest(uri, query.QueryType,
                                        ((ISitecoreQuery)query).FieldsToUpdate.ToQueryString());
                break;

            default:
                request = CreateRequest(uri, query.QueryType);
                break;
            }

            // send the request
            return(Get(request, query.ResponseFormat, new T()));
        }
        private Dictionary <string, object> FillMedia(IBaseQuery query)
        {
            Dictionary <string, object> postParameters = null;

            if (query != null)
            {
                FileStream fs; byte[] filedata = null;
                if (query.QueryType == SitecoreQueryType.AdvanceCreate)
                {
                    fs = ((ISitecoreAdvanceQuery)query).MediaItemStream;
                }
                else
                {
                    fs = ((ISitecoreCreateQuery)query).MediaItemStream;
                }
                if (fs != null)
                {
                    filedata = new byte[fs.Length];
                    fs.Read(filedata, 0, filedata.Length);
                    fs.Close();
                    if (filedata != null)
                    {
                        postParameters = new Dictionary <string, object>();
                        postParameters.Add(Mindtree.ItemWebApi.Pipelines.Configuration.Settings.file, new FileParameter(filedata, fs.Name, ""));
                    }
                }
            }
            return(postParameters);
        }
 public BaseSpecification <T> Convert(IBaseQuery source, BaseSpecification <T> destination, ResolutionContext context)
 {
     return(new BaseSpecification <T>
     {
         Skip = source.Skip ?? 0,
         Take = source.Take ?? 0,
         isPagingEnabled = source.Skip != null || source.Take != null,
         IncludeStrings = source
                          .Include?
                          .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)?
                          .ToList() ?? new List <string>()
     });
 }
Exemplo n.º 4
0
        /// <summary>
        /// Gets the response.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query">The query.</param>
        /// <returns></returns>
        public virtual T GetResponse <T>(IBaseQuery query) where T : class, IBaseResponse, new()
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            if (query.QueryType == SitecoreQueryType.Create || query.QueryType == SitecoreQueryType.Update)
            {
                throw new InvalidOperationException("A create or update query must be used with an authenticated data context");
            }

            // build the query
            var uri     = query.BuildUri(_hostName);
            var request = CreateRequest(uri, query.QueryType);

            // send the request
            return(Get(request, query.ResponseFormat, new T()));
        }
        /// <summary>
        /// Gets the response.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query">The query.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">query</exception>
        public override T GetResponse <T>(IBaseQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            // build the query
            var            uri = query.BuildUri(HostName);
            HttpWebRequest request = null; T response = null;

            contentType = string.Empty;
            string formDataBoundary = string.Empty;
            Dictionary <string, object> postParameters = null;

            byte[] formData = null;
            formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
            contentType      = Mindtree.ItemWebApi.Pipelines.Configuration.Settings.ContentTypeMultipleFormData + " boundary=" + formDataBoundary;
            try
            {
                switch (query.QueryType)
                {
                case SitecoreQueryType.AdvanceCreate:
                    string loadOptions   = ((ISitecoreAdvanceQuery)query).loadOptions;
                    string syncItem      = ((ISitecoreAdvanceQuery)query).syncItem;
                    string encryptionKey = ((ISitecoreAdvanceQuery)query).EncryptionKey;
                    // Generate post objects
                    postParameters = FillMedia(query);
                    if (postParameters == null)
                    {
                        postParameters = new Dictionary <string, object>();
                    }
                    postParameters.Add(Mindtree.ItemWebApi.Pipelines.Configuration.Settings.loadOptions, loadOptions);
                    postParameters.Add(Mindtree.ItemWebApi.Pipelines.Configuration.Settings.syncItem, syncItem);
                    postParameters.Add(Mindtree.ItemWebApi.Pipelines.Configuration.Settings.enKey, encryptionKey);
                    formData = FormUpload.GetMultipartFormDataOne(postParameters, formDataBoundary);
                    request  = CreateRequest(uri, query.QueryType, formData, contentType);
                    break;

                case SitecoreQueryType.Create:
                case SitecoreQueryType.Update:
                case SitecoreQueryType.CreateVersion:
                    postParameters = FillMedia(query);
                    if (postParameters == null)
                    {
                        postParameters = new Dictionary <string, object>();
                    }
                    foreach (var item in ((ISitecoreQuery)query).FieldsToUpdate)
                    {
                        postParameters.Add(item.Key, item.Value);
                    }
                    formData = FormUpload.GetMultipartFormData(postParameters, formDataBoundary);
                    request  = CreateRequest(uri, query.QueryType, formData, contentType);
                    break;

                default:
                    //FileStream fs = null;
                    request             = CreateRequest(uri, query.QueryType);
                    request.ContentType = Mindtree.ItemWebApi.Pipelines.Configuration.Settings.ContentTypeFormData;
                    break;
                }
                // send the request
                if (request != null)
                {
                    response = Get(request, query.ResponseFormat, new T());
                }
            }
            catch (Exception ex)
            { Log.WriteError(ex.Message, ex); }
            finally { formData = null; request = null; formDataBoundary = null; contentType = null; }
            // return the response
            return(response);
        }
Exemplo n.º 6
0
 public BookListQuery(IBaseQuery <Book> baseQuery)
 {
     this.Query = baseQuery;
 }