Class: PlateApi::ObjectHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/plate_api/object_handler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(handling_class, api_connector) ⇒ ObjectHandler

Returns a new instance of ObjectHandler.

Raises:

  • (ArgumentError)


7
8
9
10
11
12
# File 'lib/plate_api/object_handler.rb', line 7

def initialize(handling_class, api_connector)
  raise ArgumentError, "`handling_class` given for #new is not valid" unless handling_class
  raise ArgumentError, "`api_connector` given for #new is not valid" unless api_connector
  @handling_class = handling_class
  @api_connector = api_connector
end

Instance Attribute Details

#api_connectorObject (readonly)

Returns the value of attribute api_connector.



4
5
6
# File 'lib/plate_api/object_handler.rb', line 4

def api_connector
  @api_connector
end

#handling_classObject (readonly)

Returns the value of attribute handling_class.



5
6
7
# File 'lib/plate_api/object_handler.rb', line 5

def handling_class
  @handling_class
end

Instance Method Details

#create(parent, attributes, create_method = :post) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/plate_api/object_handler.rb', line 36

def create(parent, attributes, create_method=:post)
  raise ArgumentError, "`parent` given for #create is not valid" unless parent
  raise ArgumentError, "`attributes` given for #create is not valid" unless attributes.is_a? Hash
  parameters = case create_method
  when :post
    {"data" => attributes}
  when :post_multipart
    attributes
  end

  result = @api_connector.send(create_method, collection_path(parent.class, parent.id), parameters)

  if result["data"]
    return new_object(result["data"])
  else
    raise Error::Response, result
  end
end

#delete(id) ⇒ Object

Raises:

  • (ArgumentError)


55
56
57
58
59
60
61
62
63
# File 'lib/plate_api/object_handler.rb', line 55

def delete(id)
  raise ArgumentError, "`id` given for #find is not valid" unless id
  result = @api_connector.delete(resource_path(id))
  if result["data"]
    return new_object(result["data"])
  else
    raise Error::Response, result
  end
end

#find(id) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
22
# File 'lib/plate_api/object_handler.rb', line 14

def find(id)
  raise ArgumentError, "`id` given for #find is not valid" unless id
  result = @api_connector.get(resource_path(id))
  if result["data"]
    return new_object(result["data"])
  else
    raise Error::Response, result
  end
end

#index(parent_class, parent_id, extra_params = {}) ⇒ Object

Raises:

  • (ArgumentError)


65
66
67
68
69
70
71
72
73
74
75
# File 'lib/plate_api/object_handler.rb', line 65

def index(parent_class, parent_id, extra_params={})
  raise ArgumentError, "`parent_id` given for #index is not valid" unless parent_id
  raise ArgumentError, "`parent_class` given for #index is not valid" unless parent_class

  result = @api_connector.get(collection_path(parent_class, parent_id), extra_params)
  if result["data"]
    return result["data"].map{|x| new_object(x)}
  else
    raise Error::Response, result
  end
end

#index_total_count(parent) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/plate_api/object_handler.rb', line 77

def index_total_count(parent)
  result = @api_connector.get(collection_path(parent.class, parent.id), per_page: 1)
  if result["meta"]
    return result["meta"]["pagination"]["total_records"]
  else
    raise Error::Response, result
  end
end

#update(id, attributes) ⇒ Object

Raises:

  • (ArgumentError)


24
25
26
27
28
29
30
31
32
33
34
# File 'lib/plate_api/object_handler.rb', line 24

def update(id, attributes)
  raise ArgumentError, "`id` given for #update is not valid" unless id
  raise ArgumentError, "`attributes` given for #update is not valid" unless attributes.is_a? Hash
  result = @api_connector.put(resource_path(id), {"data" => attributes})

  if result["data"]
    return new_object(result["data"])
  else
    raise Error::Response, result
  end
end