Bari.Plugins.FSRepository.Model.UriBasedPatternResolutionContext.UriBasedPatternResolutionContext C# (CSharp) Method

UriBasedPatternResolutionContext() public method

public UriBasedPatternResolutionContext ( IEnvironmentVariableContext environmentVariableContext, Uri uri ) : System
environmentVariableContext IEnvironmentVariableContext
uri System.Uri
return System
        public UriBasedPatternResolutionContext(IEnvironmentVariableContext environmentVariableContext, Uri uri)
        {
            Contract.Requires(environmentVariableContext != null);
            Contract.Requires(uri != null);

            this.environmentVariableContext = environmentVariableContext;

            string host = uri.Host;
            string path = uri.AbsolutePath.TrimStart('/');

            string[] pathParts = path.Split('/');

            if (pathParts.Length == 1)
            {
                repositoryName = null;
                dependencyName = host;
                fileName = Path.GetFileNameWithoutExtension(pathParts[0]);
                extension = Path.GetExtension(pathParts[0]).With(ex => ex.TrimStart('.'));
                version = null;
            }
            else if (pathParts.Length == 2)
            {
                repositoryName = null;
                dependencyName = host;
                fileName = Path.GetFileNameWithoutExtension(pathParts[1]);
                extension = Path.GetExtension(pathParts[1]).With(ex => ex.TrimStart('.'));
                version = pathParts[0];
            }
            else if (pathParts.Length == 3)
            {
                repositoryName = host;
                dependencyName = pathParts[0];
                fileName = Path.GetFileNameWithoutExtension(pathParts[2]);
                extension = Path.GetExtension(pathParts[2]).With(ex => ex.TrimStart('.'));
                version = pathParts[1];
            }
            else
            {
                throw new InvalidReferenceException("Invalid FS repository dependency URI: " + uri);
            }
        }