public virtual string GetUrlForRequest(IMediaResourceUploadRequest request)
    {

      string hostUrl = this.GetHostUrlForRequest(request);
      string baseUrl = this.GetCommonPartForRequest(request).ToLowerInvariant();

      hostUrl = hostUrl + baseUrl;

      ItemSourceUrlBuilder sourceBuilder = new ItemSourceUrlBuilder(this.restGrammar, this.webApiGrammar, request.ItemSource);
      string itemSourceArgs = sourceBuilder.BuildUrlQueryString();

      string allParameters = itemSourceArgs;

      allParameters = allParameters + this.SpecificParametersForRequest(request);

      bool shouldTruncateBaseUrl = (!string.IsNullOrEmpty(allParameters) && allParameters.StartsWith(this.restGrammar.FieldSeparator));
      while (shouldTruncateBaseUrl)
      {
        allParameters = allParameters.Substring(1);
        shouldTruncateBaseUrl = (!string.IsNullOrEmpty(allParameters) && allParameters.StartsWith(this.restGrammar.FieldSeparator));
      }

      string result = hostUrl;

      if (!string.IsNullOrEmpty(allParameters))
      {
        result =
          result +
          this.restGrammar.HostAndArgsSeparator + allParameters;
      }

      return result;
    }
    private string SpecificParametersForRequest(IMediaResourceUploadRequest request)
    {
      string result = "";

      if (null != request.UploadOptions.FileName)
      {
        result += this.restGrammar.FieldSeparator
          + this.webApiGrammar.ItemNameParameterName
          + this.restGrammar.KeyValuePairSeparator
          + UrlBuilderUtils.EscapeDataString(request.UploadOptions.ItemName);
      }

      if (null != request.UploadOptions.ItemTemplatePath)
      {
        result += this.restGrammar.FieldSeparator
          + this.webApiGrammar.TemplateParameterName
          + this.restGrammar.KeyValuePairSeparator
          + UrlBuilderUtils.EscapeDataString(request.UploadOptions.ItemTemplatePath);
      }

      if (null != request.UploadOptions.ParentId)
      {
        result += this.restGrammar.FieldSeparator
          + this.webApiGrammar.ItemIdParameterName
          + this.restGrammar.KeyValuePairSeparator
          + UrlBuilderUtils.EscapeDataString(request.UploadOptions.ParentId);
      }

      return result;
    }
    protected virtual string GetHostUrlForRequest(IMediaResourceUploadRequest request)
    {
      SessionConfigUrlBuilder sessionBuilder = new SessionConfigUrlBuilder(this.restGrammar, this.webApiGrammar);
      string hostUrl = sessionBuilder.BuildUrlString(request.SessionSettings);

      return hostUrl;
    }
Example #4
0
        public virtual string GetUrlForRequest(IMediaResourceUploadRequest request)
        {
            string hostUrl = this.GetHostUrlForRequest(request);
            string baseUrl = this.GetCommonPartForRequest(request).ToLowerInvariant();

            hostUrl = hostUrl + baseUrl;

            ItemSourceUrlBuilder sourceBuilder = new ItemSourceUrlBuilder(this.restGrammar, this.webApiGrammar, request.ItemSource);
            string itemSourceArgs = sourceBuilder.BuildUrlQueryString();

            string allParameters = itemSourceArgs;

            allParameters = allParameters + this.SpecificParametersForRequest(request);

            bool shouldTruncateBaseUrl = (!string.IsNullOrEmpty(allParameters) && allParameters.StartsWith(this.restGrammar.FieldSeparator));

            while (shouldTruncateBaseUrl)
            {
                allParameters         = allParameters.Substring(1);
                shouldTruncateBaseUrl = (!string.IsNullOrEmpty(allParameters) && allParameters.StartsWith(this.restGrammar.FieldSeparator));
            }

            string result = hostUrl;

            if (!string.IsNullOrEmpty(allParameters))
            {
                result =
                    result +
                    this.restGrammar.HostAndArgsSeparator + allParameters;
            }

            return(result);
        }
Example #5
0
        private string SpecificParametersForRequest(IMediaResourceUploadRequest request)
        {
            string result = "";

            if (null != request.UploadOptions.FileName)
            {
                result += this.restGrammar.FieldSeparator
                          + this.webApiGrammar.ItemNameParameterName
                          + this.restGrammar.KeyValuePairSeparator
                          + UrlBuilderUtils.EscapeDataString(request.UploadOptions.ItemName);
            }

            if (null != request.UploadOptions.ItemTemplatePath)
            {
                result += this.restGrammar.FieldSeparator
                          + this.webApiGrammar.TemplateParameterName
                          + this.restGrammar.KeyValuePairSeparator
                          + UrlBuilderUtils.EscapeDataString(request.UploadOptions.ItemTemplatePath);
            }

            if (null != request.UploadOptions.ParentId)
            {
                result += this.restGrammar.FieldSeparator
                          + this.webApiGrammar.ItemIdParameterName
                          + this.restGrammar.KeyValuePairSeparator
                          + UrlBuilderUtils.EscapeDataString(request.UploadOptions.ParentId);
            }

            return(result);
        }
Example #6
0
        protected virtual string GetHostUrlForRequest(IMediaResourceUploadRequest request)
        {
            SessionConfigUrlBuilder sessionBuilder = new SessionConfigUrlBuilder(this.restGrammar, this.webApiGrammar);
            string hostUrl = sessionBuilder.BuildUrlString(request.SessionSettings);

            return(hostUrl);
        }
Example #7
0
        public void TestCorrectParamsForParentId()
        {
            Stream stream = this.GenerateFakeStream();
            IMediaResourceUploadRequest request = ItemWebApiRequestBuilder.UploadResourceRequestWithParentId("{BC1BAE61-ADC6-4B37-B36E-01059B26CF84}")
                                                  .ContentType("image/jpg")
                                                  .ItemName("name1")
                                                  .FileName("bugaga.jpg")
                                                  .ItemTemplatePath("System/Media/Unversioned/Image")
                                                  .ItemDataStream(stream)
                                                  .Build();

            IMediaResourceUploadRequest autocompletedRequest = this.requestMerger.FillUploadMediaGaps(request);

            string result   = this.builder.GetUrlForRequest(autocompletedRequest);
            string expected = "http://mobiledev1ua1.dk.sitecore.net:7119/" +
                              "-/item/v234%2f" +
                              "sitecore%2fshell" +
                              "?" +
                              "sc_database=web&" +
                              "name=name1&" +
                              "template=System%2fMedia%2fUnversioned%2fImage&" +
                              "sc_itemid=%7BBC1BAE61-ADC6-4B37-B36E-01059B26CF84%7D";

            Assert.AreEqual(expected, result);
        }
Example #8
0
        public IMediaResourceUploadRequest FillUploadMediaGaps(IMediaResourceUploadRequest userRequest)
        {
            IItemSource mergedSource = this.ItemSourceMerger.FillItemSourceGapsForMediaUpload(userRequest.ItemSource);

            ISessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionSettings);

            UploadMediaOptions createMediaParameters = userRequest.UploadOptions.ShallowCopy();

            return(new MediaResourceUploadParameters(mergedSessionConfig, mergedSource, createMediaParameters));
        }
    public IMediaResourceUploadRequest FillUploadMediaGaps(IMediaResourceUploadRequest userRequest)
    {
      IItemSource mergedSource = this.ItemSourceMerger.FillItemSourceGapsForMediaUpload(userRequest.ItemSource);

      ISessionConfig mergedSessionConfig = this.SessionConfigMerger.FillSessionConfigGaps(userRequest.SessionSettings);
     
      UploadMediaOptions createMediaParameters = userRequest.UploadOptions.ShallowCopy();

      return new MediaResourceUploadParameters(mergedSessionConfig, mergedSource, createMediaParameters);
    }
        public async Task <ScItemsResponse> UploadMediaResourceAsync(IMediaResourceUploadRequest request, CancellationToken cancelToken = default(CancellationToken))
        {
            IMediaResourceUploadRequest requestCopy = request.DeepCopyUploadMediaRequest();

            using (ICredentialsHeadersCryptor cryptor = await this.GetCredentialsCryptorAsync(cancelToken))
            {
                IMediaResourceUploadRequest autocompletedRequest = this.requestMerger.FillUploadMediaGaps(requestCopy);

                var urlBuilder = new UploadMediaUrlBuilder(this.restGrammar, this.webApiGrammar, this.sessionConfig, this.mediaSettings);
                var taskFlow   = new UploadMediaTask(urlBuilder, this.httpClient, cryptor);

                return(await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken));
            }
        }
Example #11
0
        public void TestTemplateIsOptionalParams()
        {
            Stream stream = this.GenerateFakeStream();
            IMediaResourceUploadRequest request = ItemWebApiRequestBuilder.UploadResourceRequestWithParentPath("/some folder/path")
                                                  .ContentType("image/jpg")
                                                  .ItemName("name1")
                                                  .FileName("bugaga.jpg")
                                                  .ItemDataStream(stream)
                                                  .Build();

            IMediaResourceUploadRequest autocompletedRequest = this.requestMerger.FillUploadMediaGaps(request);

            string result   = this.builder.GetUrlForRequest(autocompletedRequest);
            string expected = "http://mobiledev1ua1.dk.sitecore.net:7119/" +
                              "-/item/v234%2f" +
                              "sitecore%2fshell" +
                              "%2fsome%20folder%2fpath" +
                              "?" +
                              "sc_database=web&" +
                              "name=name1";

            Assert.AreEqual(expected, result);
        }
 private string GetCommonPartForRequest(IMediaResourceUploadRequest request)
 {
   return UrlBuilderUtils.EscapeDataString(this.mediaSettings.MediaLibraryRoot + request.UploadOptions.MediaPath);
 }
Example #13
0
 private string GetCommonPartForRequest(IMediaResourceUploadRequest request)
 {
     return(UrlBuilderUtils.EscapeDataString(this.mediaSettings.MediaLibraryRoot + request.UploadOptions.MediaPath));
 }
    public async Task<ScItemsResponse> UploadMediaResourceAsync(IMediaResourceUploadRequest request, CancellationToken cancelToken = default(CancellationToken))
    {
      IMediaResourceUploadRequest requestCopy = request.DeepCopyUploadMediaRequest();

      using (ICredentialsHeadersCryptor cryptor = await this.GetCredentialsCryptorAsync(cancelToken))
      {
        IMediaResourceUploadRequest autocompletedRequest = this.requestMerger.FillUploadMediaGaps(requestCopy);

        var urlBuilder = new UploadMediaUrlBuilder(this.restGrammar, this.webApiGrammar, this.sessionConfig, this.mediaSettings);
        var taskFlow = new UploadMediaTask(urlBuilder, this.httpClient, cryptor);

        return await RestApiCallFlow.LoadRequestFromNetworkFlow(autocompletedRequest, taskFlow, cancelToken);
      }
    }
 public async Task <ScItemsResponse> UploadMediaResourceAsync(IMediaResourceUploadRequest request, CancellationToken cancelToken = default(CancellationToken))
 {
     return(await this.InvokeNoThrow(this.workerSession.UploadMediaResourceAsync(request, cancelToken)));
 }