Allow extracting file name in FollowRedirection strategy.
				
					
				
			This commit is contained in:
		
							parent
							
								
									b3c46ba2b9
								
							
						
					
					
						commit
						df70296403
					
				@ -30,15 +30,37 @@ module Homebrew
 | 
			
		||||
        # Checks the final URL for new versions after following all redirections,
 | 
			
		||||
        # using the provided regex for matching.
 | 
			
		||||
        sig { params(url: String, regex: T.nilable(Regexp)).returns(T::Hash[Symbol, T.untyped]) }
 | 
			
		||||
        def self.find_versions(url, regex)
 | 
			
		||||
          raise ArgumentError, "A regular expression is required for the #{NICE_NAME} strategy." if regex.nil?
 | 
			
		||||
 | 
			
		||||
        def self.find_versions(url, regex, &block)
 | 
			
		||||
          match_data = { matches: {}, regex: regex, url: url }
 | 
			
		||||
 | 
			
		||||
          if (location = Strategy.page_headers(url)["location"]) && (match = location[regex, 1])
 | 
			
		||||
            match_data[:matches][match] = Version.new(match)
 | 
			
		||||
          data = { headers: Strategy.page_headers(url) }
 | 
			
		||||
 | 
			
		||||
          if (filename = data[:headers]["content-disposition"])
 | 
			
		||||
            if regex
 | 
			
		||||
              data[:version] ||= location[regex, 1]
 | 
			
		||||
            else
 | 
			
		||||
              v = Version.parse(filename, detected_from_url: true)
 | 
			
		||||
              data[:version] ||= v.to_s unless v.null?
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          if (location = data[:headers]["location"])
 | 
			
		||||
            if regex
 | 
			
		||||
              data[:version] ||= location[regex, 1]
 | 
			
		||||
            else
 | 
			
		||||
              v = Version.parse(location, detected_from_url: true)
 | 
			
		||||
              data[:version] ||= v.to_s unless v.null?
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          version = if block
 | 
			
		||||
            block.call(data)
 | 
			
		||||
          else
 | 
			
		||||
            data[:version]
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          match_data[:matches][version] = Version.new(version) if version
 | 
			
		||||
 | 
			
		||||
          match_data
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user