public void SetUp()
    {
      SessionConfigPOD mockConfig = new SessionConfigPOD();
      mockConfig.InstanceUrl = "localhost";
      mockConfig.ItemWebApiVersion = "v1";
      mockConfig.Site = null;

      var itemSource = new ItemSourcePOD("master", "fr");

      var mediaSettings = new MutableMediaLibrarySettings();

      this.builder = new MediaItemUrlBuilder(
        RestServiceGrammar.ItemWebApiV2Grammar(),
        WebApiUrlParameters.ItemWebApiV2UrlParameters(),
        mockConfig,
        mediaSettings,
        itemSource);


      SessionConfigPOD mockConfigWithShell = new SessionConfigPOD();
      mockConfigWithShell.InstanceUrl = "localhost";
      mockConfigWithShell.ItemWebApiVersion = "v1";
      mockConfigWithShell.Site = "/sitecore/shell";
      this.builderWithShellSite = new MediaItemUrlBuilder(
        RestServiceGrammar.ItemWebApiV2Grammar(),
        WebApiUrlParameters.ItemWebApiV2UrlParameters(),
        mockConfigWithShell,
        mediaSettings,
        itemSource);
    }
    public void SetUp()
    {
      this.webApiGrammar = WebApiUrlParameters.ItemWebApiV2UrlParameters();
      this.restGrammar = RestServiceGrammar.ItemWebApiV2Grammar();

      SessionConfigPOD sessionConfig = new SessionConfigPOD();
      sessionConfig.InstanceUrl = "http://test.host";
      sessionConfig.ItemWebApiVersion = "v1";
      sessionConfig.Site = "/sitecore/shell";
      sessionConfig.MediaLibraryRoot = "/sitecore/media library";
      sessionConfig.DefaultMediaResourceExtension = "ashx";
      sessionConfig.MediaPrefix = "~/media";

      ISessionConfig sessionSettings = sessionConfig;
      IMediaLibrarySettings mediaSettings = sessionConfig;

      ItemSource itemSource = LegacyConstants.DefaultSource();
      this.builder = new MediaItemUrlBuilder(this.restGrammar, this.webApiGrammar, sessionSettings, mediaSettings, itemSource);
    }
 public void TearDown()
 {
   this.builder = null;
 }
    public void TestCustomMediaHook()
    {
      SessionConfigPOD sessionConfig = new SessionConfigPOD();
      sessionConfig.InstanceUrl = "htTP://CUSTOM.hoST";
      sessionConfig.ItemWebApiVersion = "v1";
      sessionConfig.Site = "/sitecore/shell";
      sessionConfig.MediaLibraryRoot = "/SiteCore/Other Media Library";
      sessionConfig.DefaultMediaResourceExtension = "ZIP";
      sessionConfig.MediaPrefix = "~/MediaXyZ";

      ISessionConfig sessionSettings = sessionConfig;
      IMediaLibrarySettings mediaSettings = sessionConfig;


      ItemSource itemSource = LegacyConstants.DefaultSource();
      this.builder = new MediaItemUrlBuilder(this.restGrammar, this.webApiGrammar, sessionSettings, mediaSettings, itemSource);

      var customBuilder =
        new MediaItemUrlBuilder(
          this.restGrammar,
          this.webApiGrammar,
          sessionSettings,
          mediaSettings,
          itemSource);


      string result = customBuilder.BuildUrlStringForPath("~/mediaXYZ/1.png.ashx", null);
      string expected = "http://custom.host/~/mediaxyz/1.png.ashx?db=web&la=en";

      Assert.AreEqual(expected, result);
    }
    private async Task<Stream> DownloadHashedMediaResourceAsync(IMediaResourceDownloadRequest request, CancellationToken cancelToken = default(CancellationToken))
    {
      var cryptor = await this.GetCredentialsCryptorAsync(cancelToken);

      MediaItemUrlBuilder urlBuilder = new MediaItemUrlBuilder(
        this.restGrammar,
        this.webApiGrammar,
        this.sessionConfig,
        this.mediaSettings,
        request.ItemSource);

      var hashUrlGetterFlow = new GetMediaContentHashTask(urlBuilder, this.httpClient, cryptor);
      string hashedMediaUrl = await RestApiCallFlow.LoadRequestFromNetworkFlow(request, hashUrlGetterFlow, cancelToken);

      try
      {
        Stream result = await this.httpClient.GetStreamAsync(hashedMediaUrl);
        return result;
      }
      catch (Exception ex)
      {
        throw new LoadDataFromNetworkException(TaskFlowErrorMessages.NETWORK_EXCEPTION_MESSAGE, ex);
      }
    }
    private async Task<Stream> DownloadPlainMediaResourceAsync(IMediaResourceDownloadRequest request, CancellationToken cancelToken = default(CancellationToken))
    {
      MediaItemUrlBuilder urlBuilder = new MediaItemUrlBuilder(
        this.restGrammar,
        this.webApiGrammar,
        this.sessionConfig,
        this.mediaSettings,
        request.ItemSource);

      var taskFlow = new GetResourceTask(urlBuilder, this.httpClient);
      return await RestApiCallFlow.LoadResourceFromNetworkFlow(request, taskFlow, cancelToken);
    }
 public void TearDown()
 {
   this.builder = null;
   this.builderWithShellSite = null;
 }