Class: Kanpachi::ResourceList

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

Overview

Class to keep track of all defined resources

Defined Under Namespace

Classes: DuplicateResource, UnknownResource

Instance Method Summary collapse

Constructor Details

#initializeResourceList

Returns a new instance of ResourceList.



9
10
11
# File 'lib/kanpachi/resource_list.rb', line 9

def initialize
  @list = {}
end

Instance Method Details

#add(resource) ⇒ Hash<Kanpachi::Resource>

Add a resource to the list

Parameters:

Returns:

Raises:

  • DuplicateResource If a resource is being duplicated.



35
36
37
38
39
40
# File 'lib/kanpachi/resource_list.rb', line 35

def add(resource)
  if @list.key? resource.route
    raise DuplicateResource, "A resource accessible via #{resource.http_verb} #{resource.url} already exists"
  end
  @list[resource.route] = resource
end

#allArray<Kanpachi::Resource>

Returns an array of resources

Returns:



25
26
27
# File 'lib/kanpachi/resource_list.rb', line 25

def all
  @list.values
end

#find(verb, url) ⇒ Nil, Kanpachi::Resource

Returns a resource based on its verb and url

Parameters:

  • verb (String)

    The request method (GET, POST, PUT, DELETE)

  • url (String)

    The url of the resource you are looking for.

Returns:



65
66
67
68
69
# File 'lib/kanpachi/resource_list.rb', line 65

def find(verb, url)
  http_verb = verb.to_s.upcase
  route = "#{http_verb} #{url}"
  @list[route]
end

#named(name) ⇒ Kanpachi::Resource

Returns a resource based on its name

Parameters:

  • name (String)

    The name of the resource you are looking for.

Returns:

Raises:



49
50
51
52
53
54
55
56
# File 'lib/kanpachi/resource_list.rb', line 49

def named(name)
  resource = all.detect { |resource| resource.name == name }
  if resource.nil?
    raise UnknownResource, "Resource named #{name} doesn't exist"
  else
    resource
  end
end

#to_hashHash<Kanpachi::Resource>

Returns a hash of resources

Returns:



17
18
19
# File 'lib/kanpachi/resource_list.rb', line 17

def to_hash
  @list
end