Fetcher
Constants
CODEBERG_RELEASES_PATTERN = /:\/\/(www\.)?codeberg\.org\/[^\/]+\/[^\/]+\/releases/i
DEFAULT_RETRIABLE = ->(ex : Exception) do
ex.is_a?(RetriableError) || (transient_error?(ex))
end
EMPTY_FEED_METADATA = FeedMetadata.new
GITHUB_RELEASES_PATTERN = /:\/\/(www\.)?github\.com\/[^\/]+\/[^\/]+\/releases/i
GITLAB_RELEASES_PATTERN = /:\/\/[^\/]+\/[^\/]+\/[^\/]+\/-\/releases/i
MAX_ENTITY_DEFINITIONS = 10
Maximum entity definitions allowed before suspecting entity expansion attack
PATTERN_DRIVERS = {REDDIT_URL_PATTERN => DriverType::Reddit, GITHUB_RELEASES_PATTERN => DriverType::Software, GITLAB_RELEASES_PATTERN => DriverType::Software, CODEBERG_RELEASES_PATTERN => DriverType::Software, YOUTUBE_CHANNEL_PATTERN => DriverType::YouTube}
REDDIT_URL_PATTERN = /:\/\/(www\.)?reddit\.com\/r\//i
Pre-compiled regex patterns for performance
RETRY_JITTER_MAX = 1.1
RETRY_JITTER_MIN = 0.9
YOUTUBE_CHANNEL_PATTERN = /:\/\/(www\.)?youtube\.com\/(channel\/|@|c\/|user\/)/i
Class methods
detect_driver(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, config : RequestConfig = RequestConfig.new) : DriverType
Sourceerror_result(err : Error) : Result
Sourcepull(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
Sourcepull(url : String, headers : HTTP::Headers, etag : String | Nil, last_modified : String | Nil, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
Sourcepull_json_feed(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
Sourcepull_reddit(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
Sourcepull_rss(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
Sourcepull_software(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
Sourcepull_youtube(url : String, headers : HTTP::Headers = ::HTTP::Headers.new, limit : Int32 = Config::DEFAULT_LIMIT, config : RequestConfig = RequestConfig.new) : Result
SourceMacros
define_fetch_error(name, superclass = FetchError)
Sourcedefine_pull_method(driver_method, module_name)
SourceNested types
- Fetcher::Attachment
- Fetcher::Author
- Fetcher::BoundedRegistry
- Fetcher::Cache
- Fetcher::CacheConfig
- Fetcher::CacheEntry
- Fetcher::CacheStats
- Fetcher::CacheStore
- Fetcher::CircuitBreaker
- Fetcher::CircuitBreakerConfig
- Fetcher::CircuitBreakerStore
- Fetcher::CircuitOpenError
- Fetcher::ConcurrentFetcher
- Fetcher::Config
- Fetcher::ContentConfig
- Fetcher::CrestHttpClient
- Fetcher::DNSError
- Fetcher::DnsCache
- Fetcher::DnsConfig
- Fetcher::DomainBatchProcessor
- Fetcher::DriverDetectionMode
- Fetcher::DriverType
- Fetcher::EntityExpansionGuard
- Fetcher::Entry
- Fetcher::EntryFactory
- Fetcher::EntryIterator
- Fetcher::EntryParser
- Fetcher::Error
- Fetcher::ErrorDetailLevel
- Fetcher::ErrorHandler
- Fetcher::ErrorKind
- Fetcher::FeedMetadata
- Fetcher::FetchError
- Fetcher::HTMLUtils
- Fetcher::HTTPClientError
- Fetcher::HTTPError
- Fetcher::HTTPServerError
- Fetcher::HeaderBuilder
- Fetcher::InvalidFormatError
- Fetcher::InvalidURLError
- Fetcher::JSONFeed
- Fetcher::JSONFeedParser
- Fetcher::JSONFeedStreamingParser
- Fetcher::JSONStreamingIterator
- Fetcher::JSONStreamingParser
- Fetcher::LinkResolver
- Fetcher::MemoryLimitExceeded
- Fetcher::MissingLocationHeaderError
- Fetcher::PeriodicCleanup
- Fetcher::PeriodicCleanupHandle
- Fetcher::PublicSuffix
- Fetcher::QueueFullError
- Fetcher::RSS
- Fetcher::RSSFeedMetadata
- Fetcher::RSSParser
- Fetcher::RateLimitConfig
- Fetcher::RateLimitError
- Fetcher::RateLimiterRegistry
- Fetcher::RateLimiterStore
- Fetcher::Reddit
- Fetcher::RedditJSONParser
- Fetcher::RedditOAuth
- Fetcher::RedditOAuthError
- Fetcher::RedirectConfig
- Fetcher::RegistryHelpers
- Fetcher::RegistryStore(T)
- Fetcher::RegistryStoreEntry(T)
- Fetcher::RequestConfig
- Fetcher::ResponseTooLargeError
- Fetcher::Result
- Fetcher::RetriableError
- Fetcher::RetryConfig
- Fetcher::SSLError
- Fetcher::SafeFeedProcessor
- Fetcher::Software
- Fetcher::SourceType
- Fetcher::StreamingConfig
- Fetcher::StreamingRSSParser
- Fetcher::TimeParser
- Fetcher::TimeoutConfig
- Fetcher::TimeoutError
- Fetcher::TokenBucketRateLimiter
- Fetcher::URLValidator
- Fetcher::UnknownError
- Fetcher::ValidatedIpStore
- Fetcher::XMLHelper
- Fetcher::XMLStreamingIterator
- Fetcher::XMLStreamingParser
- Fetcher::XMLTextReader
- Fetcher::YouTube