Module: ThingsMcp::UrlScheme
Overview
Things 3 URL scheme integration
This module provides methods for creating and updating todos and projects using Things 3’s URL scheme. It handles authentication tokens for update operations and manages the Things 3 application lifecycle.
Constant Summary collapse
- THINGS_URL_BASE =
"things:///"
Instance Method Summary collapse
- #add_project(params) ⇒ Object
- #add_todo(params) ⇒ Object
- #search_items(query) ⇒ Object
- #show_item(params) ⇒ Object
- #update_project(params) ⇒ Object
- #update_todo(params) ⇒ Object
Instance Method Details
#add_project(params) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/things_mcp/url_scheme.rb', line 35 def add_project(params) url_params = { "title" => params["title"], "type" => "project", } # Optional parameters url_params["notes"] = params["notes"] if params["notes"] url_params["when"] = params["when"] if params["when"] url_params["deadline"] = params["deadline"] if params["deadline"] url_params["tags"] = params["tags"].join(",") if params["tags"] url_params["area-id"] = params["area_id"] if params["area_id"] url_params["area"] = params["area_title"] if params["area_title"] url_params["to-dos"] = params["todos"].join("\n") if params["todos"] execute_url("#{THINGS_URL_BASE}add-project", url_params) end |
#add_todo(params) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/things_mcp/url_scheme.rb', line 17 def add_todo(params) url_params = { "title" => params["title"], } # Optional parameters url_params["notes"] = params["notes"] if params["notes"] url_params["when"] = params["when"] if params["when"] url_params["deadline"] = params["deadline"] if params["deadline"] url_params["tags"] = params["tags"].join(",") if params["tags"] url_params["checklist-items"] = params["checklist_items"].join("\n") if params["checklist_items"] url_params["list-id"] = params["list_id"] if params["list_id"] url_params["list"] = params["list_title"] if params["list_title"] url_params["heading"] = params["heading"] if params["heading"] execute_url("#{THINGS_URL_BASE}add", url_params) end |
#search_items(query) ⇒ Object
89 90 91 |
# File 'lib/things_mcp/url_scheme.rb', line 89 def search_items(query) execute_url("#{THINGS_URL_BASE}search", { "query" => query }) end |
#show_item(params) ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/things_mcp/url_scheme.rb', line 93 def show_item(params) url_params = { "id" => params["id"], } url_params["query"] = params["query"] if params["query"] url_params["filter"] = params["filter_tags"].join(",") if params["filter_tags"] execute_url("#{THINGS_URL_BASE}show", url_params) end |
#update_project(params) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/things_mcp/url_scheme.rb', line 71 def update_project(params) url_params = { "id" => params["id"], "type" => "project", } # Optional update parameters url_params["title"] = params["title"] if params["title"] url_params["notes"] = params["notes"] if params["notes"] url_params["when"] = params["when"] if params["when"] url_params["deadline"] = params["deadline"] if params["deadline"] url_params["tags"] = params["tags"].join(",") if params["tags"] url_params["completed"] = "true" if params["completed"] url_params["canceled"] = "true" if params["canceled"] execute_url("#{THINGS_URL_BASE}update-project", url_params) end |
#update_todo(params) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/things_mcp/url_scheme.rb', line 53 def update_todo(params) url_params = { "id" => params["id"], } # Optional update parameters url_params["title"] = params["title"] if params["title"] url_params["notes"] = params["notes"] if params["notes"] url_params["when"] = params["when"] if params["when"] url_params["deadline"] = params["deadline"] if params["deadline"] # Use add-tags to append tags (might work better for new tags) url_params["add-tags"] = params["tags"].join(",") if params["tags"] url_params["completed"] = "true" if params["completed"] url_params["canceled"] = "true" if params["canceled"] execute_url("#{THINGS_URL_BASE}update", url_params) end |