Class: GH::NestedResources

Inherits:
Wrapper
  • Object
show all
Defined in:
lib/gh/nested_resources.rb

Overview

Public: …

Instance Attribute Summary

Attributes inherited from Wrapper

#backend, #options

Instance Method Summary collapse

Methods inherited from Wrapper

[], #[], #frontend, #frontend=, #generate_response, #initialize, #inspect, #load, #prefixed, #reset, wraps

Constructor Details

This class inherits a constructor from GH::Wrapper

Instance Method Details

#add(hash, link, name, path = name) ⇒ Object



16
17
18
# File 'lib/gh/nested_resources.rb', line 16

def add(hash, link, name, path = name)
  hash["_links"][name] ||= { "href" => nested(link, path) }
end

#modify_hash(hash, loaded = false) ⇒ Object



9
10
11
12
13
14
# File 'lib/gh/nested_resources.rb', line 9

def modify_hash(hash, loaded = false)
  hash = super(hash)
  link = hash['_links']['self'] unless loaded or hash['_links'].nil?
  set_links hash, Addressable::URI.parse(link['href']) if link
  hash
end

#nested(link, path) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/gh/nested_resources.rb', line 20

def nested(link, path)
  new_link = link.dup
  if path.start_with? '/'
    new_link.path = path
  else
    new_link.path += path
  end
  new_link
end


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/gh/nested_resources.rb', line 30

def set_links(hash, link)
  case link.path
  when '/gists'
    add hash, link, 'public'
    add hash, link, 'starred'
  when %r{^/repos/[^/]+/[^/]+$}
    add hash, link, 'commits', 'git/commits'
    add hash, link, 'refs',    'git/refs'
    add hash, link, 'tags',    'git/tags'
    add hash, link, 'issues'
  when %r{^/repos/[^/]+/[^/]+/issues/\d+$}
    add hash, link, 'comments'
    add hash, link, 'events'
  when '/user'
    add hash, link, 'gists',  '/gists'
    add hash, link, 'issues', '/issues'
  end
end