From 5e99308150bde35ef1f181486f9ccc618bd91ebf Mon Sep 17 00:00:00 2001 From: bardonadam Date: Sat, 7 Feb 2026 09:58:41 +0100 Subject: [PATCH] feat: add short resource methods with compatibility aliases --- README.md | 10 +++---- lib/activitysmith.rb | 2 ++ lib/activitysmith/client.rb | 4 +-- lib/activitysmith/live_activities.rb | 44 ++++++++++++++++++++++++++++ lib/activitysmith/notifications.rb | 28 ++++++++++++++++++ test/client_test.rb | 4 +++ 6 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 lib/activitysmith/live_activities.rb create mode 100644 lib/activitysmith/notifications.rb diff --git a/README.md b/README.md index e6b4e72..a2d51a4 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ client = ActivitySmith::Client.new( ### Send a Push Notification ```ruby -response = client.notifications.send_push_notification( +response = client.notifications.send( { title: "Build Failed", message: "CI pipeline failed on main branch" @@ -45,7 +45,7 @@ response = client.notifications.send_push_notification( ### Start a Live Activity ```ruby -start = client.live_activities.start_live_activity( +start = client.live_activities.start( { content_state: { title: "Deploy", @@ -62,7 +62,7 @@ activity_id = start.activity_id ### Update a Live Activity ```ruby -update = client.live_activities.update_live_activity( +update = client.live_activities.update( { activity_id: activity_id, content_state: { @@ -76,7 +76,7 @@ update = client.live_activities.update_live_activity( ### End a Live Activity ```ruby -finish = client.live_activities.end_live_activity( +finish = client.live_activities.end( { activity_id: activity_id, content_state: { @@ -92,7 +92,7 @@ finish = client.live_activities.end_live_activity( ```ruby begin - client.notifications.send_push_notification( + client.notifications.send( { title: "Build Failed" } ) rescue OpenapiClient::ApiError => e diff --git a/lib/activitysmith.rb b/lib/activitysmith.rb index 9d10c21..085acda 100644 --- a/lib/activitysmith.rb +++ b/lib/activitysmith.rb @@ -1,4 +1,6 @@ # frozen_string_literal: true require_relative "activitysmith/version" +require_relative "activitysmith/notifications" +require_relative "activitysmith/live_activities" require_relative "activitysmith/client" diff --git a/lib/activitysmith/client.rb b/lib/activitysmith/client.rb index d1f4a91..d09f31b 100644 --- a/lib/activitysmith/client.rb +++ b/lib/activitysmith/client.rb @@ -14,8 +14,8 @@ def initialize(api_key:, base_url: nil) config.host = base_url.to_s.sub(%r{/+$}, "") unless base_url.to_s.strip.empty? api_client = OpenapiClient::ApiClient.new(config) - @notifications = OpenapiClient::PushNotificationsApi.new(api_client) - @live_activities = OpenapiClient::LiveActivitiesApi.new(api_client) + @notifications = Notifications.new(OpenapiClient::PushNotificationsApi.new(api_client)) + @live_activities = LiveActivities.new(OpenapiClient::LiveActivitiesApi.new(api_client)) end private diff --git a/lib/activitysmith/live_activities.rb b/lib/activitysmith/live_activities.rb new file mode 100644 index 0000000..a406cc2 --- /dev/null +++ b/lib/activitysmith/live_activities.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module ActivitySmith + class LiveActivities + def initialize(api) + @api = api + end + + def start(request, opts = {}) + @api.start_live_activity(request, opts) + end + + def update(request, opts = {}) + @api.update_live_activity(request, opts) + end + + def end(request, opts = {}) + @api.end_live_activity(request, opts) + end + + # Backward-compatible aliases. + def start_live_activity(live_activity_start_request, opts = {}) + @api.start_live_activity(live_activity_start_request, opts) + end + + def update_live_activity(live_activity_update_request, opts = {}) + @api.update_live_activity(live_activity_update_request, opts) + end + + def end_live_activity(live_activity_end_request, opts = {}) + @api.end_live_activity(live_activity_end_request, opts) + end + + def method_missing(name, *args, &block) + return @api.public_send(name, *args, &block) if @api.respond_to?(name) + + super + end + + def respond_to_missing?(name, include_private = false) + @api.respond_to?(name, include_private) || super + end + end +end diff --git a/lib/activitysmith/notifications.rb b/lib/activitysmith/notifications.rb new file mode 100644 index 0000000..7094d5e --- /dev/null +++ b/lib/activitysmith/notifications.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module ActivitySmith + class Notifications + def initialize(api) + @api = api + end + + def send(request, opts = {}) + @api.send_push_notification(request, opts) + end + + # Backward-compatible alias. + def send_push_notification(push_notification_request, opts = {}) + @api.send_push_notification(push_notification_request, opts) + end + + def method_missing(name, *args, &block) + return @api.public_send(name, *args, &block) if @api.respond_to?(name) + + super + end + + def respond_to_missing?(name, include_private = false) + @api.respond_to?(name, include_private) || super + end + end +end diff --git a/test/client_test.rb b/test/client_test.rb index 83ca198..55f4944 100644 --- a/test/client_test.rb +++ b/test/client_test.rb @@ -16,6 +16,10 @@ def test_constructs_when_generated_client_is_present refute_nil client.notifications refute_nil client.live_activities + assert_respond_to client.notifications, :send + assert_respond_to client.live_activities, :start + assert_respond_to client.live_activities, :update + assert_respond_to client.live_activities, :end rescue RuntimeError => error skip "Generated OpenAPI client is not present yet." if error.message.include?("Generated Ruby client not found")