Class: TodoistClient::Item
- Inherits:
-
Object
- Object
- TodoistClient::Item
- Includes:
- ApiClient
- Defined in:
- lib/todoist_client/item.rb
Defined Under Namespace
Modules: Paths
Constant Summary collapse
- VALID_PARAMS =
[ :due_date, :user_id, :collapsed, :in_history, :priority, :item_order, :content, :indent, :project_id, :id, :checked, :date_string ].freeze
Constants included from ApiClient
Class Method Summary collapse
- .complete_all(ids) ⇒ Object
- .completed(project) ⇒ Object
-
.completed_items(project = nil) ⇒ Object
only premium user.
- .create(params) ⇒ Object
- .delete_all(ids) ⇒ Object
- .find(ids) ⇒ Object
- .json_ids(ids) ⇒ Object
- .uncomplete_all(ids) ⇒ Object
- .uncompleted(project) ⇒ Object
Instance Method Summary collapse
- #complete ⇒ Object
- #delete ⇒ Object
- #finished? ⇒ Boolean
-
#initialize(params = nil) ⇒ Item
constructor
A new instance of Item.
- #save ⇒ Object
- #uncomplete ⇒ Object
Methods included from ApiClient
included, #set_params, #with_remote_object
Constructor Details
#initialize(params = nil) ⇒ Item
Returns a new instance of Item.
34 35 36 37 38 39 40 41 |
# File 'lib/todoist_client/item.rb', line 34 def initialize(params = nil) case when params.is_a?(String) @content = params when params.is_a?(Hash) set_params(params) end end |
Class Method Details
.complete_all(ids) ⇒ Object
122 123 124 |
# File 'lib/todoist_client/item.rb', line 122 def complete_all(ids) request *Paths::COMPLETE, {ids: json_ids(ids)} end |
.completed(project) ⇒ Object
95 96 97 98 |
# File 'lib/todoist_client/item.rb', line 95 def completed(project) project_id = project.is_a?(Project) ? project.id : project request(*Paths::COMPLETED, {project_id: project_id}).map {|item| self.new(item)} end |
.completed_items(project = nil) ⇒ Object
only premium user
101 102 103 104 105 106 |
# File 'lib/todoist_client/item.rb', line 101 def completed_items(project = nil) project_id = project.is_a?(Project) ? project.id : project request(*Paths::ALL_COMPLETED, {project_id: project_id})["items"].map {|item| CompletedItem.new(item) } end |
.create(params) ⇒ Object
114 115 116 |
# File 'lib/todoist_client/item.rb', line 114 def create(params) self.new(params).save end |
.delete_all(ids) ⇒ Object
118 119 120 |
# File 'lib/todoist_client/item.rb', line 118 def delete_all(ids) request *Paths::DELETE, {ids: json_ids(ids)} end |
.find(ids) ⇒ Object
108 109 110 111 112 |
# File 'lib/todoist_client/item.rb', line 108 def find(ids) items = request(*Paths::FIND, {ids: json_ids(ids)}).map {|item| self.new(item)} # return nil or Item object if item does not exist multiple. items.size > 1 ? items : items.first end |
.json_ids(ids) ⇒ Object
130 131 132 133 |
# File 'lib/todoist_client/item.rb', line 130 def json_ids(ids) ids = [ids] unless ids.is_a?(Array) JSON.generate(ids) end |
.uncomplete_all(ids) ⇒ Object
126 127 128 |
# File 'lib/todoist_client/item.rb', line 126 def uncomplete_all(ids) request *Paths::UNCOMPLETE, {ids: json_ids(ids)} end |
.uncompleted(project) ⇒ Object
90 91 92 93 |
# File 'lib/todoist_client/item.rb', line 90 def uncompleted(project) project_id = project.is_a?(Project) ? project.id : project request(*Paths::UNCOMPLETED, {project_id: project_id}).map {|item| self.new(item)} end |
Instance Method Details
#complete ⇒ Object
73 74 75 76 77 |
# File 'lib/todoist_client/item.rb', line 73 def complete with_remote_object do self.class.request *Paths::COMPLETE, {ids: JSON.generate([id])} end end |
#delete ⇒ Object
67 68 69 70 71 |
# File 'lib/todoist_client/item.rb', line 67 def delete with_remote_object do self.class.request *Paths::DELETE, {ids: JSON.generate([id])} end end |
#finished? ⇒ Boolean
85 86 87 |
# File 'lib/todoist_client/item.rb', line 85 def finished? checked == 1 end |
#save ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/todoist_client/item.rb', line 43 def save if id json = self.class.request *Paths::UPDATE, { id: @id, # required content: @content, priority: @priority, indent: @indent, item_order: @item_order, collapsed: @collapsed }.select {|k,v| !v.nil?} else json = self.class.request *Paths::ADD, { content: @content, # required project_id: @project_id, date_string: @date_string, priority: @priority, indent: @indent, item_order: @item_order }.select {|k,v| !v.nil?} end set_params(json) self end |
#uncomplete ⇒ Object
79 80 81 82 83 |
# File 'lib/todoist_client/item.rb', line 79 def uncomplete with_remote_object do self.class.request *Paths::UNCOMPLETE, {ids: JSON.generate([id])} end end |