Class: CKAN::Package

Inherits:
Model
  • Object
show all
Defined in:
lib/ckan/package.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id) ⇒ Package

Returns a new instance of Package.



10
11
12
# File 'lib/ckan/package.rb', line 10

def initialize(id)
  @id = id
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



6
7
8
# File 'lib/ckan/package.rb', line 6

def id
  @id
end

Class Method Details

.find(options = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ckan/package.rb', line 14

def self.find(options=nil)
  if options.nil?
    @all_packages ||= read_remote_json_data(self.site).map{|id| Package.get(id)}
  else
    query = "?"
    query += options.to_a.
      map{|k,v| v.is_a?(Array) ? v.map{|vv| "#{k}=#{URI.encode(vv)}"}.join("&") :
        "#{k}=#{URI.encode(v)}"}.join("&")
    result = read_remote_json_data(self.search + query)
    if result["count"] != result["results"].size
      query += "&offset=#{result["results"].size}&limit=#{result["count"] + result["results"].size}"
      result["results"] += read_remote_json_data(self.search + query)["results"]
    end

    result["results"].map{|id| Package.get(id)}
  end
end

Instance Method Details

#resourcesObject



32
33
34
35
36
# File 'lib/ckan/package.rb', line 32

def resources
  read_lazy_data
  @mapped_resources ||= @resources.
    map{|r| Resource.new(r["url"],r["format"],r["description"],r["hash"])}
end

#to_sObject



38
39
40
# File 'lib/ckan/package.rb', line 38

def to_s
  "CKAN::Package[#{@id}]"
end