plex_ruby_sdk 0.7.7 → 0.8.1

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/plex_ruby_sdk/activities.rb +115 -12
  3. data/lib/plex_ruby_sdk/authentication.rb +233 -29
  4. data/lib/plex_ruby_sdk/butler.rb +283 -30
  5. data/lib/plex_ruby_sdk/hubs.rb +174 -21
  6. data/lib/plex_ruby_sdk/library.rb +1307 -110
  7. data/lib/plex_ruby_sdk/log.rb +179 -24
  8. data/lib/plex_ruby_sdk/media.rb +288 -35
  9. data/lib/plex_ruby_sdk/models/operations/get_media_arts_mediacontainer.rb +36 -0
  10. data/lib/plex_ruby_sdk/models/operations/get_media_arts_metadata.rb +36 -0
  11. data/lib/plex_ruby_sdk/models/operations/get_media_arts_request.rb +24 -0
  12. data/lib/plex_ruby_sdk/models/operations/get_media_arts_response.rb +33 -0
  13. data/lib/plex_ruby_sdk/models/operations/get_media_arts_responsebody.rb +24 -0
  14. data/lib/plex_ruby_sdk/models/operations/get_media_posters_mediacontainer.rb +36 -0
  15. data/lib/plex_ruby_sdk/models/operations/get_media_posters_metadata.rb +36 -0
  16. data/lib/plex_ruby_sdk/models/operations/get_media_posters_request.rb +24 -0
  17. data/lib/plex_ruby_sdk/models/operations/get_media_posters_response.rb +33 -0
  18. data/lib/plex_ruby_sdk/models/operations/get_media_posters_responsebody.rb +24 -0
  19. data/lib/plex_ruby_sdk/models/operations/post_media_arts_request.rb +30 -0
  20. data/lib/plex_ruby_sdk/models/operations/post_media_arts_response.rb +30 -0
  21. data/lib/plex_ruby_sdk/models/operations/post_media_poster_request.rb +30 -0
  22. data/lib/plex_ruby_sdk/models/operations/post_media_poster_response.rb +30 -0
  23. data/lib/plex_ruby_sdk/models/operations.rb +14 -0
  24. data/lib/plex_ruby_sdk/playlists.rb +513 -60
  25. data/lib/plex_ruby_sdk/plex.rb +388 -38
  26. data/lib/plex_ruby_sdk/plex_api.rb +29 -10
  27. data/lib/plex_ruby_sdk/sdk_hooks/hooks.rb +103 -0
  28. data/lib/plex_ruby_sdk/sdk_hooks/registration.rb +35 -0
  29. data/lib/plex_ruby_sdk/sdk_hooks/types.rb +152 -0
  30. data/lib/plex_ruby_sdk/sdkconfiguration.rb +26 -7
  31. data/lib/plex_ruby_sdk/search.rb +174 -21
  32. data/lib/plex_ruby_sdk/server.rb +505 -53
  33. data/lib/plex_ruby_sdk/sessions.rb +228 -25
  34. data/lib/plex_ruby_sdk/statistics.rb +174 -21
  35. data/lib/plex_ruby_sdk/updater.rb +173 -20
  36. data/lib/plex_ruby_sdk/users.rb +56 -4
  37. data/lib/plex_ruby_sdk/utils/retries.rb +95 -0
  38. data/lib/plex_ruby_sdk/utils/utils.rb +10 -0
  39. data/lib/plex_ruby_sdk/video.rb +117 -14
  40. data/lib/plex_ruby_sdk/watchlist.rb +60 -7
  41. metadata +50 -4
@@ -5,7 +5,10 @@
5
5
 
6
6
  require 'faraday'
7
7
  require 'faraday/multipart'
8
+ require 'faraday/retry'
8
9
  require 'sorbet-runtime'
10
+ require_relative 'sdk_hooks/hooks'
11
+ require_relative 'utils/retries'
9
12
 
10
13
  module PlexRubySDK
11
14
  extend T::Sig
@@ -25,8 +28,8 @@ module PlexRubySDK
25
28
  end
26
29
 
27
30
 
28
- sig { params(request: T.nilable(::PlexRubySDK::Operations::GetWatchListRequest), server_url: T.nilable(String)).returns(::PlexRubySDK::Operations::GetWatchListResponse) }
29
- def get_watch_list(request, server_url = nil)
31
+ sig { params(request: T.nilable(::PlexRubySDK::Operations::GetWatchListRequest), server_url: T.nilable(String), timeout_ms: T.nilable(Integer)).returns(::PlexRubySDK::Operations::GetWatchListResponse) }
32
+ def get_watch_list(request, server_url = nil, timeout_ms = nil)
30
33
  # get_watch_list - Get User Watchlist
31
34
  # Get User Watchlist
32
35
  base_url = Utils.template_url(GET_WATCH_LIST_SERVERS[0], {
@@ -43,11 +46,61 @@ module PlexRubySDK
43
46
  headers['Accept'] = 'application/json'
44
47
  headers['user-agent'] = @sdk_configuration.user_agent
45
48
 
46
- r = @sdk_configuration.client.get(url) do |req|
47
- req.headers = headers
48
- req.params = query_params
49
- security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
50
- Utils.configure_request_security(req, security) if !security.nil?
49
+ security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
50
+
51
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
52
+ timeout ||= @sdk_configuration.timeout
53
+
54
+ connection = @sdk_configuration.client
55
+
56
+ hook_ctx = SDKHooks::HookContext.new(
57
+ base_url: base_url,
58
+ oauth2_scopes: nil,
59
+ operation_id: 'get-watch-list',
60
+ security_source: @sdk_configuration.security_source
61
+ )
62
+
63
+ error = T.let(nil, T.nilable(StandardError))
64
+ r = T.let(nil, T.nilable(Faraday::Response))
65
+
66
+ begin
67
+ r = connection.get(url) do |req|
68
+ req.headers.merge!(headers)
69
+ req.options.timeout = timeout unless timeout.nil?
70
+ req.params = query_params
71
+ Utils.configure_request_security(req, security)
72
+
73
+ @sdk_configuration.hooks.before_request(
74
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
75
+ hook_ctx: hook_ctx
76
+ ),
77
+ request: req
78
+ )
79
+ end
80
+ rescue StandardError => e
81
+ error = e
82
+ ensure
83
+ if r.nil? || Utils.error_status?(r.status)
84
+ r = @sdk_configuration.hooks.after_error(
85
+ error: error,
86
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
87
+ hook_ctx: hook_ctx
88
+ ),
89
+ response: r
90
+ )
91
+ else
92
+ r = @sdk_configuration.hooks.after_success(
93
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
94
+ hook_ctx: hook_ctx
95
+ ),
96
+ response: r
97
+ )
98
+ end
99
+
100
+ if r.nil?
101
+ raise error if !error.nil?
102
+ raise 'no response'
103
+ end
51
104
  end
52
105
 
53
106
  content_type = r.headers.fetch('Content-Type', 'application/octet-stream')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plex_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LukeHagar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-10 00:00:00.000000000 Z
11
+ date: 2025-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday-retry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.2.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.2.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rack
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +128,28 @@ dependencies:
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: 1.60.2
131
+ version: 1.73.2
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.73.2
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-minitest
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.37.1
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: 1.60.2
152
+ version: 0.37.1
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: sorbet
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -404,6 +432,11 @@ files:
404
432
  - lib/plex_ruby_sdk/models/operations/get_library_items_ultrablurcolors.rb
405
433
  - lib/plex_ruby_sdk/models/operations/get_library_items_unauthorized.rb
406
434
  - lib/plex_ruby_sdk/models/operations/get_library_items_writer.rb
435
+ - lib/plex_ruby_sdk/models/operations/get_media_arts_mediacontainer.rb
436
+ - lib/plex_ruby_sdk/models/operations/get_media_arts_metadata.rb
437
+ - lib/plex_ruby_sdk/models/operations/get_media_arts_request.rb
438
+ - lib/plex_ruby_sdk/models/operations/get_media_arts_response.rb
439
+ - lib/plex_ruby_sdk/models/operations/get_media_arts_responsebody.rb
407
440
  - lib/plex_ruby_sdk/models/operations/get_media_meta_data_badrequest.rb
408
441
  - lib/plex_ruby_sdk/models/operations/get_media_meta_data_country.rb
409
442
  - lib/plex_ruby_sdk/models/operations/get_media_meta_data_director.rb
@@ -428,6 +461,11 @@ files:
428
461
  - lib/plex_ruby_sdk/models/operations/get_media_meta_data_ultrablurcolors.rb
429
462
  - lib/plex_ruby_sdk/models/operations/get_media_meta_data_unauthorized.rb
430
463
  - lib/plex_ruby_sdk/models/operations/get_media_meta_data_writer.rb
464
+ - lib/plex_ruby_sdk/models/operations/get_media_posters_mediacontainer.rb
465
+ - lib/plex_ruby_sdk/models/operations/get_media_posters_metadata.rb
466
+ - lib/plex_ruby_sdk/models/operations/get_media_posters_request.rb
467
+ - lib/plex_ruby_sdk/models/operations/get_media_posters_response.rb
468
+ - lib/plex_ruby_sdk/models/operations/get_media_posters_responsebody.rb
431
469
  - lib/plex_ruby_sdk/models/operations/get_media_providers_badrequest.rb
432
470
  - lib/plex_ruby_sdk/models/operations/get_media_providers_directory.rb
433
471
  - lib/plex_ruby_sdk/models/operations/get_media_providers_errors.rb
@@ -921,6 +959,10 @@ files:
921
959
  - lib/plex_ruby_sdk/models/operations/player.rb
922
960
  - lib/plex_ruby_sdk/models/operations/playlisttype.rb
923
961
  - lib/plex_ruby_sdk/models/operations/plexdevice.rb
962
+ - lib/plex_ruby_sdk/models/operations/post_media_arts_request.rb
963
+ - lib/plex_ruby_sdk/models/operations/post_media_arts_response.rb
964
+ - lib/plex_ruby_sdk/models/operations/post_media_poster_request.rb
965
+ - lib/plex_ruby_sdk/models/operations/post_media_poster_response.rb
924
966
  - lib/plex_ruby_sdk/models/operations/post_users_sign_in_data_authentication_errors.rb
925
967
  - lib/plex_ruby_sdk/models/operations/post_users_sign_in_data_authentication_response_status.rb
926
968
  - lib/plex_ruby_sdk/models/operations/post_users_sign_in_data_authentication_status.rb
@@ -1052,6 +1094,9 @@ files:
1052
1094
  - lib/plex_ruby_sdk/playlists.rb
1053
1095
  - lib/plex_ruby_sdk/plex.rb
1054
1096
  - lib/plex_ruby_sdk/plex_api.rb
1097
+ - lib/plex_ruby_sdk/sdk_hooks/hooks.rb
1098
+ - lib/plex_ruby_sdk/sdk_hooks/registration.rb
1099
+ - lib/plex_ruby_sdk/sdk_hooks/types.rb
1055
1100
  - lib/plex_ruby_sdk/sdkconfiguration.rb
1056
1101
  - lib/plex_ruby_sdk/search.rb
1057
1102
  - lib/plex_ruby_sdk/server.rb
@@ -1061,6 +1106,7 @@ files:
1061
1106
  - lib/plex_ruby_sdk/statistics.rb
1062
1107
  - lib/plex_ruby_sdk/updater.rb
1063
1108
  - lib/plex_ruby_sdk/users.rb
1109
+ - lib/plex_ruby_sdk/utils/retries.rb
1064
1110
  - lib/plex_ruby_sdk/utils/utils.rb
1065
1111
  - lib/plex_ruby_sdk/video.rb
1066
1112
  - lib/plex_ruby_sdk/watchlist.rb