Module: Harvest::Behavior::Crud

Included in:
API::Clients, API::Contacts, API::ExpenseCategories, API::Expenses, API::Projects, API::Tasks, API::Users
Defined in:
lib/harvest/behavior/crud.rb

Instance Method Summary collapse

Instance Method Details

#allArray<Harvest::BaseModel>

Retrieves all items

Returns:

  • (Array<Harvest::BaseModel>)

    an array of models depending on where you’re calling it from (e.g. [Harvest::Client] from Harvest::Base#clients)



6
7
8
9
# File 'lib/harvest/behavior/crud.rb', line 6

def all
  response = request(:get, credentials, api_model.api_path)
  api_model.parse(response.body)
end

#create(model) ⇒ Harvest::BaseModel

Creates an item

Parameters:

Returns:

  • (Harvest::BaseModel)

    the created model depending on where you’re calling it from (e.g. Harvest::Client from Harvest::Base#clients)



28
29
30
31
32
# File 'lib/harvest/behavior/crud.rb', line 28

def create(model)
  response = request(:post, credentials, "#{api_model.api_path}", :body => model.to_xml)
  id = response.headers["location"].first.match(/\/.*\/(\d+)/)[1]
  find(id)
end

#delete(model) ⇒ Integer #delete(id) ⇒ Integer #delete(id) ⇒ Integer

Deletes an item

Overloads:

  • #delete(model) ⇒ Integer

    Parameters:

  • #delete(id) ⇒ Integer

    Parameters:

    • id (Integer)

      the id of the item you want to delete

  • #delete(id) ⇒ Integer

    Parameters:

    • id (String)

      the String version of the id of the item you want to delete

Returns:

  • (Integer)

    the id of the item deleted



51
52
53
54
# File 'lib/harvest/behavior/crud.rb', line 51

def delete(model)
  request(:delete, credentials, "#{api_model.api_path}/#{model.to_i}")
  model.to_i
end

#find(id) ⇒ Harvest::BaseModel #find(id) ⇒ Harvest::BaseModel #find(model) ⇒ Harvest::BaseModel

Retrieves an item by id

Overloads:

Returns:

  • (Harvest::BaseModel)

    the model depends on where you’re calling it from (e.g. Harvest::Client from Harvest::Base#clients)



20
21
22
23
# File 'lib/harvest/behavior/crud.rb', line 20

def find(id)
  response = request(:get, credentials, "#{api_model.api_path}/#{id}")
  api_model.parse(response.body, :single => true)
end

#update(model) ⇒ Harvest::BaseModel

Updates an item

Parameters:

Returns:

  • (Harvest::BaseModel)

    the created model depending on where you’re calling it from (e.g. Harvest::Client from Harvest::Base#clients)



37
38
39
40
# File 'lib/harvest/behavior/crud.rb', line 37

def update(model)
  request(:put, credentials, "#{api_model.api_path}/#{model.to_i}", :body => model.to_xml)
  find(model.id)
end