Class: ReadOnce

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/readonce.rb

Constant Summary collapse

BASE_URI =
'https://readonce-production.herokuapp.com'
USER_AGENT_HEADER =
{'User-Agent' => "ReadOnce Gem/#{Readonce::VERSION}"}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_if_gem_outdated!Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/readonce.rb', line 11

def self.exit_if_gem_outdated!
  response = get '/minimum-ruby-client-version', headers: USER_AGENT_HEADER
  major, minor, patch = response.body.split('.').map{|m| m.to_i}

  if Readonce::MAJOR_VERSION < major || Readonce::MINOR_VERSION < minor || Readonce::PATCH_VERSION < patch
    required_version = "#{major}.#{minor}.#{patch}"
    puts "ERROR: Gem version is #{Readonce::VERSION}, but #{required_version} or later is now required."
    puts 'Please run: gem install readonce'
    exit
  end
end

.from_data(data) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/readonce.rb', line 29

def self.from_data(data)
  self.exit_if_gem_outdated!
  response = post '/create', body: data, headers: {'Content-type' => 'text/plain'}.merge(USER_AGENT_HEADER)
  r = ReadOnce.new
  r.instance_variable_set(:@key, response.body)
  r
end

.from_key(key) ⇒ Object



23
24
25
26
27
# File 'lib/readonce.rb', line 23

def self.from_key(key)
  r = ReadOnce.new
  r.instance_variable_set(:@key, key)
  r
end

Instance Method Details

#block_until_readObject



59
60
61
62
63
# File 'lib/readonce.rb', line 59

def block_until_read
  until read? do
    sleep 1
  end
end

#exists?Boolean

Returns:

  • (Boolean)


47
48
49
50
51
# File 'lib/readonce.rb', line 47

def exists?
  self.class.exit_if_gem_outdated!
  response = self.class.get "/status/#{key}", headers: USER_AGENT_HEADER
  response.code == 200
end

#read?Boolean

Returns:

  • (Boolean)


41
42
43
44
45
# File 'lib/readonce.rb', line 41

def read?
  self.class.exit_if_gem_outdated!
  response = self.class.get "/status/#{key}", headers: USER_AGENT_HEADER
  !JSON.parse(response.body)['accessed_at'].nil?
end

#read_urlObject



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

def read_url
  "#{BASE_URI}/#{key}"
end

#statusObject



53
54
55
56
57
# File 'lib/readonce.rb', line 53

def status
  self.class.exit_if_gem_outdated!
  response = self.class.get "/status/#{key}", headers: USER_AGENT_HEADER
  JSON.parse(response.body)
end