Module: Harpy::Resource::ClassMethods

Defined in:
lib/harpy/resource.rb

Instance Method Summary collapse

Instance Method Details

#delete_from_id(id) ⇒ Object



92
93
94
# File 'lib/harpy/resource.rb', line 92

def delete_from_id(id)
  delete_from_urn urn id
end

#delete_from_url(url) ⇒ Object



83
84
85
# File 'lib/harpy/resource.rb', line 83

def delete_from_url(url)
  delete_from_url_handler Harpy.client.delete url
end

#delete_from_urn(urn) ⇒ Object



87
88
89
90
# File 'lib/harpy/resource.rb', line 87

def delete_from_urn(urn)
  url = Harpy.entry_point.urn urn
  url ? delete_from_url(url) : false
end

#from_id(id) ⇒ Object



50
51
52
# File 'lib/harpy/resource.rb', line 50

def from_id(id)
  from_urn urn id
end

#from_url(url) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/harpy/resource.rb', line 36

def from_url(url)
  case url
  when Array
    Harpy.client.run(Harpy.client.get url).collect{|response| from_url_handler response}
  else
    from_url_handler Harpy.client.get url
  end
end

#from_urn(urn) ⇒ Object



45
46
47
48
# File 'lib/harpy/resource.rb', line 45

def from_urn(urn)
  url = Harpy.entry_point.urn urn
  from_url url if url
end

#resource_nameObject



58
59
60
# File 'lib/harpy/resource.rb', line 58

def resource_name
  name.underscore
end

#search(conditions = {}) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/harpy/resource.rb', line 62

def search(conditions={})
  response = Harpy.client.get url, :params => conditions
  case response.code
  when 200
    parsed = Yajl::Parser.parse response.body
    items = parsed[resource_name].collect{|model| new model}
    Harpy::Collection.new parsed.merge(:items => items)
  else
    Harpy.client.invalid_code response
  end
end

#urn(id) ⇒ Object

Raises:

  • (NotImplementedError)


54
55
56
# File 'lib/harpy/resource.rb', line 54

def urn(id)
  raise NotImplementedError
end

#with_url(url) ⇒ Object

Raises:

  • (ArgumentError)


74
75
76
77
78
79
80
81
# File 'lib/harpy/resource.rb', line 74

def with_url(url)
  raise ArgumentError unless block_given?
  key = "#{resource_name}_url"
  old, Thread.current[key] = Thread.current[key], url
  result = yield
  Thread.current[key] = old
  result
end