Class: Archaeo::AvailabilityApi

Inherits:
Object
  • Object
show all
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

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

Returns:

  • (Boolean)


37
38
39
# File 'lib/archaeo/availability_api.rb', line 37

def available?(url)
  near(url).available?
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"] = timestamp.to_s if timestamp

  response = @client.get(
    "#{ENDPOINT}?#{URI.encode_www_form(params)}",
  )
  parse_response(response, url)
end

#newest(url) ⇒ Object



33
34
35
# File 'lib/archaeo/availability_api.rb', line 33

def newest(url)
  near(url, timestamp: Timestamp.now)
end

#oldest(url) ⇒ Object



29
30
31
# File 'lib/archaeo/availability_api.rb', line 29

def oldest(url)
  near(url, timestamp: Timestamp.new(year: 1994, month: 1, day: 1))
end