activitysmith 1.0.0 → 1.2.0

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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +271 -24
  3. data/generated/activitysmith_openapi/api/live_activities_api.rb +168 -6
  4. data/generated/activitysmith_openapi/api/metrics_api.rb +109 -0
  5. data/generated/activitysmith_openapi/models/activity_metric.rb +293 -0
  6. data/generated/activitysmith_openapi/models/content_state_end.rb +47 -4
  7. data/generated/activitysmith_openapi/models/content_state_start.rb +50 -7
  8. data/generated/activitysmith_openapi/models/content_state_update.rb +50 -7
  9. data/generated/activitysmith_openapi/models/live_activity_stream_delete_request.rb +233 -0
  10. data/generated/activitysmith_openapi/models/live_activity_stream_delete_response.rb +332 -0
  11. data/generated/activitysmith_openapi/models/live_activity_stream_put_response.rb +361 -0
  12. data/generated/activitysmith_openapi/models/live_activity_stream_request.rb +280 -0
  13. data/generated/activitysmith_openapi/models/metric_error.rb +230 -0
  14. data/generated/activitysmith_openapi/models/metric_format.rb +43 -0
  15. data/generated/activitysmith_openapi/models/metric_unit_spacing.rb +40 -0
  16. data/generated/activitysmith_openapi/models/metric_value_update_request.rb +232 -0
  17. data/generated/activitysmith_openapi/models/metric_value_update_request_value.rb +105 -0
  18. data/generated/activitysmith_openapi/models/metric_value_update_response.rb +221 -0
  19. data/generated/activitysmith_openapi/models/not_found_error.rb +237 -0
  20. data/generated/activitysmith_openapi/models/stream_content_state.rb +538 -0
  21. data/generated/activitysmith_openapi/models/widget_metric.rb +507 -0
  22. data/generated/activitysmith_openapi/models/widget_metric_latest_value.rb +105 -0
  23. data/generated/activitysmith_openapi/version.rb +1 -1
  24. data/generated/activitysmith_openapi.rb +16 -0
  25. data/lib/activitysmith/client.rb +22 -10
  26. data/lib/activitysmith/live_activities.rb +19 -0
  27. data/lib/activitysmith/metrics.rb +42 -0
  28. data/lib/activitysmith/version.rb +1 -1
  29. data/lib/activitysmith.rb +1 -0
  30. metadata +19 -2
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ActivitySmith
4
4
  class Client
5
- attr_reader :notifications, :live_activities
5
+ attr_reader :notifications, :live_activities, :metrics
6
6
 
7
7
  def initialize(api_key:)
8
8
  raise ArgumentError, "ActivitySmith: api_key is required" if api_key.to_s.strip.empty?
@@ -14,28 +14,40 @@ module ActivitySmith
14
14
  config.user_agent = VersionedUserAgent.value if config.respond_to?(:user_agent=)
15
15
 
16
16
  api_client = OpenapiClient::ApiClient.new(config)
17
+ api_client.user_agent = VersionedUserAgent.value
18
+ api_client.default_headers["X-ActivitySmith-SDK"] = "ruby-v#{ActivitySmith::VERSION}"
17
19
  @notifications = Notifications.new(OpenapiClient::PushNotificationsApi.new(api_client))
18
20
  @live_activities = LiveActivities.new(OpenapiClient::LiveActivitiesApi.new(api_client))
21
+ @metrics = Metrics.new(OpenapiClient::MetricsApi.new(api_client))
19
22
  end
20
23
 
21
24
  private
22
25
 
23
26
  def load_generated_client!
24
- generated_entrypoint = File.expand_path("../../generated/openapi_client", __dir__)
27
+ return if generated_client_present?
28
+
29
+ generated_root = File.expand_path("../../generated", __dir__)
30
+ $LOAD_PATH.unshift(generated_root) unless $LOAD_PATH.include?(generated_root)
31
+
32
+ generated_entrypoint = File.join(generated_root, "activitysmith_openapi")
25
33
  require generated_entrypoint if File.exist?("#{generated_entrypoint}.rb")
26
34
 
27
- required_constants = [
35
+ return if generated_client_present?
36
+
37
+ raise RuntimeError,
38
+ "Generated Ruby client not found. Run SDK regeneration so /generated contains OpenAPI output."
39
+ end
40
+
41
+ def generated_client_present?
42
+ missing = [
28
43
  "OpenapiClient::Configuration",
29
44
  "OpenapiClient::ApiClient",
30
45
  "OpenapiClient::PushNotificationsApi",
31
- "OpenapiClient::LiveActivitiesApi"
32
- ]
33
-
34
- missing = required_constants.reject { |name| constant_defined?(name) }
35
- return if missing.empty?
46
+ "OpenapiClient::LiveActivitiesApi",
47
+ "OpenapiClient::MetricsApi"
48
+ ].reject { |name| constant_defined?(name) }
36
49
 
37
- raise RuntimeError,
38
- "Generated Ruby client not found. Run SDK regeneration so /generated contains OpenAPI output."
50
+ missing.empty?
39
51
  end
40
52
 
41
53
  def constant_defined?(name)
@@ -18,6 +18,14 @@ module ActivitySmith
18
18
  @api.end_live_activity(request, opts)
19
19
  end
20
20
 
21
+ def stream(stream_key, request, opts = {})
22
+ @api.reconcile_live_activity_stream(stream_key, normalize_channels_target(request), opts)
23
+ end
24
+
25
+ def end_stream(stream_key, request = nil, opts = {})
26
+ @api.end_live_activity_stream(stream_key, { live_activity_stream_delete_request: request }.merge(opts))
27
+ end
28
+
21
29
  # Backward-compatible aliases.
22
30
  def start_live_activity(live_activity_start_request, opts = {})
23
31
  @api.start_live_activity(normalize_channels_target(live_activity_start_request), opts)
@@ -31,6 +39,17 @@ module ActivitySmith
31
39
  @api.end_live_activity(live_activity_end_request, opts)
32
40
  end
33
41
 
42
+ def reconcile_live_activity_stream(stream_key, live_activity_stream_request, opts = {})
43
+ @api.reconcile_live_activity_stream(stream_key, normalize_channels_target(live_activity_stream_request), opts)
44
+ end
45
+
46
+ def end_live_activity_stream(stream_key, live_activity_stream_delete_request = nil, opts = {})
47
+ @api.end_live_activity_stream(
48
+ stream_key,
49
+ { live_activity_stream_delete_request: live_activity_stream_delete_request }.merge(opts)
50
+ )
51
+ end
52
+
34
53
  def method_missing(name, *args, &block)
35
54
  return @api.public_send(name, *args, &block) if @api.respond_to?(name)
36
55
 
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActivitySmith
4
+ class Metrics
5
+ def initialize(api)
6
+ @api = api
7
+ end
8
+
9
+ def update(key, value_or_request, timestamp: nil, **opts)
10
+ @api.update_metric_value(key, metric_value_request(value_or_request, timestamp), opts)
11
+ end
12
+
13
+ # Backward-compatible generated-style alias.
14
+ def update_metric_value(key, metric_value_update_request, opts = {})
15
+ @api.update_metric_value(key, metric_value_update_request, opts)
16
+ end
17
+
18
+ def method_missing(name, *args, &block)
19
+ return @api.public_send(name, *args, &block) if @api.respond_to?(name)
20
+
21
+ super
22
+ end
23
+
24
+ def respond_to_missing?(name, include_private = false)
25
+ @api.respond_to?(name, include_private) || super
26
+ end
27
+
28
+ private
29
+
30
+ def metric_value_request(value_or_request, timestamp)
31
+ if value_or_request.is_a?(Hash) && (value_or_request.key?(:value) || value_or_request.key?("value"))
32
+ hash = value_or_request.dup
33
+ hash[:timestamp] = timestamp unless timestamp.nil?
34
+ return hash
35
+ end
36
+
37
+ hash = { value: value_or_request }
38
+ hash[:timestamp] = timestamp unless timestamp.nil?
39
+ hash
40
+ end
41
+ end
42
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActivitySmith
4
- VERSION = "1.0.0"
4
+ VERSION = "1.2.0"
5
5
  end
data/lib/activitysmith.rb CHANGED
@@ -4,4 +4,5 @@ require_relative "activitysmith/version"
4
4
  require_relative "activitysmith/versioned_user_agent"
5
5
  require_relative "activitysmith/notifications"
6
6
  require_relative "activitysmith/live_activities"
7
+ require_relative "activitysmith/metrics"
7
8
  require_relative "activitysmith/client"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activitysmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ActivitySmith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-03-19 00:00:00.000000000 Z
11
+ date: 2026-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -77,10 +77,12 @@ files:
77
77
  - README.md
78
78
  - generated/activitysmith_openapi.rb
79
79
  - generated/activitysmith_openapi/api/live_activities_api.rb
80
+ - generated/activitysmith_openapi/api/metrics_api.rb
80
81
  - generated/activitysmith_openapi/api/push_notifications_api.rb
81
82
  - generated/activitysmith_openapi/api_client.rb
82
83
  - generated/activitysmith_openapi/api_error.rb
83
84
  - generated/activitysmith_openapi/configuration.rb
85
+ - generated/activitysmith_openapi/models/activity_metric.rb
84
86
  - generated/activitysmith_openapi/models/alert_payload.rb
85
87
  - generated/activitysmith_openapi/models/bad_request_error.rb
86
88
  - generated/activitysmith_openapi/models/channel_target.rb
@@ -95,10 +97,21 @@ files:
95
97
  - generated/activitysmith_openapi/models/live_activity_limit_error.rb
96
98
  - generated/activitysmith_openapi/models/live_activity_start_request.rb
97
99
  - generated/activitysmith_openapi/models/live_activity_start_response.rb
100
+ - generated/activitysmith_openapi/models/live_activity_stream_delete_request.rb
101
+ - generated/activitysmith_openapi/models/live_activity_stream_delete_response.rb
102
+ - generated/activitysmith_openapi/models/live_activity_stream_put_response.rb
103
+ - generated/activitysmith_openapi/models/live_activity_stream_request.rb
98
104
  - generated/activitysmith_openapi/models/live_activity_update_request.rb
99
105
  - generated/activitysmith_openapi/models/live_activity_update_response.rb
100
106
  - generated/activitysmith_openapi/models/live_activity_webhook_method.rb
107
+ - generated/activitysmith_openapi/models/metric_error.rb
108
+ - generated/activitysmith_openapi/models/metric_format.rb
109
+ - generated/activitysmith_openapi/models/metric_unit_spacing.rb
110
+ - generated/activitysmith_openapi/models/metric_value_update_request.rb
111
+ - generated/activitysmith_openapi/models/metric_value_update_request_value.rb
112
+ - generated/activitysmith_openapi/models/metric_value_update_response.rb
101
113
  - generated/activitysmith_openapi/models/no_recipients_error.rb
114
+ - generated/activitysmith_openapi/models/not_found_error.rb
102
115
  - generated/activitysmith_openapi/models/push_notification_action.rb
103
116
  - generated/activitysmith_openapi/models/push_notification_action_type.rb
104
117
  - generated/activitysmith_openapi/models/push_notification_request.rb
@@ -106,10 +119,14 @@ files:
106
119
  - generated/activitysmith_openapi/models/push_notification_webhook_method.rb
107
120
  - generated/activitysmith_openapi/models/rate_limit_error.rb
108
121
  - generated/activitysmith_openapi/models/send_push_notification429_response.rb
122
+ - generated/activitysmith_openapi/models/stream_content_state.rb
123
+ - generated/activitysmith_openapi/models/widget_metric.rb
124
+ - generated/activitysmith_openapi/models/widget_metric_latest_value.rb
109
125
  - generated/activitysmith_openapi/version.rb
110
126
  - lib/activitysmith.rb
111
127
  - lib/activitysmith/client.rb
112
128
  - lib/activitysmith/live_activities.rb
129
+ - lib/activitysmith/metrics.rb
113
130
  - lib/activitysmith/notifications.rb
114
131
  - lib/activitysmith/version.rb
115
132
  - lib/activitysmith/versioned_user_agent.rb