Class: Freeb::API

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

Class Method Summary collapse

Class Method Details

.description(id) ⇒ Object



44
45
46
47
48
# File 'lib/freeb/api.rb', line 44

def self.description(id)
  url = "#{@base_url}text#{id}"
  result = get_result(url, nil)
  result["result"]
end

.get(id) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/freeb/api.rb', line 9

def self.get(id)
  mql = {
    "id" => id,
    "name" => nil
  }
  topic(mql)
end

.get_result(url, params = {}) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/freeb/api.rb', line 50

def self.get_result(url, params={})
  unless params.nil?
    params[:key] = Config.settings[:api_key] unless Config.settings[:api_key].blank?
    url = "#{url}?#{params.to_query}"
  end
  if Config.settings[:cache][:is_active]
    cache_key = cache_key_for_url(url)
    result = Rails.cache.read(cache_key)
    if result
      log "Read cache for #{url}"
      result
    else
      result = get_uncached_result(url)
      Rails.cache.write(cache_key, result, :expires_in => Config.settings[:cache][:expires_in])
      log "Wrote cache for #{url}"
      result
    end
  else
    get_uncached_result(url)
  end
end

.get_uncached_result(url) ⇒ Object

Raises:



72
73
74
75
76
77
78
79
# File 'lib/freeb/api.rb', line 72

def self.get_uncached_result(url)
  response = HTTParty.get(url)
  if response.code == 200
    return JSON.parse(response.body)
  end
  raise ResponseException, "Freebase Response #{response.code}: #{JSON.parse(response.body).inspect}"
  nil
end

.mqlread(mql) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/freeb/api.rb', line 35

def self.mqlread(mql)
  log "MQL Request: #{mql}"
  url = "#{@base_url}mqlread"
  result = get_result(url, :query => mql.to_json)
  log "MQL Response: #{result}"
  return nil if result["result"].blank?
  result["result"]
end

.search(params) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/freeb/api.rb', line 27

def self.search(params)
  log "Search Request: #{params}"
  url = "#{@base_url}search"
  result = get_result(url, params)
  log "Search Response: #{result}"
  result["result"].collect { |r| Topic.new(r) }
end

.topic(mql) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/freeb/api.rb', line 17

def self.topic(mql)
  result = mqlread(mql)
  return nil if result.blank?
  if result.is_a?(Array)
    result.collect { |r| Topic.new(r) }
  else
    Topic.new(result)
  end
end