/// <summary>
        ///     This method is responsible for retrieving a project by id.
        /// </summary>
        /// <param name="dataSourceGuid">The data source guid that specifies which data source should get used.</param>
        /// <param name="token">The token which is used for retrieving all the projects. This can be a username or Oauth tokens.</param>
        /// <param name="id">The id of the project which will get used for searching the correct project.</param>
        /// <param name="needsAuth">The needsAuth parameter specifies which flow should get used.</param>
        /// <returns>This method returns a project with the specified identifier.</returns>
        public async Task <Project> GetProjectById(string dataSourceGuid, string token, string id, bool needsAuth)
        {
            IDataSourceAdaptee adaptee = await dataProviderLoader.GetDataSourceByGuid(dataSourceGuid);

            dataProviderAdapter = new DataProviderAdapter(adaptee);
            return(await dataProviderAdapter.GetProjectByGuid(token, id, needsAuth));
        }
        /// <summary>
        ///     This method is responsible for retrieving all projects from a data source.
        /// </summary>
        /// <param name="dataSourceGuid">The data source guid that specifies which data source should get used.</param>
        /// <param name="token">The token which is used for retrieving all the projects. This can be a username or Oauth tokens.</param>
        /// <param name="needsAuth">The needsAuth parameter specifies which flow should get used.</param>
        /// <returns>This method returns a collection of projects.</returns>
        public async Task <IEnumerable <Project> > GetAllProjects(string dataSourceGuid, string token, bool needsAuth)
        {
            IDataSourceAdaptee adaptee = await dataProviderLoader.GetDataSourceByGuid(dataSourceGuid);

            dataProviderAdapter = new DataProviderAdapter(adaptee);
            return(await dataProviderAdapter.GetAllProjects(token, needsAuth));
        }
        /// <summary>
        ///     This method is responsible for retrieving a project by uri.
        /// </summary>
        /// <param name="dataSourceGuid">The data source guid that specifies which data source should get used.</param>
        /// <param name="sourceUri">The source uri of the project which will get used for retrieving the correct project.</param>
        /// <returns>This method returns a project from the specified uri.</returns>
        public async Task <Project> GetProjectFromUri(string dataSourceGuid, string sourceUri)
        {
            IDataSourceAdaptee adaptee = await dataProviderLoader.GetDataSourceByGuid(dataSourceGuid);

            dataProviderAdapter = new DataProviderAdapter(adaptee);

            sourceUri = sourceUri.Replace("%2F", "/");
            if (sourceUri[^ 1] == '/')