todoist-ruby 0.1.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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