Class: Medcon::Medcon

Inherits:
Object
  • Object
show all
Defined in:
lib/medcon.rb

Constant Summary collapse

DEFAULT_CDN_URI =
URI("https://nuva.svc.edge.scw.cloud")

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db) ⇒ Medcon

Returns a new instance of Medcon.



15
16
17
18
19
20
21
22
# File 'lib/medcon.rb', line 15

def initialize(db)
  @db = db

  @repositories = OpenStruct.new
  @repositories.conditions =
    Repositories::ConditionRepository.new db.conditions
  @repositories.freeze
end

Instance Attribute Details

#queriesObject (readonly)

Returns the value of attribute queries.



13
14
15
# File 'lib/medcon.rb', line 13

def queries
  @queries
end

#repositoriesObject (readonly)

Returns the value of attribute repositories.



12
13
14
# File 'lib/medcon.rb', line 12

def repositories
  @repositories
end

Class Method Details

.fetch_latest_version_hash(cdn_uri: DEFAULT_CDN_URI, http: nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/medcon.rb', line 49

def fetch_latest_version_hash(cdn_uri: DEFAULT_CDN_URI, http: nil)
  if http.nil?
    http = init_http(cdn_uri)
    passed_http = false
  end
  response = http.get("/versions/last.json")
  hash = JSON.parse(response.body)["dump_hash"]
  http.finish unless passed_http
  hash
end

.load(cdn_uri: DEFAULT_CDN_URI, lang: "en", hash: nil) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/medcon.rb', line 39

def load(cdn_uri: DEFAULT_CDN_URI, lang: "en", hash: nil)
  init_http(cdn_uri) do |http|
    # Fetch version manifest if necessary
    hash ||= fetch_latest_version_hash(http:)

    response = http.get("/conditions/#{hash}_#{lang}.db")
    Medcon.new(::Medcon::VaccinationProfileDatabase.decode(response.body))
  end
end

.load_from_file(path) ⇒ Object



60
61
62
# File 'lib/medcon.rb', line 60

def load_from_file(path)
  Medcon.new(::Medcon::VaccinationProfileDatabase.decode(File.read(path)))
end

Instance Method Details

#generated_atObject



32
33
34
# File 'lib/medcon.rb', line 32

def generated_at
  @db.generated_at
end

#inspectObject



28
29
30
# File 'lib/medcon.rb', line 28

def inspect
  "#<Medcon::Medcon version=#{version.major}.#{version.minor}.#{version.patch} condition_count=#{repositories.conditions.all.count}>"
end

#versionObject



24
25
26
# File 'lib/medcon.rb', line 24

def version
  @db.version
end