Class: Archaeo::AvailabilityApi
- Inherits:
-
Object
- Object
- Archaeo::AvailabilityApi
- Defined in:
- lib/archaeo/availability_api.rb
Overview
Client for the Wayback Machine Availability API.
Check whether a URL has been archived and retrieve the closest available snapshot for a given point in time.
Constant Summary collapse
- ENDPOINT =
"https://archive.org/wayback/available"
Instance Method Summary collapse
- #available?(url) ⇒ Boolean
- #batch_available?(urls, concurrency: 1) ⇒ Boolean
-
#initialize(client: HttpClient.new) ⇒ AvailabilityApi
constructor
A new instance of AvailabilityApi.
- #near(url, timestamp: nil) ⇒ Object
- #newest(url) ⇒ Object
- #oldest(url) ⇒ Object
Constructor Details
#initialize(client: HttpClient.new) ⇒ AvailabilityApi
Returns a new instance of AvailabilityApi.
14 15 16 |
# File 'lib/archaeo/availability_api.rb', line 14 def initialize(client: HttpClient.new) @client = client end |
Instance Method Details
#available?(url) ⇒ Boolean
37 38 39 |
# File 'lib/archaeo/availability_api.rb', line 37 def available?(url) near(url).available? end |
#batch_available?(urls, concurrency: 1) ⇒ Boolean
41 42 43 44 45 46 47 48 49 |
# File 'lib/archaeo/availability_api.rb', line 41 def batch_available?(urls, concurrency: 1) if concurrency <= 1 urls.to_h do |u| [u, near(u)] end else batch_concurrent(urls, concurrency) end end |
#near(url, timestamp: nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/archaeo/availability_api.rb', line 18 def near(url, timestamp: nil) url = UrlNormalizer.normalize(url) params = { "url" => url } params["timestamp"] = .to_s if response = @client.get( "#{ENDPOINT}?#{URI.encode_www_form(params)}", ) parse_response(response, url) end |