kodi_client 0.6.2 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/README.md +1 -0
  4. data/kodi_client.gemspec +2 -2
  5. data/lib/kodi_client/extensions/chainable.rb +71 -0
  6. data/lib/kodi_client/extensions/comparable.rb +29 -0
  7. data/lib/kodi_client/extensions/creatable.rb +132 -0
  8. data/lib/kodi_client/extensions/iterable.rb +14 -0
  9. data/lib/kodi_client/kodi_error.rb +14 -0
  10. data/lib/kodi_client/kodi_method.rb +34 -0
  11. data/lib/kodi_client/{options.rb → kodi_options.rb} +1 -1
  12. data/lib/kodi_client/kodi_request.rb +16 -0
  13. data/lib/kodi_client/kodi_response.rb +21 -0
  14. data/lib/kodi_client/{method → methods}/addons.rb +6 -10
  15. data/lib/kodi_client/{method → methods}/application.rb +2 -5
  16. data/lib/kodi_client/methods/audio_library.rb +334 -0
  17. data/lib/kodi_client/{method → methods}/favourites.rb +2 -5
  18. data/lib/kodi_client/{method → methods}/files.rb +6 -14
  19. data/lib/kodi_client/{method → methods}/gui.rb +2 -5
  20. data/lib/kodi_client/{method → methods}/input.rb +2 -6
  21. data/lib/kodi_client/{method → methods}/player.rb +2 -7
  22. data/lib/kodi_client/{method → methods}/profiles.rb +5 -10
  23. data/lib/kodi_client/{method → methods}/system.rb +2 -6
  24. data/lib/kodi_client/types/addons/addon_content_type.rb +18 -0
  25. data/lib/kodi_client/types/addons/addon_dependency_type.rb +21 -0
  26. data/lib/kodi_client/types/addons/addon_details_type.rb +44 -0
  27. data/lib/kodi_client/types/addons/addon_extra_info_type.rb +20 -0
  28. data/lib/kodi_client/types/addons/addon_fields_type.rb +28 -0
  29. data/lib/kodi_client/types/addons/addon_types_type.rb +48 -0
  30. data/lib/kodi_client/types/addons/get_addon_returned_type.rb +21 -0
  31. data/lib/kodi_client/types/addons/get_addons_returned_type.rb +22 -0
  32. data/lib/kodi_client/types/application/property_name_type.rb +19 -0
  33. data/lib/kodi_client/types/application/property_value_type.rb +24 -0
  34. data/lib/kodi_client/types/application/version_type.rb +22 -0
  35. data/lib/kodi_client/types/audio/audio_album_release_type_type.rb +15 -0
  36. data/lib/kodi_client/types/audio/audio_artist_role_type.rb +21 -0
  37. data/lib/kodi_client/types/audio/audio_contributor_type.rb +22 -0
  38. data/lib/kodi_client/types/audio/audio_details_album_type.rb +58 -0
  39. data/lib/kodi_client/types/audio/audio_details_artist_type.rb +53 -0
  40. data/lib/kodi_client/types/audio/audio_details_base_type.rb +30 -0
  41. data/lib/kodi_client/types/audio/audio_details_media_type.rb +50 -0
  42. data/lib/kodi_client/types/audio/audio_details_role_type.rb +25 -0
  43. data/lib/kodi_client/types/audio/audio_details_song_type.rb +72 -0
  44. data/lib/kodi_client/types/audio/audio_fields_album_type.rb +50 -0
  45. data/lib/kodi_client/types/audio/audio_fields_artist_type.rb +39 -0
  46. data/lib/kodi_client/types/audio/audio_fields_role_type.rb +15 -0
  47. data/lib/kodi_client/types/audio/audio_fields_song_type.rb +61 -0
  48. data/lib/kodi_client/types/audio/available_art_type.rb +21 -0
  49. data/lib/kodi_client/types/audio/genre_type.rb +20 -0
  50. data/lib/kodi_client/types/audio/get_albums_returned_type.rb +22 -0
  51. data/lib/kodi_client/types/audio/get_artists_returned_type.rb +23 -0
  52. data/lib/kodi_client/types/audio/get_genres_returned_type.rb +24 -0
  53. data/lib/kodi_client/types/audio/get_roles_returned_type.rb +25 -0
  54. data/lib/kodi_client/types/audio/get_songs_returned_type.rb +25 -0
  55. data/lib/kodi_client/types/audio/get_sources_return_type.rb +25 -0
  56. data/lib/kodi_client/types/audio/property_name_type.rb +25 -0
  57. data/lib/kodi_client/types/audio/property_value_type.rb +33 -0
  58. data/lib/kodi_client/types/favourites/details_favourite_type.rb +24 -0
  59. data/lib/kodi_client/types/favourites/fields_favourite_type.rb +17 -0
  60. data/lib/kodi_client/types/favourites/get_favourite_returned_type.rb +22 -0
  61. data/lib/kodi_client/types/favourites/type_type.rb +18 -0
  62. data/lib/kodi_client/types/files/file_label_type.rb +20 -0
  63. data/lib/kodi_client/types/files/get_directory_returned_type.rb +22 -0
  64. data/lib/kodi_client/types/files/get_sources_returned_type.rb +22 -0
  65. data/lib/kodi_client/types/files/media_type.rb +18 -0
  66. data/lib/kodi_client/types/files/prepare_download_returned_type.rb +21 -0
  67. data/lib/kodi_client/types/global/direction_type.rb +17 -0
  68. data/lib/kodi_client/types/global/global_time_type.rb +22 -0
  69. data/lib/kodi_client/types/global/id_label_type.rb +20 -0
  70. data/lib/kodi_client/types/global/id_name_type.rb +20 -0
  71. data/lib/kodi_client/types/global/increment_decrement_type.rb +15 -0
  72. data/lib/kodi_client/types/global/next_prev_type.rb +17 -0
  73. data/lib/kodi_client/types/global/password_encryption_type.rb +16 -0
  74. data/lib/kodi_client/types/global/rotate_type.rb +15 -0
  75. data/lib/kodi_client/types/global/toggle_type.rb +16 -0
  76. data/lib/kodi_client/types/gui/gui_window_type.rb +124 -0
  77. data/lib/kodi_client/types/gui/property_name_type.rb +18 -0
  78. data/lib/kodi_client/types/gui/property_value_type.rb +26 -0
  79. data/lib/kodi_client/types/gui/stereoscopy_mode_type.rb +31 -0
  80. data/lib/kodi_client/types/input/input_action_type.rb +212 -0
  81. data/lib/kodi_client/{global_types/item_types.rb → types/items/item_details_base_type.rb} +2 -4
  82. data/lib/kodi_client/types/library/library_details_genre_type.rb +27 -0
  83. data/lib/kodi_client/types/library/library_details_source_type.rb +26 -0
  84. data/lib/kodi_client/types/library/library_fields_genre_type.rb +17 -0
  85. data/lib/kodi_client/types/library/library_fields_source_type.rb +17 -0
  86. data/lib/kodi_client/types/list/list_field_files_type.rb +83 -0
  87. data/lib/kodi_client/types/list/list_fields_all_type.rb +96 -0
  88. data/lib/kodi_client/types/list/list_item_all_type.rb +70 -0
  89. data/lib/kodi_client/types/list/list_item_base_type.rb +141 -0
  90. data/lib/kodi_client/types/list/list_item_file_type.rb +66 -0
  91. data/lib/kodi_client/types/list/list_limits_returned_type.rb +23 -0
  92. data/lib/kodi_client/types/list/list_limits_type.rb +23 -0
  93. data/lib/kodi_client/types/list/list_sort_method_type.rb +54 -0
  94. data/lib/kodi_client/types/list/list_sort_type.rb +28 -0
  95. data/lib/kodi_client/types/list/sort_order_type.rb +15 -0
  96. data/lib/kodi_client/types/media/media_artwork_type.rb +26 -0
  97. data/lib/kodi_client/types/media/media_details_base_type.rb +29 -0
  98. data/lib/kodi_client/types/media/media_type_type.rb +16 -0
  99. data/lib/kodi_client/types/player/audio_stream_type.rb +29 -0
  100. data/lib/kodi_client/types/player/player_position_time_type.rb +22 -0
  101. data/lib/kodi_client/types/player/player_repeat_type.rb +17 -0
  102. data/lib/kodi_client/types/player/player_speed_type.rb +26 -0
  103. data/lib/kodi_client/types/player/player_type.rb +24 -0
  104. data/lib/kodi_client/types/player/player_type_type.rb +16 -0
  105. data/lib/kodi_client/types/player/player_view_mode_type.rb +23 -0
  106. data/lib/kodi_client/types/player/player_visibility_type.rb +16 -0
  107. data/lib/kodi_client/types/player/property_name_type.rb +38 -0
  108. data/lib/kodi_client/types/player/property_value_type.rb +60 -0
  109. data/lib/kodi_client/types/player/seek_jump_type.rb +17 -0
  110. data/lib/kodi_client/types/player/seek_returned_type.rb +23 -0
  111. data/lib/kodi_client/types/player/subtitle_type.rb +24 -0
  112. data/lib/kodi_client/types/player/video_stream_type.rb +26 -0
  113. data/lib/kodi_client/types/player/view_mode_type.rb +22 -0
  114. data/lib/kodi_client/types/player/zoom_type.rb +15 -0
  115. data/lib/kodi_client/types/profiles/details_profile_type.rb +24 -0
  116. data/lib/kodi_client/types/profiles/fields_profile_type.rb +15 -0
  117. data/lib/kodi_client/types/profiles/get_profiles_returned_type.rb +22 -0
  118. data/lib/kodi_client/types/profiles/profile_password_type.rb +20 -0
  119. data/lib/kodi_client/{global_types/pvr_type.rb → types/pvr/channel_type_type.rb} +2 -6
  120. data/lib/kodi_client/types/system/property_name_type.rb +17 -0
  121. data/lib/kodi_client/{global_types/system_types.rb → types/system/property_value_type.rb} +2 -17
  122. data/lib/kodi_client/types/video/stream_details_type.rb +24 -0
  123. data/lib/kodi_client/types/video/video_cast_type.rb +22 -0
  124. data/lib/kodi_client/types/video/video_details_base_type.rb +29 -0
  125. data/lib/kodi_client/types/video/video_details_file_type.rb +37 -0
  126. data/lib/kodi_client/types/video/video_details_item_type.rb +32 -0
  127. data/lib/kodi_client/types/video/video_details_media_type.rb +28 -0
  128. data/lib/kodi_client/types/video/video_resume_type.rb +20 -0
  129. data/lib/kodi_client.rb +156 -24
  130. metadata +129 -37
  131. data/lib/kodi_client/Chainable.rb +0 -50
  132. data/lib/kodi_client/global_types/addon_types.rb +0 -180
  133. data/lib/kodi_client/global_types/application_types.rb +0 -56
  134. data/lib/kodi_client/global_types/audio_types.rb +0 -226
  135. data/lib/kodi_client/global_types/favourites_types.rb +0 -66
  136. data/lib/kodi_client/global_types/files_types.rb +0 -68
  137. data/lib/kodi_client/global_types/global_types.rb +0 -106
  138. data/lib/kodi_client/global_types/gui_types.rb +0 -184
  139. data/lib/kodi_client/global_types/input_types.rb +0 -216
  140. data/lib/kodi_client/global_types/list_types.rb +0 -548
  141. data/lib/kodi_client/global_types/media_types.rb +0 -58
  142. data/lib/kodi_client/global_types/player_type.rb +0 -300
  143. data/lib/kodi_client/global_types/profiles_types.rb +0 -70
  144. data/lib/kodi_client/global_types/video_types.rb +0 -155
  145. data/lib/kodi_client/kodi_module.rb +0 -87
  146. data/lib/kodi_client/method/audio_library.rb +0 -49
  147. data/lib/kodi_client/util/comparable.rb +0 -20
  148. data/lib/kodi_client/util/creatable.rb +0 -106
  149. data/lib/kodi_client/util/iterable.rb +0 -11
@@ -1,180 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'kodi_client/global_types/item_types'
4
- require 'kodi_client/global_types/list_types'
5
- require 'kodi_client/util/comparable'
6
- require 'kodi_client/util/iterable'
7
- require 'kodi_client/util/creatable'
8
-
9
- module KodiClient
10
- module Types
11
- module Addons
12
-
13
- # Addon Types https://kodi.wiki/view/JSON-RPC_API/v12#Addon.Types
14
- module AddonTypes
15
- extend Iterable
16
-
17
- UNKNOWN = 'unknown'
18
- KODI_ADSP = 'kodi.adsp'
19
- KODI_AUDIODECODER = 'kodi.audiodecoder'
20
- KODI_CONTEXT_ITEM = 'kodi.context.item'
21
- KODI_GAME_CONTROLLER = 'kodi.game.controller'
22
- KODI_INPUTSTREAM = 'kodi.inputstream'
23
- KODI_PERIPHERAL = 'kodi.peripheral'
24
- KODI_RESOURCE_IMAGES = 'kodi.resource.images'
25
- KODI_RESOURCE_LANGUAGE = 'kodi.resource.language'
26
- KODI_RESOURCE_UISOUNDS = 'kodi.resource.uisounds'
27
- XBMC_ADDON_AUDIO = 'xbmc.addon.audio'
28
- XBMC_ADDON_EXECUTABLE = 'xbmc.addon.executable'
29
- XBMC_ADDON_IMAGE = 'xbmc.addon.image'
30
- XBMC_ADDON_REPOSITORY = 'xbmc.addon.repository'
31
- XBMC_ADDON_VIDEO = 'xbmc.addon.video'
32
- XBMC_AUDIOENCODER = 'xbmc.audioencoder'
33
- XBMC_GUI_SKIN = 'xbmc.gui.skin'
34
- XBMC_METADATA_SCRAPER_ALBUMS = 'xbmc.metadata.scraper.albums'
35
- XBMC_METADATA_SCRAPER_ARTISTS = 'xbmc.metadata.scraper.artists'
36
- XBMC_METADATA_SCRAPER_LIBRARY = 'xbmc.metadata.scraper.library'
37
- XBMC_METADATA_SCRAPER_MOVIES = 'xbmc.metadata.scraper.movies'
38
- XBMC_METADATA_SCRAPER_MUSICVIDEOS = 'xbmc.metadata.scraper.musicvideos'
39
- XBMC_METADATA_SCRAPER_TVSHOWS = 'xbmc.metadata.scraper.episodes'
40
- XBMC_PLAYER_MUSICVIZ = 'xbmc.player.musicviz'
41
- XBMC_PVRCLIENT = 'xbmc.pvrclient'
42
- XBMC_PYTHON_LIBRARY = 'xbmc.python.library'
43
- XBMC_PYTHON_LYRICS = 'xbmc.python.lyrics'
44
- XBMC_PYTHON_MODULE = 'xbmc.python.module'
45
- XBMC_PYTHON_PLUGINSOURCE = 'xbmc.python.pluginsource'
46
- XBMC_PYTHON_SCRIPT = 'xbmc.python.script'
47
- XBMC_PYTHON_WEATHER = 'xbmc.python.weather'
48
- XBMC_SERVICE = 'xbmc.service'
49
- XBMC_SUBTITLE_MODULE = 'xbmc.subtitle.module'
50
- XBMC_UI_SCREENSAVER = 'xbmc.ui.screensaver'
51
- XBMC_WEBINTERFACE = 'xbmc.webinterface'
52
- end
53
-
54
- # Addon.Content https://kodi.wiki/view/JSON-RPC_API/v12#Addon.Content
55
- module AddonContent
56
- extend Iterable
57
-
58
- UNKNOWN = 'unknown'
59
- AUDIO = 'audio'
60
- EXECUTABLE = 'executable'
61
- IMAGE = 'image'
62
- VIDEO = 'video'
63
- end
64
-
65
- # Addon.Fields https://kodi.wiki/view/JSON-RPC_API/v12#Addon.Content
66
- module AddonFields
67
- extend Iterable
68
-
69
- AUTHOR = 'author'
70
- BROKEN = 'broken'
71
- DEPENDENCIES = 'dependencies'
72
- DESCRIPTION = 'description'
73
- DISCLAIMER = 'disclaimer'
74
- ENABLED = 'enabled'
75
- EXTRAINFO = 'extrainfo'
76
- FANART = 'fanart'
77
- INSTALLED = 'installed'
78
- NAME = 'name'
79
- PATH = 'path'
80
- RATING = 'rating'
81
- SUMMARY = 'summary'
82
- THUMBNAIL = 'thumbnail'
83
- VERSION = 'version'
84
- end
85
-
86
- # represents addon dependency
87
- class AddonDependency
88
- include Comparable
89
- extend Creatable
90
-
91
- attr_reader :addon_id, :optional, :version
92
-
93
- def initialize(addon_id, optional, version)
94
- @addon_id = addon_id
95
- @optional = optional
96
- @version = version
97
- end
98
- end
99
-
100
- # represents addon extra info
101
- class AddonExtraInfo
102
- include Comparable
103
- extend Creatable
104
-
105
- attr_reader :key, :value
106
-
107
- def initialize(key, value)
108
- @key = key
109
- @value = value
110
- end
111
- end
112
-
113
- # represents addon details
114
- class AddonDetails
115
- include Comparable
116
- include Items::ItemDetailsBase
117
- extend Creatable
118
-
119
- attr_reader :addon_id, :author, :broken, :dependencies, :description, :disclaimer, :enabled, :extra_info,
120
- :fan_art, :installed, :name, :path, :rating, :summary, :thumbnail, :type, :version
121
-
122
- fields_to_map %w[addon_id author broken dependencies description disclaimer enabled extra_info fan_art
123
- installed name path rating summary thumbnail type version label]
124
-
125
- type_mapping ['dependencies', AddonDependency, true], ['extrainfo', AddonExtraInfo, true]
126
-
127
- def initialize(addon_id, author, broken, dependencies, description, disclaimer, enabled, extra_info,
128
- fan_art, installed, name, path, rating, summary, thumbnail, type, version, label)
129
- @addon_id = addon_id
130
- @author = author
131
- @broken = broken
132
- @dependencies = dependencies
133
- @description = description
134
- @disclaimer = disclaimer
135
- @enabled = enabled
136
- @extra_info = extra_info
137
- @fan_art = fan_art
138
- @installed = installed
139
- @name = name
140
- @path = path
141
- @rating = rating
142
- @summary = summary
143
- @thumbnail = thumbnail
144
- @type = type
145
- @version = version
146
- item_details_base(label)
147
- end
148
- end
149
-
150
- # getAddons return
151
- class Addons
152
- include Comparable
153
- extend Creatable
154
-
155
- attr_reader :addons, :limits
156
-
157
- type_mapping ['addons', AddonDetails, true], ['limits', List::ListLimitsReturned]
158
-
159
- def initialize(addons, limits)
160
- @addons = addons
161
- @limits = limits
162
- end
163
- end
164
-
165
- # getAddon return
166
- class Addon
167
- include Comparable
168
- extend Creatable
169
-
170
- attr_reader :addon
171
-
172
- type_mapping ['addon', AddonDetails]
173
-
174
- def initialize(addon)
175
- @addon = addon
176
- end
177
- end
178
- end
179
- end
180
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'kodi_client/util/comparable'
4
- require 'kodi_client/util/iterable'
5
- require 'kodi_client/util/creatable'
6
-
7
- module KodiClient
8
- module Types
9
- module Application
10
-
11
- # Application.Property.Name https://kodi.wiki/view/JSON-RPC_API/v12#Application.Property.Name
12
- module PropertyName
13
- extend Iterable
14
-
15
- VOLUME = 'volume'
16
- MUTED = 'muted'
17
- NAME = 'name'
18
- VERSION = 'version'
19
- SORT_TOKENS = 'sorttokens'
20
- LANGUAGE = 'language'
21
- end
22
-
23
- # represent application properties version
24
- class Version
25
- include Comparable
26
- extend Creatable
27
-
28
- attr_reader :major, :minor, :revision, :tag
29
-
30
- def initialize(major, minor, revision, tag)
31
- @major = major
32
- @minor = minor
33
- @revision = revision
34
- @tag = tag
35
- end
36
- end
37
-
38
- # Application.Property.Value https://kodi.wiki/view/JSON-RPC_API/v12#Application.Property.Value
39
- class PropertyValue
40
- include Comparable
41
- extend Creatable
42
-
43
- attr_reader :name, :version, :muted, :volume
44
-
45
- type_mapping ['version', Version]
46
-
47
- def initialize(name, version, muted, volume)
48
- @name = name
49
- @version = version
50
- @muted = muted
51
- @volume = volume
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,226 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'kodi_client/global_types/media_types'
4
- require 'kodi_client/util/comparable'
5
- require 'kodi_client/util/iterable'
6
- require 'kodi_client/util/creatable'
7
-
8
- module KodiClient
9
- module Types
10
- module Audio
11
-
12
- # Audio.Contributor https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Contributors
13
- class AudioContributor
14
- include Comparable
15
- extend Creatable
16
-
17
- attr_reader :artist_id, :name, :role, :role_id
18
-
19
- def initialize(artist_id, name, role, role_id)
20
- @artist_id = artist_id
21
- @name = name
22
- @role = role
23
- @role_id = role_id
24
- end
25
- end
26
-
27
- # Audio.Album.ReleaseType https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Album.ReleaseType
28
- module AudioAlbumReleaseType
29
- extend Iterable
30
-
31
- ALBUM = 'album'
32
- SINGLE = 'single'
33
- end
34
-
35
- # Audio.Details.Base https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Details.Base
36
- module AudioDetailsBase
37
- include Media::MediaDetailsBase
38
-
39
- attr_reader :art, :date_added, :genre
40
-
41
- def audio_details_base_mappings
42
- mappings = { 'art' => Creatable::CreateMap.new(Types::Media::MediaArtwork) }
43
- mappings.merge(media_details_base_mappings)
44
- end
45
-
46
- def audio_details_base_by_hash(hash)
47
- audio_details_base(*Creatable.hash_to_arr(hash, %w[art date_added genre fan_art thumbnail label]),
48
- audio_details_base_mappings)
49
- end
50
-
51
- def audio_details_base(art, date_added, genre, fan_art, thumbnail, label)
52
- @art = art
53
- @date_added = date_added
54
- @genre = genre
55
- media_details_base(fan_art, thumbnail, label)
56
- end
57
- end
58
-
59
- # Audio.Details.Media https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Details.Media
60
- module AudioDetailsMedia
61
- include AudioDetailsBase
62
-
63
- attr_reader :artist, :artist_id, :display_artist, :musicbrainz_album_artist_id, :original_date, :rating,
64
- :release_date, :sort_artist, :title, :user_rating, :votes, :year
65
-
66
- def audio_details_media_mappings
67
- audio_details_base_mappings
68
- end
69
-
70
- def audio_details_media_by_hash(hash)
71
- audio_details_media(*Creatable.hash_to_arr(hash, %w[artist artist_id display_artist
72
- musicbrainz_album_artist_id original_date rating
73
- release_date sort_artist title user_rating votes year art
74
- date_added genre fan_art thumbnail label],
75
- audio_details_base_mappings))
76
- end
77
-
78
- def audio_details_media(artist, artist_id, display_artist, musicbrainz_album_artist_id, original_date,
79
- rating, release_date, sort_artist, title, user_rating, votes, year,
80
- art, date_added, genre, fan_art, thumbnail, label)
81
- @artist = artist
82
- @artist_id = artist_id
83
- @display_artist = display_artist
84
- @musicbrainz_album_artist_id = musicbrainz_album_artist_id
85
- @original_date = original_date
86
- @rating = rating
87
- @release_date = release_date
88
- @sort_artist = sort_artist
89
- @title = title
90
- @user_rating = user_rating
91
- @votes = votes
92
- @year = year
93
- audio_details_base(art, date_added, genre, fan_art, thumbnail, label)
94
- end
95
- end
96
-
97
- # Audio.Fields.Album https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Fields.Album
98
- module AudioFieldsAlbum
99
- extend Iterable
100
-
101
- #album id
102
- ALBUM_DURATION = 'albumduration'
103
- ALBUM_LABEL = 'albumlabel'
104
- ALBUM_STATUS = 'albumstatus'
105
- ART = 'art'
106
- ARTIST = 'artist'
107
- ARTIST_ID = 'artistid'
108
- COMPILATION = 'compilation'
109
- DATE_ADDED = 'dateadded'
110
- DATE_MODIFIED = 'datemodified'
111
- DATE_NEW = 'datenew'
112
- DESCRIPTION = 'description'
113
- DISPLAY_ARTIST = 'displayartist'
114
- FAN_ART = 'fanart'
115
- GENRE = 'genre'
116
- IS_BOX_SET = 'isboxset'
117
- LAST_PLAYED = 'lastplayed'
118
- MOOD = 'mood'
119
- MUSICBRAINZ_ALBUM_ARTIST_ID = 'musicbrainzalbumartistid'
120
- MUSICBRAINZ_ALBUM_ID = 'musicbrainzalbumid'
121
- MUSICBRAINZ_RELEASE_GROUP_ID = 'musicbrainzreleasegroupid'
122
- ORIGINAL_DATE = 'originaldate'
123
- PLAY_COUNT = 'playcount'
124
- RATING = 'rating'
125
- RELEASE_DATE = 'releasedate'
126
- RELEASE_TYPE = 'releasetype'
127
- SONG_GENRES = 'songgenres'
128
- SORT_ARTIST = 'sortartist'
129
- SOURCE_ID = 'sourceid'
130
- STYLE = 'style'
131
- THEME = 'theme'
132
- THUMBNAIL = 'thumbnail'
133
- TITLE = 'title'
134
- TOTAL_DISCS = 'totaldiscs'
135
- TYPE = 'type'
136
- USER_RATING = 'userrating'
137
- VOTES = 'votes'
138
- YEAR = 'year'
139
- end
140
-
141
- # Audio.Details.Genres https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Details.Genres
142
- class Genre
143
- include Comparable
144
- extend Creatable
145
-
146
- attr_reader :genre_id, :title
147
-
148
- def initialize(genre_id, title)
149
- @genre_id = genre_id
150
- @title = title
151
- end
152
- end
153
-
154
- # Audio.Details.Album https://kodi.wiki/view/JSON-RPC_API/v12#Audio.Details.Album
155
- class DetailsAlbum
156
- include AudioDetailsMedia
157
- include Comparable
158
- extend Creatable
159
-
160
- attr_reader :album_duration, :album_id, :album_label, :album_status, :compilation, :date_modified, :date_new,
161
- :description, :is_box_set, :last_played, :mood, :musicbrainz_album_id, :musicbrainz_release_group_id,
162
- :play_count, :release_type, :song_genres, :source_id, :style, :theme, :total_discs, :type
163
-
164
- fields_to_map %w[album_duration album_id album_label album_status art artist artist_id compilation date_added
165
- date_modified date_new description display_artist fan_art genre is_box_set label last_played
166
- mood musicbrainz_album_artist_id musicbrainz_album_id musicbrainz_release_group_id
167
- original_date play_count rating release_date release_type song_genres sort_artist source_id
168
- style theme thumbnail title total_discs type user_rating votes year]
169
-
170
- type_mapping ['songgenres', Genre, true], ['art', Types::Media::MediaArtwork]
171
-
172
- def initialize(album_duration, album_id, album_label, album_status, art, artist, artist_id, compilation,
173
- date_added, date_modified, date_new, description, display_artist, fan_art, genre, is_box_set,
174
- label, last_played, mood, musicbrainz_album_artist_id, musicbrainz_album_id,
175
- musicbrainz_release_group_id, original_date, play_count, rating, release_date, release_type,
176
- song_genres, sort_artist, source_id, style, theme, thumbnail, title, total_discs, type,
177
- user_rating, votes, year)
178
- @album_duration = album_duration
179
- @album_id = album_id
180
- @album_label = album_label
181
- @album_status = album_status
182
- @compilation = compilation
183
- @date_modified = date_modified
184
- @date_new = date_new
185
- @description = description
186
- @is_box_set = is_box_set
187
- @last_played = last_played
188
- @mood = mood
189
- @musicbrainz_album_id = musicbrainz_album_id
190
- @musicbrainz_release_group_id = musicbrainz_release_group_id
191
- @play_count = play_count
192
- @release_type = release_type
193
- @song_genres = song_genres
194
- @source_id = source_id
195
- @style = style
196
- @theme = theme
197
- @total_discs = total_discs
198
- @type = type
199
- audio_details_media(artist, artist_id, display_artist, musicbrainz_album_artist_id, original_date,
200
- rating, release_date, sort_artist, title, user_rating, votes, year,
201
- art, date_added, genre, fan_art, thumbnail, label)
202
- end
203
- end
204
-
205
- # return type for AudioLibrary.GetAlbums
206
- class GetAlbumsReturned
207
- include Comparable
208
- extend Creatable
209
-
210
- attr_reader :albums, :limits
211
-
212
- def self.lazy_type_mapping
213
- {
214
- 'albums' => Creatable::CreateMap.new(DetailsAlbum, true),
215
- 'limits' => Creatable::CreateMap.new(List::ListLimitsReturned)
216
- }
217
- end
218
-
219
- def initialize(albums, limits)
220
- @albums = albums
221
- @limits = limits
222
- end
223
- end
224
- end
225
- end
226
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'kodi_client/util/comparable'
4
- require 'kodi_client/util/iterable'
5
- require 'kodi_client/util/creatable'
6
- require 'kodi_client/global_types/list_types'
7
-
8
- module KodiClient
9
- module Types
10
- module Favourites
11
-
12
- # Favourite.Type https://kodi.wiki/view/JSON-RPC_API/v12#Favourite.Type
13
- module Type
14
- extend Iterable
15
-
16
- MEDIA = 'media'
17
- WINDOW = 'window'
18
- SCRIPT = 'script'
19
- ANDROID_APP = 'androidapp'
20
- UNKNOWN = 'unknown'
21
- end
22
-
23
- # Favourite.Fields.Favourite https://kodi.wiki/view/JSON-RPC_API/v12#Favourite.Fields.Favourite
24
- module FieldsFavourite
25
- extend Iterable
26
-
27
- WINDOW = 'window'
28
- WINDOW_PARAMETER = 'windowparameter'
29
- THUMBNAIL = 'thumbnail'
30
- PATH = 'path'
31
- end
32
-
33
- # Favourite.Details.Favourite https://kodi.wiki/view/JSON-RPC_API/v12#Favourite.Details.Favourite
34
- class DetailsFavourite
35
- include Comparable
36
- extend Creatable
37
-
38
- attr_reader :path, :thumbnail, :title, :type, :window, :window_parameter
39
-
40
- def initialize(path, thumbnail, title, type, window, window_parameter)
41
- @path = path
42
- @thumbnail = thumbnail
43
- @title = title
44
- @type = type
45
- @window = window
46
- @window_parameter = window_parameter
47
- end
48
- end
49
-
50
- # return type for Favourites.GetFavourites
51
- class GetFavouriteReturned
52
- include Comparable
53
- extend Creatable
54
-
55
- attr_reader :favourites, :limits
56
-
57
- type_mapping ['favourites', DetailsFavourite, true], ['limits', Types::List::ListLimitsReturned]
58
-
59
- def initialize(favourites, limits)
60
- @favourites = favourites
61
- @limits = limits
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'kodi_client/util/comparable'
4
- require 'kodi_client/util/iterable'
5
- require 'kodi_client/util/creatable'
6
- require 'kodi_client/global_types/list_types'
7
-
8
- module KodiClient
9
- module Types
10
- module Files
11
-
12
- # Files.Media https://kodi.wiki/view/JSON-RPC_API/v12#Files.Media
13
- module Media
14
- extend Iterable
15
-
16
- VIDEO = 'video'
17
- MUSIC = 'music'
18
- PICTURES = 'pictures'
19
- FILES = 'files'
20
- PROGRAMS = 'programs'
21
- end
22
-
23
- # return value for GetDirectory
24
- class GetDirectoryReturned
25
- include Comparable
26
- extend Creatable
27
-
28
- attr_reader :files, :limits
29
-
30
- type_mapping ['files', List::ListItemFile, true], ['limits', List::ListLimitsReturned]
31
-
32
- def initialize(files, limits)
33
- @files = files
34
- @limits = limits
35
- end
36
- end
37
-
38
- # return value for GetSources
39
- class GetSourcesReturned
40
- include Comparable
41
- extend Creatable
42
-
43
- attr_reader :sources, :limits
44
-
45
- type_mapping ['sources', List::FileLabel, true], ['limits', List::ListLimitsReturned]
46
-
47
- def initialize(sources, limits)
48
- @sources = sources
49
- @limits = limits
50
- end
51
- end
52
-
53
- # return value for GetPrepareDownload
54
- class PrepareDownloadReturned
55
- include Comparable
56
- extend Creatable
57
-
58
- attr_reader :details, :mode, :protocol
59
-
60
- def initialize(details, mode, protocol)
61
- @details = details
62
- @mode = mode
63
- @protocol = protocol
64
- end
65
- end
66
- end
67
- end
68
- end
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'kodi_client/util/comparable'
4
- require 'kodi_client/util/iterable'
5
- require 'kodi_client/util/creatable'
6
-
7
- module KodiClient
8
- module Types
9
- module Global
10
-
11
- # Global.Toggle https://kodi.wiki/view/JSON-RPC_API/v12#Global.Toggle
12
- module Toggle
13
- extend Iterable
14
-
15
- TOGGLE = 'toggle'
16
- TRUE = true
17
- FALSE = false
18
- end
19
-
20
- # rotate for clockwise and counter clockwise
21
- module Rotate
22
- extend Iterable
23
-
24
- CLOCKWISE = 'clockwise'
25
- COUNTER_CLOCKWISE = 'counterclockwise'
26
- end
27
-
28
- # direction for left, right, up, down
29
- module Direction
30
- extend Iterable
31
-
32
- LEFT = 'left'
33
- RIGHT = 'right'
34
- UP = 'up'
35
- DOWN = 'down'
36
- end
37
-
38
- # enum for prev/next
39
- module NextPrev
40
- extend Iterable
41
-
42
- NEXT = 'next'
43
- PREV = 'previous'
44
- ON = 'on'
45
- OFF = 'off'
46
- end
47
-
48
- # Global.IncrementDecrement https://kodi.wiki/view/JSON-RPC_API/v12#Global.IncrementDecrement
49
- module IncrementDecrement
50
- extend Iterable
51
-
52
- INCREMENT = 'increment'
53
- DECREMENT = 'decrement'
54
- end
55
-
56
- # id/label type
57
- class IdLabel
58
- include Comparable
59
- extend Creatable
60
-
61
- attr_reader :id, :label
62
-
63
- def initialize(id, label)
64
- @id = id
65
- @label = label
66
- end
67
- end
68
-
69
- # id/name type
70
- class IdName
71
- include Comparable
72
- extend Creatable
73
-
74
- attr_reader :id, :name
75
-
76
- def initialize(id, name)
77
- @id = id
78
- @name = name
79
- end
80
- end
81
-
82
- # Global.Time https://kodi.wiki/view/JSON-RPC_API/v12#Global.Time
83
- class GlobalTime
84
- include Comparable
85
- extend Creatable
86
-
87
- attr_reader :hours, :minutes, :seconds, :milliseconds
88
-
89
- def initialize(hours, minutes, seconds, milliseconds)
90
- @hours = hours
91
- @minutes = minutes
92
- @seconds = seconds
93
- @milliseconds = milliseconds
94
- end
95
- end
96
-
97
- # available Password Encryptions
98
- module PasswordEncryption
99
- extend Iterable
100
-
101
- NONE = 'none'
102
- MD5 = 'md5'
103
- end
104
- end
105
- end
106
- end