public MetalArchivesResponse Process(MetalArchivesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException($"{nameof(request)} may not be null");
            }

            // only need to expose http GET method, others are irrelevant
            return(GetResponseAsync(new Uri(string.Format(_queryEndpoint, request.ArtistName))));
        }
        public MusicLibrary Submit(MetalArchivesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException($"{nameof(request)} may not be null");
            }

            var response = _service.Process(request);

            var musicLibrary = new MusicLibrary(_parser.Parse(response).Collection);

            return(_filterer.Filter(musicLibrary, request));
        }