Class: OmnifocusMcp::Tools::Operations::QueryOmnifocus
- Inherits:
-
Object
- Object
- OmnifocusMcp::Tools::Operations::QueryOmnifocus
- Defined in:
- lib/omnifocus_mcp/tools/operations/query_omnifocus.rb
Defined Under Namespace
Classes: Match
Class Method Summary collapse
- .build_match ⇒ Object
- .call(params = nil, script_runner: Infrastructure::ScriptRunner, **kwargs) ⇒ Object
- .classify_response ⇒ Object
- .generate_query_script ⇒ Object
Instance Method Summary collapse
- #build_match(items:, count:, summary:) ⇒ Object
- #call(params) ⇒ Object
- #classify_response(response:, summary:) ⇒ Object
-
#initialize(script_runner: Infrastructure::ScriptRunner, generator: Generators::QueryOmnifocus) ⇒ QueryOmnifocus
constructor
A new instance of QueryOmnifocus.
Constructor Details
#initialize(script_runner: Infrastructure::ScriptRunner, generator: Generators::QueryOmnifocus) ⇒ QueryOmnifocus
Returns a new instance of QueryOmnifocus.
33 34 35 36 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 33 def initialize(script_runner: Infrastructure::ScriptRunner, generator: Generators::QueryOmnifocus) @script_runner = script_runner @generator = generator end |
Class Method Details
.build_match ⇒ Object
20 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 20 def build_match(...) = new.build_match(...) |
.call(params = nil, script_runner: Infrastructure::ScriptRunner, **kwargs) ⇒ Object
15 16 17 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 15 def call(params = nil, script_runner: Infrastructure::ScriptRunner, **kwargs) merge_params(params, kwargs).then { new(script_runner:).call(it) } end |
.classify_response ⇒ Object
19 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 19 def classify_response(...) = new.classify_response(...) |
.generate_query_script ⇒ Object
21 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 21 def generate_query_script(...) = Generators::QueryOmnifocus.generate_query_script(...) |
Instance Method Details
#build_match(items:, count:, summary:) ⇒ Object
66 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 66 def build_match(items:, count:, summary:) = Match.new(items: summary ? nil : items, count: count) |
#call(params) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 38 def call(params) params = Params::McpBoundary.coerce(Params::QueryOmnifocusParams, params) generator.generate_query_script(params).then do |script| script_runner.execute_omnifocus_source(script) .and_then { |response| classify_response(response:, summary: params.summary == true) } end rescue StandardError => e OmnifocusMcp.logger.warn("[query_omnifocus] Error: #{e}") OmnifocusMcp::Result.error(e. || "Unknown error occurred") end |
#classify_response(response:, summary:) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/omnifocus_mcp/tools/operations/query_omnifocus.rb', line 49 def classify_response(response:, summary:) shape = response.is_a?(Hash) ? response.transform_keys(&:to_sym) : nil case shape in { error: String => msg } OmnifocusMcp::Result.error(msg) in { items: Array => items, count: Integer => count } OmnifocusMcp::Result.ok(build_match(items:, count:, summary: summary)) in { count: Integer => count } OmnifocusMcp::Result.ok(Match.new(items: nil, count: count)) in Hash OmnifocusMcp::Result.ok(Match.new(items: nil, count: nil)) in nil OmnifocusMcp::Result.error("Unexpected response from queryOmnifocus: #{response.inspect}") end end |