todoist-ruby 0.1.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,50 +1,40 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Activity
4
- include Todoist::Util
5
-
6
- # Returns the activity logs for a user. Full list of supported
7
- # parameters outlined in the API here: https://developer.todoist.com/#activity
8
- # The following objects are converted into parameters as appropriate:
9
- #
10
- # * object
11
- # * parent_project
12
- # * parent_item
13
- # * initiator
14
- # * until
15
- # * since
16
-
3
+ class Activity < Todoist::Service
4
+ include Todoist::Util
5
+
6
+ # Returns the activity logs for a user.
7
+
17
8
  def get(params={})
18
9
  if params["until"]
19
- params["until"] = ParseHelper.formatTime(params["until"])
10
+ params["until"] = ParseHelper.format_time(params["until"])
20
11
  end
21
-
12
+
22
13
  if params["since"]
23
- params["since"] = ParseHelper.formatTime(params["since"])
14
+ params["since"] = ParseHelper.format_time(params["since"])
24
15
  end
25
-
16
+
26
17
  if params["object"]
27
18
  params["object_id"] = params["object"].id
28
19
  params.delete("object")
29
20
  end
30
-
21
+
31
22
  if params["parent_object"]
32
23
  params["parent_object_id"] = params["parent_object"].id
33
24
  params.delete("parent_object")
34
25
  end
35
-
26
+
36
27
  if params["parent_item"]
37
28
  params["parent_item_id"] = params["parent_item"].id
38
29
  params.delete("parent_item")
39
30
  end
40
-
31
+
41
32
  if params["initiator"]
42
33
  params["initiator_id"] = params["initiator"].id
43
34
  params.delete("initiator")
44
35
  end
45
-
46
- result = NetworkHelper.getResponse(Config::TODOIST_ACTIVITY_GET_COMMAND, params)
47
- ParseHelper.make_objects_as_hash(result)
36
+
37
+ result = @client.api_helper.get_response(Config::TODOIST_ACTIVITY_GET_COMMAND, params)
48
38
  end
49
39
  end
50
40
  end
@@ -1,11 +1,11 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Backups
3
+ class Backups < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Returns the backups for a user.
7
7
  def get()
8
- result = NetworkHelper.getResponse(Config::TODOIST_BACKUPS_GET_COMMAND, {})
8
+ result = @client.api_helper.get_response(Config::TODOIST_BACKUPS_GET_COMMAND, {})
9
9
  ParseHelper.make_objects_as_hash(result)
10
10
  end
11
11
  end
@@ -1,12 +1,12 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Completed
3
+ class Completed < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Get productivity stats. Returns a hash of statistics as documented
7
7
  # at https://developer.todoist.com/#get-productivity-stats
8
8
  def get_productivity_stats()
9
- NetworkHelper.getResponse(Config::TODOIST_COMPLETED_GET_STATS_COMMAND)
9
+ @client.api_helper.get_response(Config::TODOIST_COMPLETED_GET_STATS_COMMAND, {})
10
10
  end
11
11
 
12
12
  # Retrieves all completed items as documented at
@@ -17,13 +17,13 @@ module Todoist
17
17
 
18
18
  def get_all_completed_items(params = {})
19
19
  if params["until"]
20
- params["until"] = ParseHelper.formatTime(params["until"])
20
+ params["until"] = ParseHelper.format_time(params["until"])
21
21
  end
22
22
  if params["since"]
23
- params["since"] = ParseHelper.formatTime(params["since"])
23
+ params["since"] = ParseHelper.format_time(params["since"])
24
24
  end
25
25
 
26
- result = NetworkHelper.getResponse(Config::TODOIST_COMPLETED_GET_ALL_COMMAND, params)
26
+ result = @client.api_helper.get_response(Config::TODOIST_COMPLETED_GET_ALL_COMMAND, params)
27
27
  items = ParseHelper.make_objects_as_array(result["items"])
28
28
  projects = ParseHelper.make_objects_as_array(result["projects"])
29
29
  return {"items" => items, "projects" => projects}
@@ -1,6 +1,6 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Items
3
+ class Items < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Add a new task to a project. Note, that this is provided as a
@@ -29,8 +29,8 @@ module Todoist
29
29
  optional_params.delete("labels")
30
30
  end
31
31
 
32
- params.merge(optional_params)
33
- result = NetworkHelper.getResponse(Config::TODOIST_ITEMS_ADD_COMMAND, params)
32
+ params.merge!(optional_params)
33
+ result = @client.api_helper.get_response(Config::TODOIST_ITEMS_ADD_COMMAND, params)
34
34
  item = ParseHelper.make_object(result)
35
35
  return item
36
36
  end
@@ -43,7 +43,7 @@ module Todoist
43
43
  def get_item(item, all_data = true)
44
44
  params = {item_id: item.id, all_data: all_data}
45
45
 
46
- result = NetworkHelper.getResponse(Config::TODOIST_ITEMS_GET_COMMAND, params)
46
+ result = @client.api_helper.get_response(Config::TODOIST_ITEMS_GET_COMMAND, params)
47
47
  item = ParseHelper.make_object(result["item"])
48
48
  project = ParseHelper.make_object(result["project"])
49
49
  notes = result["notes"] ? ParseHelper.make_objects_as_hash(result["notes"]) : nil
@@ -1,18 +1,18 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Projects
3
+ class Projects < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Get archived projects. Returns projects as documented here.
7
7
  def get_archived_projects()
8
- result = NetworkHelper.getResponse(Config::TODOIST_PROJECTS_GET_ARCHIVED_COMMAND)
8
+ result = @client.api_helper.get_response(Config::TODOIST_PROJECTS_GET_ARCHIVED_COMMAND)
9
9
  return ParseHelper.make_objects_as_hash(result)
10
10
  end
11
11
 
12
12
  # Gets project information including all notes.
13
13
 
14
14
  def get_project_info(project, all_data = true)
15
- result = NetworkHelper.getResponse(Config::TODOIST_PROJECTS_GET_COMMAND, {project_id: project.id, all_data: true})
15
+ result = @client.api_helper.get_response(Config::TODOIST_PROJECTS_GET_COMMAND, {project_id: project.id, all_data: true})
16
16
 
17
17
  project = result["project"] ? ParseHelper.make_object(result["project"]) : nil
18
18
  notes = result["notes"] ? ParseHelper.make_objects_as_hash(result["notes"]) : nil
@@ -21,7 +21,7 @@ module Todoist
21
21
 
22
22
  # Gets a project's uncompleted items
23
23
  def get_project_data(project)
24
- result = NetworkHelper.getResponse(Config::TODOIST_PROJECTS_GET_DATA_COMMAND, {project_id: project.id})
24
+ result = @client.api_helper.get_response(Config::TODOIST_PROJECTS_GET_DATA_COMMAND, {project_id: project.id})
25
25
  project = result["project"] ? ParseHelper.make_object(result["project"]) : nil
26
26
  items = result["items"] ? ParseHelper.make_objects_as_hash(result["items"]) : nil
27
27
  return {"project" => project, "items" => items}
@@ -1,12 +1,12 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Quick
3
+ class Quick < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Implementation of the Quick Add Task available in the official
7
7
  # clients.
8
8
  def add_item(text)
9
- result = NetworkHelper.getResponse(Config::TODOIST_QUICK_ADD_COMMAND, {text: text})
9
+ result = @client.api_helper.get_response(Config::TODOIST_QUICK_ADD_COMMAND, {text: text})
10
10
  return ParseHelper.make_object(result)
11
11
  end
12
12
 
@@ -1,6 +1,6 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Templates
3
+ class Templates < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Given a project and a File object (Ruby) imports the content onto the
@@ -8,21 +8,21 @@ module Todoist
8
8
  # suffix is CSV. Otherwise, the file will be parsed as one item per line
9
9
  # and ignore the formatting altogether.
10
10
  def import_into_project(project, file)
11
- multipart_file = NetworkHelper.multipart_file(file)
11
+ multipart_file = @client.api_helper.multipart_file(file)
12
12
  params = {project_id: project.id, file: multipart_file}
13
- NetworkHelper.getMultipartResponse(Config::TODOIST_TEMPLATES_IMPORT_INTO_PROJECT_COMMAND, params)
13
+ @client.api_helper.get_multipart_response(Config::TODOIST_TEMPLATES_IMPORT_INTO_PROJECT_COMMAND, params)
14
14
  end
15
15
 
16
16
  # Export the project as a CSV string
17
17
  def export_as_file(project)
18
18
  params = {project_id: project.id}
19
- NetworkHelper.getResponse(Config::TODOIST_TEMPLATES_EXPORT_AS_FILE_COMMAND, params)
19
+ @client.api_helper.get_response(Config::TODOIST_TEMPLATES_EXPORT_AS_FILE_COMMAND, params)
20
20
  end
21
21
 
22
22
  # Export the project as a url that can be accessed over HTTP
23
23
  def export_as_url(project)
24
24
  params = {project_id: project.id}
25
- NetworkHelper.getResponse(Config::TODOIST_TEMPLATES_EXPORT_AS_URL_COMMAND, params)
25
+ @client.api_helper.get_response(Config::TODOIST_TEMPLATES_EXPORT_AS_URL_COMMAND, params)
26
26
  end
27
27
  end
28
28
  end
@@ -1,13 +1,13 @@
1
1
  module Todoist
2
2
  module Misc
3
- class Uploads
3
+ class Uploads < Todoist::Service
4
4
  include Todoist::Util
5
5
 
6
6
  # Uploads a file given a Ruby File.
7
7
  def add(file)
8
- multipart_file = NetworkHelper.multipart_file(file)
8
+ multipart_file = @client.api_helper.multipart_file(file)
9
9
  params = {file_name: File.basename(file), file: multipart_file}
10
- NetworkHelper.getMultipartResponse(Config::TODOIST_UPLOADS_ADD_COMMAND, params)
10
+ @client.api_helper.get_multipart_response(Config::TODOIST_UPLOADS_ADD_COMMAND, params)
11
11
  end
12
12
 
13
13
  # Get uploads up to limit. If last_id is entered, then the results list
@@ -15,13 +15,13 @@ module Todoist
15
15
  def get(limit = 30, last_id = 0)
16
16
  params = {limit: limit}
17
17
  params["last_id"] = last_id if last_id
18
- NetworkHelper.getResponse(Config::TODOIST_UPLOADS_GET_COMMAND, params)
18
+ @client.api_helper.get_response(Config::TODOIST_UPLOADS_GET_COMMAND, params)
19
19
  end
20
20
 
21
21
  # Deletes an upload given a file URL.
22
22
  def delete(file_url)
23
23
  params = {file_url: file_url}
24
- NetworkHelper.getResponse(Config::TODOIST_UPLOADS_DELETE_COMMAND, params)
24
+ @client.api_helper.get_response(Config::TODOIST_UPLOADS_DELETE_COMMAND, params)
25
25
  end
26
26
  end
27
27
  end
@@ -0,0 +1,10 @@
1
+ module Todoist
2
+ class Service
3
+ include Todoist::Util
4
+
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ end
10
+ end
@@ -2,30 +2,30 @@
2
2
 
3
3
  module Todoist
4
4
  module Sync
5
- class Filters
5
+ class Filters < Todoist::Service
6
6
  include Todoist::Util
7
7
 
8
8
  # Return a Hash of filters where key is the id of a filter and value is a filter
9
9
  def collection
10
- return ApiHelper.collection("filters")
10
+ return @client.api_helper.collection("filters")
11
11
  end
12
12
 
13
13
  # Add a filter with a given hash of attributes and returns the filter id.
14
14
  # Please note that item_id is required as is a date as specific in the
15
15
  # documentation. This method can be tricky to all.
16
16
  def add(args)
17
- return ApiHelper.add(args, "filter_add")
17
+ return @client.api_helper.add(args, "filter_add")
18
18
  end
19
19
 
20
20
  # Update a filter given a hash of attributes
21
21
  def update(args)
22
- return ApiHelper.command(args, "filter_update")
22
+ return @client.api_helper.command(args, "filter_update")
23
23
  end
24
24
 
25
25
  # Delete filter given an array of filters
26
26
  def delete(filter)
27
27
  args = {id: filter.id}
28
- return ApiHelper.command(args, "filter_delete")
28
+ return @client.api_helper.command(args, "filter_delete")
29
29
  end
30
30
 
31
31
  # Update orders for an array of filters
@@ -35,7 +35,7 @@ module Todoist
35
35
  args[filter.id] = filter.item_order
36
36
  end
37
37
  args = {id_order_mapping: args.to_json}
38
- return ApiHelper.command(args, "filter_update_orders")
38
+ return @client.api_helper.command(args, "filter_update_orders")
39
39
  end
40
40
 
41
41
 
@@ -1,87 +1,83 @@
1
1
  module Todoist
2
2
  module Sync
3
- class Items
4
- include Todoist::Util
3
+ class Items < Todoist::Service
4
+ include Todoist::Util
5
5
 
6
6
  # Return a Hash of items where key is the id of a item and value is a item
7
7
  def collection
8
- return ApiHelper.collection("items")
8
+ return @client.api_helper.collection("items")
9
9
  end
10
10
 
11
11
  # Add a item with a given hash of attributes and returns the item id
12
12
  def add(args)
13
- return ApiHelper.add(args, "item_add")
13
+ return @client.api_helper.add(args, "item_add")
14
14
  end
15
15
 
16
16
  # Update item given a hash of attributes
17
17
  def update(args)
18
- return ApiHelper.command(args, "item_update")
18
+ return @client.api_helper.command(args, "item_update")
19
19
  end
20
20
 
21
21
  # Delete items given an array of items
22
22
  def delete(items)
23
- item_ids = items.collect { |item| item.id }
23
+ item_ids = items.collect { |item| item.id }
24
24
  args = {ids: item_ids.to_json}
25
- return ApiHelper.command(args, "item_delete")
25
+ return @client.api_helper.command(args, "item_delete")
26
26
  end
27
27
 
28
28
  # Move an item from one project to another project given an item and a project.
29
29
  # Note that move requires a fully inflated item object because it uses
30
30
  # the project id in the item object.
31
31
  def move(item, project)
32
- project_items = {item.project_id => [item.id]}
33
- args = {project_items: project_items, to_project: project.id}
34
- return ApiHelper.command(args, "item_move")
32
+ args = {id: item.id, project_id: project.id}
33
+ return @client.api_helper.command(args, "item_move")
35
34
  end
36
-
37
- # Complete items and optionally move them to history given an array of items. When force_history = 1, items should be moved to history (where 1 is true and 0 is false, and the default is 1) This is useful when checking off sub items.
38
-
39
- def complete(items, force_history=1)
40
- item_ids = items.collect { |item| item.id }
41
- args = {ids: item_ids.to_json, force_history: force_history}
42
- return ApiHelper.command(args, "item_complete")
35
+
36
+ # Complete an item and optionally move them to history. When force_history = 1, items should be moved to history (where 1 is true and 0 is false, and the default is 1) This is useful when checking off sub items.
37
+
38
+ def complete(item, force_history=1)
39
+ args = {id: item.id, force_history: force_history}
40
+ return @client.api_helper.command(args, "item_complete")
43
41
  end
44
-
45
- # Uncomplete items and move them to the active projects given an array
46
- # of items.
47
-
48
- def uncomplete(items)
49
- item_ids = items.collect { |item| item.id }
50
- args = {ids: item_ids.to_json}
51
- return ApiHelper.command(args, "item_uncomplete")
42
+
43
+ # Uncomplete item and move them to the active projects
44
+
45
+ def uncomplete(item)
46
+ args = {id: item.id}
47
+ return @client.api_helper.command(args, "item_uncomplete")
52
48
  end
53
-
54
- # Complete a recurring item given the id of the recurring item.
55
- # This method also accepts as optional a new DateTime in UTC, a date
56
- # string to reset the object to, and whether or not the item is to
57
- # be completed or not using the is_forward flag.
58
49
 
59
- def complete_recurring(item, new_date_utc = nil, date_string = nil,
50
+ # Complete a recurring item given the id of the recurring item.
51
+ # This method also accepts as optional a new DateTime in UTC, a date
52
+ # string to reset the object to, and whether or not the item is to
53
+ # be completed or not using the is_forward flag.
54
+
55
+ def complete_recurring(item, new_date_utc = nil, date_string = nil,
60
56
  is_forward = 1)
61
-
57
+
62
58
  args = {id: item.id, is_forward: is_forward}
63
59
  if new_date_utc
64
60
  # Reformat DateTime to the following string: YYYY-MM-DDTHH:MM
65
- args["new_date_utc"] = ParseHelper.formatTime(new_date_utc)
61
+ args["due"] = {date: ParseHelper.format_time(new_date_utc)}
66
62
  end
67
-
63
+
68
64
  if date_string
69
- args["date_string"] = date_string
65
+ args["due"] = {string: date_string}
70
66
  end
71
-
72
- return ApiHelper.command(args, "item_update_date_complete")
67
+
68
+ return @client.api_helper.command(args, "item_update_date_complete")
73
69
  end
74
-
75
- # A simplified version of item_complete / item_update_date_complete.
76
- # The command does exactly what official clients do when you close a item
70
+
71
+ # A simplified version of item_complete / item_update_date_complete.
72
+ # The command does exactly what official clients do when you close a item
77
73
  # given an item.
78
-
74
+
79
75
  def close(item)
80
76
  args = {id: item.id}
81
- return ApiHelper.command(args, "item_close")
77
+ return @client.api_helper.command(args, "item_close")
82
78
  end
83
-
84
- # Update the day orders of multiple items at once given an array of
79
+
80
+ # Update the day orders of multiple items at once given an array of
85
81
  # items
86
82
  def update_day_orders(items)
87
83
  ids_to_orders = {}
@@ -89,9 +85,9 @@ module Todoist
89
85
  ids_to_orders[item.id] = item.day_order
90
86
  end
91
87
  args = {ids_to_orders: ids_to_orders.to_json}
92
- return ApiHelper.command(args, "item_update_day_orders")
88
+ return @client.api_helper.command(args, "item_update_day_orders")
93
89
  end
94
-
90
+
95
91
  # Update orders and indents for an array of items
96
92
  def update_multiple_orders_and_indents(items)
97
93
  tuples = {}
@@ -99,9 +95,9 @@ module Todoist
99
95
  tuples[item.id] = [item.item_order, item.indent]
100
96
  end
101
97
  args = {ids_to_orders_indents: tuples.to_json}
102
- return ApiHelper.command(args, "item_update_orders_indents")
98
+ return @client.api_helper.command(args, "item_update_orders_indents")
103
99
  end
104
-
100
+
105
101
  end
106
102
  end
107
103
  end