kodi_client 0.6.0 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/kodi_client.gemspec +1 -1
  4. data/lib/kodi_client/extensions/chainable.rb +71 -0
  5. data/lib/kodi_client/extensions/comparable.rb +29 -0
  6. data/lib/kodi_client/extensions/creatable.rb +137 -0
  7. data/lib/kodi_client/extensions/iterable.rb +14 -0
  8. data/lib/kodi_client/kodi_error.rb +14 -0
  9. data/lib/kodi_client/kodi_method.rb +34 -0
  10. data/lib/kodi_client/{options.rb → kodi_options.rb} +1 -1
  11. data/lib/kodi_client/kodi_request.rb +16 -0
  12. data/lib/kodi_client/kodi_response.rb +21 -0
  13. data/lib/kodi_client/{method → methods}/addons.rb +9 -24
  14. data/lib/kodi_client/{method → methods}/application.rb +2 -5
  15. data/lib/kodi_client/methods/audio_library.rb +46 -0
  16. data/lib/kodi_client/{method → methods}/favourites.rb +2 -5
  17. data/lib/kodi_client/{method → methods}/files.rb +2 -6
  18. data/lib/kodi_client/{method → methods}/gui.rb +2 -5
  19. data/lib/kodi_client/{method → methods}/input.rb +2 -6
  20. data/lib/kodi_client/{method → methods}/player.rb +2 -7
  21. data/lib/kodi_client/{method → methods}/profiles.rb +2 -5
  22. data/lib/kodi_client/{method → methods}/system.rb +2 -6
  23. data/lib/kodi_client/types/addons/addon_content_type.rb +18 -0
  24. data/lib/kodi_client/types/addons/addon_dependency_type.rb +21 -0
  25. data/lib/kodi_client/types/addons/addon_details_type.rb +44 -0
  26. data/lib/kodi_client/types/addons/addon_extra_info_type.rb +20 -0
  27. data/lib/kodi_client/types/addons/addon_fields_type.rb +28 -0
  28. data/lib/kodi_client/types/addons/addon_types_type.rb +48 -0
  29. data/lib/kodi_client/types/addons/get_addon_returned_type.rb +21 -0
  30. data/lib/kodi_client/types/addons/get_addons_returned_type.rb +22 -0
  31. data/lib/kodi_client/types/application/property_name_type.rb +19 -0
  32. data/lib/kodi_client/types/application/property_value_type.rb +24 -0
  33. data/lib/kodi_client/types/application/version_type.rb +22 -0
  34. data/lib/kodi_client/types/audio/audio_album_release_type_type.rb +15 -0
  35. data/lib/kodi_client/types/audio/audio_contributor_type.rb +22 -0
  36. data/lib/kodi_client/types/audio/audio_details_base_type.rb +31 -0
  37. data/lib/kodi_client/types/audio/audio_details_media_type.rb +45 -0
  38. data/lib/kodi_client/types/audio/audio_fields_album_type.rb +51 -0
  39. data/lib/kodi_client/types/audio/details_album_type.rb +58 -0
  40. data/lib/kodi_client/types/audio/genre_type.rb +20 -0
  41. data/lib/kodi_client/types/audio/get_albums_returned_type.rb +22 -0
  42. data/lib/kodi_client/types/favourites/details_favourite_type.rb +24 -0
  43. data/lib/kodi_client/types/favourites/fields_favourite_type.rb +17 -0
  44. data/lib/kodi_client/types/favourites/get_favourite_returned_type.rb +22 -0
  45. data/lib/kodi_client/types/favourites/type_type.rb +18 -0
  46. data/lib/kodi_client/types/files/file_label_type.rb +20 -0
  47. data/lib/kodi_client/types/files/get_directory_returned_type.rb +22 -0
  48. data/lib/kodi_client/types/files/get_sources_returned_type.rb +22 -0
  49. data/lib/kodi_client/types/files/media_type.rb +18 -0
  50. data/lib/kodi_client/types/files/prepare_download_returned_type.rb +21 -0
  51. data/lib/kodi_client/types/global/direction_type.rb +17 -0
  52. data/lib/kodi_client/types/global/global_time_type.rb +22 -0
  53. data/lib/kodi_client/types/global/id_label_type.rb +20 -0
  54. data/lib/kodi_client/types/global/id_name_type.rb +20 -0
  55. data/lib/kodi_client/types/global/increment_decrement_type.rb +15 -0
  56. data/lib/kodi_client/types/global/next_prev_type.rb +17 -0
  57. data/lib/kodi_client/types/global/password_encryption_type.rb +16 -0
  58. data/lib/kodi_client/types/global/rotate_type.rb +15 -0
  59. data/lib/kodi_client/types/global/toggle_type.rb +16 -0
  60. data/lib/kodi_client/types/gui/gui_window_type.rb +124 -0
  61. data/lib/kodi_client/types/gui/property_name_type.rb +18 -0
  62. data/lib/kodi_client/types/gui/property_value_type.rb +26 -0
  63. data/lib/kodi_client/types/gui/stereoscopy_mode_type.rb +31 -0
  64. data/lib/kodi_client/types/input/input_action_type.rb +212 -0
  65. data/lib/kodi_client/{global_types/item_types.rb → types/items/item_details_base_type.rb} +5 -3
  66. data/lib/kodi_client/types/list/list_field_files_type.rb +83 -0
  67. data/lib/kodi_client/types/list/list_fields_all_type.rb +96 -0
  68. data/lib/kodi_client/types/list/list_item_all_type.rb +73 -0
  69. data/lib/kodi_client/types/list/list_item_base_type.rb +138 -0
  70. data/lib/kodi_client/types/list/list_item_file_type.rb +68 -0
  71. data/lib/kodi_client/types/list/list_limits_returned_type.rb +23 -0
  72. data/lib/kodi_client/types/list/list_limits_type.rb +19 -0
  73. data/lib/kodi_client/types/list/list_sort_method_type.rb +54 -0
  74. data/lib/kodi_client/types/list/list_sort_type.rb +22 -0
  75. data/lib/kodi_client/types/list/sort_order_type.rb +15 -0
  76. data/lib/kodi_client/types/media/media_artwork_type.rb +22 -0
  77. data/lib/kodi_client/types/media/media_details_base_type.rb +28 -0
  78. data/lib/kodi_client/types/media/media_type_type.rb +16 -0
  79. data/lib/kodi_client/types/player/audio_stream_type.rb +29 -0
  80. data/lib/kodi_client/types/player/player_position_time_type.rb +22 -0
  81. data/lib/kodi_client/types/player/player_repeat_type.rb +17 -0
  82. data/lib/kodi_client/types/player/player_speed_type.rb +26 -0
  83. data/lib/kodi_client/types/player/player_type.rb +24 -0
  84. data/lib/kodi_client/types/player/player_type_type.rb +16 -0
  85. data/lib/kodi_client/types/player/player_view_mode_type.rb +23 -0
  86. data/lib/kodi_client/types/player/player_visibility_type.rb +16 -0
  87. data/lib/kodi_client/types/player/property_name_type.rb +38 -0
  88. data/lib/kodi_client/types/player/property_value_type.rb +60 -0
  89. data/lib/kodi_client/types/player/seek_jump_type.rb +17 -0
  90. data/lib/kodi_client/types/player/seek_returned_type.rb +23 -0
  91. data/lib/kodi_client/types/player/subtitle_type.rb +24 -0
  92. data/lib/kodi_client/types/player/video_stream_type.rb +26 -0
  93. data/lib/kodi_client/types/player/view_mode_type.rb +22 -0
  94. data/lib/kodi_client/types/player/zoom_type.rb +15 -0
  95. data/lib/kodi_client/types/profiles/details_profile_type.rb +24 -0
  96. data/lib/kodi_client/types/profiles/fields_profile_type.rb +15 -0
  97. data/lib/kodi_client/types/profiles/get_profiles_returned_type.rb +22 -0
  98. data/lib/kodi_client/types/profiles/profile_password_type.rb +20 -0
  99. data/lib/kodi_client/{global_types/pvr_type.rb → types/pvr/channel_type_type.rb} +2 -6
  100. data/lib/kodi_client/types/system/property_name_type.rb +17 -0
  101. data/lib/kodi_client/{global_types/system_types.rb → types/system/property_value_type.rb} +2 -16
  102. data/lib/kodi_client/types/video/stream_details_type.rb +24 -0
  103. data/lib/kodi_client/types/video/video_cast_type.rb +22 -0
  104. data/lib/kodi_client/types/video/video_details_base_type.rb +29 -0
  105. data/lib/kodi_client/types/video/video_details_file_type.rb +37 -0
  106. data/lib/kodi_client/types/video/video_details_item_type.rb +32 -0
  107. data/lib/kodi_client/types/video/video_details_media_type.rb +28 -0
  108. data/lib/kodi_client/types/video/video_resume_type.rb +20 -0
  109. data/lib/kodi_client.rb +137 -23
  110. metadata +107 -33
  111. data/lib/kodi_client/Chainable.rb +0 -49
  112. data/lib/kodi_client/global_types/addon_types.rb +0 -194
  113. data/lib/kodi_client/global_types/application_types.rb +0 -61
  114. data/lib/kodi_client/global_types/audio_types.rb +0 -88
  115. data/lib/kodi_client/global_types/favourites_types.rb +0 -70
  116. data/lib/kodi_client/global_types/files_types.rb +0 -82
  117. data/lib/kodi_client/global_types/global_types.rb +0 -106
  118. data/lib/kodi_client/global_types/gui_types.rb +0 -191
  119. data/lib/kodi_client/global_types/input_types.rb +0 -216
  120. data/lib/kodi_client/global_types/list_types.rb +0 -569
  121. data/lib/kodi_client/global_types/media_types.rb +0 -55
  122. data/lib/kodi_client/global_types/player_type.rb +0 -319
  123. data/lib/kodi_client/global_types/profiles_types.rb +0 -80
  124. data/lib/kodi_client/global_types/video_types.rb +0 -145
  125. data/lib/kodi_client/kodi_module.rb +0 -87
  126. data/lib/kodi_client/util/comparable.rb +0 -20
  127. data/lib/kodi_client/util/creatable.rb +0 -52
  128. data/lib/kodi_client/util/iterable.rb +0 -11
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Files
6
+ # return value for GetSources
7
+ class GetSourcesReturned
8
+ include Extensions::Comparable
9
+ extend Extensions::Creatable
10
+
11
+ attr_reader :sources, :limits
12
+
13
+ type_mapping ['sources', Files::FileLabel, true], ['limits', List::ListLimitsReturned]
14
+
15
+ def initialize(sources, limits)
16
+ @sources = sources
17
+ @limits = limits
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Files
6
+ # Files.Media https://kodi.wiki/view/JSON-RPC_API/v12#Files.Media
7
+ module Media
8
+ extend Extensions::Iterable
9
+
10
+ VIDEO = 'video'
11
+ MUSIC = 'music'
12
+ PICTURES = 'pictures'
13
+ FILES = 'files'
14
+ PROGRAMS = 'programs'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Files
6
+ # return value for GetPrepareDownload
7
+ class PrepareDownloadReturned
8
+ include Extensions::Comparable
9
+ extend Extensions::Creatable
10
+
11
+ attr_reader :details, :mode, :protocol
12
+
13
+ def initialize(details, mode, protocol)
14
+ @details = details
15
+ @mode = mode
16
+ @protocol = protocol
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # direction for left, right, up, down
7
+ module Direction
8
+ extend Extensions::Iterable
9
+
10
+ LEFT = 'left'
11
+ RIGHT = 'right'
12
+ UP = 'up'
13
+ DOWN = 'down'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # Global.Time https://kodi.wiki/view/JSON-RPC_API/v12#Global.Time
7
+ class GlobalTime
8
+ include Extensions::Comparable
9
+ extend Extensions::Creatable
10
+
11
+ attr_reader :hours, :minutes, :seconds, :milliseconds
12
+
13
+ def initialize(hours, minutes, seconds, milliseconds)
14
+ @hours = hours
15
+ @minutes = minutes
16
+ @seconds = seconds
17
+ @milliseconds = milliseconds
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # id/label type
7
+ class IdLabel
8
+ include Extensions::Comparable
9
+ extend Extensions::Creatable
10
+
11
+ attr_reader :id, :label
12
+
13
+ def initialize(id, label)
14
+ @id = id
15
+ @label = label
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # id/name type
7
+ class IdName
8
+ include Extensions::Comparable
9
+ extend Extensions::Creatable
10
+
11
+ attr_reader :id, :name
12
+
13
+ def initialize(id, name)
14
+ @id = id
15
+ @name = name
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # Global.IncrementDecrement https://kodi.wiki/view/JSON-RPC_API/v12#Global.IncrementDecrement
7
+ module IncrementDecrement
8
+ extend Extensions::Iterable
9
+
10
+ INCREMENT = 'increment'
11
+ DECREMENT = 'decrement'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # enum for prev/next
7
+ module NextPrev
8
+ extend Extensions::Iterable
9
+
10
+ NEXT = 'next'
11
+ PREV = 'previous'
12
+ ON = 'on'
13
+ OFF = 'off'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # available Password Encryptions
7
+ module PasswordEncryption
8
+ extend Extensions::Iterable
9
+
10
+ NONE = 'none'
11
+ MD5 = 'md5'
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # rotate for clockwise and counter clockwise
7
+ module Rotate
8
+ extend Extensions::Iterable
9
+
10
+ CLOCKWISE = 'clockwise'
11
+ COUNTER_CLOCKWISE = 'counterclockwise'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Global
6
+ # Global.Toggle https://kodi.wiki/view/JSON-RPC_API/v12#Global.Toggle
7
+ module Toggle
8
+ extend Extensions::Iterable
9
+
10
+ TOGGLE = 'toggle'
11
+ TRUE = true
12
+ FALSE = false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module GUI
6
+ # GUI.Window https://kodi.wiki/view/JSON-RPC_API/v12#GUI.Window
7
+ module GUIWindow
8
+ extend Extensions::Iterable
9
+
10
+ ACCESS_POINTS = 'accesspoints'
11
+ ADDON = 'addon'
12
+ ADDON_BROWSER = 'addonbrowser'
13
+ ADDON_INFORMATION = 'addoninformation'
14
+ ADDON_SETTINGS = 'addonsettings'
15
+ APPEARANCE_SETTINGS = 'appearancesettings'
16
+ AUDIO_DSPM_ANAGER = 'audiodspmanager'
17
+ BUSY_DIALOG = 'busydialog'
18
+ CONTENTS_ETTINGS = 'contentsettings'
19
+ CONTEXT_MENU = 'contextmenu'
20
+ EVENT_LOG = 'eventlog'
21
+ EXTENDED_PROGRESS_DIALOG = 'extendedprogressdialog'
22
+ FAVOURITES = 'favourite'
23
+ FILE_BROWSER = 'filebrowser'
24
+ FILE_MANAGER = 'filemanager'
25
+ FULLSCREEN_INFO = 'fullscreeninfo'
26
+ FULLSCREEN_LIVE_TV = 'fullscreenlivetv'
27
+ FULLSCREEN_RADIO = 'fullscreenradio'
28
+ FULLSCREEN_VIDEO = 'fullscreenvideo'
29
+ GAME_CONTROLLERS = 'gamecontrollers'
30
+ GAMEPAD_INPUT = 'gamepadinput'
31
+ HOME = 'home'
32
+ INTERFACE_SETTINGS = 'interfacesettings'
33
+ LOCK_SETTINGS = 'locksettings'
34
+ LOGIN_SCREEN = 'loginscreen'
35
+ MEDIA_FILTER = 'mediafilter'
36
+ MEDIA_SETTINGS = 'mediasettings'
37
+ MEDIA_SOURCE = 'mediasource'
38
+ MOVIE_INFORMATION = 'movieinformation'
39
+ MUSIC = 'music'
40
+ MUSIC_INFORMATION = 'musicinformation'
41
+ MUSIC_OSD = 'musicosd'
42
+ MUSIC_PLAYLIST = 'musicplaylist'
43
+ MUSIC_PLAYLIST_EDITOR = 'musicplaylisteditor'
44
+ NETWORK_SETUP = 'networksetup'
45
+ NOTIFICATION = 'notification'
46
+ NUMERIC_INPUT = 'numericinput'
47
+ OK_DIALOG = 'okdialog'
48
+ OSD_AUDIO_DSP_SETTINGS = 'osdaudiodspsettings'
49
+ OSD_AUDIO_SETTINGS = 'osdaudiosettings'
50
+ OSD_CMS_SETTINGS = 'osdcmssettings'
51
+ OSD_VIDEO_SETTINGS = 'osdvideosettings'
52
+ PERIPHERAL_SETTINGS = 'peripheralsettings'
53
+ PICTURE_INFO = 'pictureinfo'
54
+ PICTURES = 'pictures'
55
+ PLAYER_CONTROLS = 'playercontrols'
56
+ PLAYER_PROCESS_INFO = 'playerprocessinfo'
57
+ PLAYER_SETTINGS = 'playersettings'
58
+ PROFILES = 'profiles'
59
+ PROFILE_SETTINGS = 'profilesettings'
60
+ PROGRAMS = 'programs'
61
+ PROGRESS_DIALOG = 'progressdialog'
62
+ PVR_CHANNEL_MANAGER = 'pvrchannelmanager'
63
+ PVR_CHANNEL_SCAN = 'pvrchannelscan'
64
+ PVR_GROUP_MANAGER = 'pvrgroupmanager'
65
+ PVR_GUIDE_INFO = 'pvrguideinfo'
66
+ PVR_GUIDE_SEARCH = 'pvrguidesearch'
67
+ PVR_OSD_CHANNELS = 'pvrosdchannels'
68
+ PVR_OSD_GUIDE = 'pvrosdguide'
69
+ PVR_OSD_TELETEXT = 'pvrosdteletext'
70
+ PVR_RADIO_RDS_INFO = 'pvrradiordsinfo'
71
+ PVR_RECORDING_INFO = 'pvrrecordinginfo'
72
+ PVR_SETTINGS = 'pvrsettings'
73
+ PVR_TIMER_SETTING = 'pvrtimersetting'
74
+ PVR_UPDATE_PROGRESS = 'pvrupdateprogress'
75
+ RADIO_CHANNELS = 'radiochannels'
76
+ RADIO_GUIDE = 'radioguide'
77
+ RADIO_RECORDINGS = 'radiorecordings'
78
+ RADIO_SEARCH = 'radiosearch'
79
+ RADIO_TIMER_RULES = 'radiotimerrules'
80
+ RADIO_TIMERS = 'radiotimers'
81
+ SCREEN_CALIBRATION = 'screencalibration'
82
+ SCREENSAVER = 'screensaver'
83
+ SEEKBAR = 'seekbar'
84
+ SELECT_DIALOG = 'selectdialog'
85
+ SERVICE_SETTINGS = 'servicesettings'
86
+ SETTINGS = 'settings'
87
+ SHUT_DOWN_MENU = 'shutdownmenu'
88
+ SKIN_SETTINGS = 'skinsettings'
89
+ SLIDER_DIALOG = 'sliderdialog'
90
+ SLIDESHOW = 'slideshow'
91
+ SMART_PLAYLIST_EDITOR = 'smartplaylisteditor'
92
+ SMART_PLAYLIST_RULE = 'smartplaylistrule'
93
+ SONG_INFORMATION = 'songinformation'
94
+ STARTUP = 'startup'
95
+ START_WINDOW = 'startwindow'
96
+ SUBMENU = 'submenu'
97
+ SUBTITLE_SEARCH = 'subtitlesearch'
98
+ SYSTEM_INFO = 'systeminfo'
99
+ SYSTEM_SETTINGS = 'systemsettings'
100
+ TELETEXT = 'teletext'
101
+ TEST_PATTERN = 'testpattern'
102
+ TEXT_VIEWER = 'textviewer'
103
+ TV_CHANNELS = 'tvchannels'
104
+ TV_GUIDE = 'tvguide'
105
+ TV_RECORDINGS = 'tvrecordings'
106
+ TV_SEARCH = 'tvsearch'
107
+ TV_TIMER_RULES = 'tvtimerrules'
108
+ TV_TIMERS = 'tvtimers'
109
+ VIDEO_BOOKMARKS = 'videobookmarks'
110
+ VIDEO_MENU = 'videomenu'
111
+ VIDEO_OSD = 'videoosd'
112
+ VIDEO_PLAYLIST = 'videoplaylist'
113
+ VIDEOS = 'videos'
114
+ VIDEO_TIME_SEEK = 'videotimeseek'
115
+ VIRTUAL_KEYBOARD = 'virtualkeyboard'
116
+ VISUALISATION = 'visualisation'
117
+ VISUALISATION_PRESET_LIST = 'visualisationpresetlist'
118
+ VOLUME_BAR = 'volumebar'
119
+ WEATHER = 'weather'
120
+ YES_NO_DIALOG = 'yesnodialog'
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module GUI
6
+ # GUI.Property.Name https://kodi.wiki/view/JSON-RPC_API/v12#GUI.Property.Name
7
+ module PropertyName
8
+ extend Extensions::Iterable
9
+
10
+ CURRENT_CONTROL = 'currentcontrol'
11
+ CURRENT_WINDOW = 'currentwindow'
12
+ FULLSCREEN = 'fullscreen'
13
+ SKIN = 'skin'
14
+ STEREOSCOPIC_MODE = 'stereoscopicmode'
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module GUI
6
+ # GUI.Property.Value https://kodi.wiki/view/JSON-RPC_API/v12#GUI.Property.Value
7
+ class PropertyValue
8
+ include Extensions::Comparable
9
+ extend Extensions::Creatable
10
+
11
+ attr_reader :current_control, :current_window, :fullscreen, :skin, :stereoscopic_mode
12
+
13
+ type_mapping ['currentcontrol', Global::IdLabel], ['currentwindow', Global::IdLabel],
14
+ ['skin', Global::IdName], ['stereoscopicmode', StereoscopyMode]
15
+
16
+ def initialize(current_control, current_window, fullscreen, skin, stereoscopic_mode)
17
+ @current_control = current_control
18
+ @current_window = current_window
19
+ @fullscreen = fullscreen
20
+ @skin = skin
21
+ @stereoscopic_mode = stereoscopic_mode
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module GUI
6
+ # GUI.Stereoscopy.Mode https://kodi.wiki/view/JSON-RPC_API/v12#GUI.Stereoscopy.Mode
7
+ class StereoscopyMode
8
+ include Extensions::Comparable
9
+ include Extensions::Iterable
10
+ extend Extensions::Creatable
11
+
12
+ attr_reader :label, :mode
13
+
14
+ OFF = 'off'
15
+ SPLIT_VERTICAL = 'split_vertical'
16
+ SPLIT_HORIZONTAL = 'split_horizontal'
17
+ ROW_INTERLEAVED = 'row_interleaved'
18
+ HARDWARE_BASED = 'hardware_based'
19
+ ANAGLYPH_CYAN_RED = 'anaglyph_cyan_red'
20
+ ANAGLYPH_GREEN_MAGENTA = 'anaglyph_green_magenta'
21
+ ANAGLYPH_YELLOW_BLUE = 'anaglyph_yellow_blue'
22
+ MONOSCOPIC = 'monoscopic'
23
+
24
+ def initialize(label, mode)
25
+ @label = label
26
+ @mode = mode
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,212 @@
1
+ # frozen_string_literal: true
2
+
3
+ module KodiClient
4
+ module Types
5
+ module Input
6
+ # Input.Action https://kodi.wiki/view/JSON-RPC_API/v12#Input.Action
7
+ module InputAction
8
+ extend Extensions::Iterable
9
+
10
+ ANALOG_FAST_FORWARD = 'analogfastforward'
11
+ ANALOG_MOVE = 'analogmove'
12
+ ANALOG_MOVE_X = 'analogmovex'
13
+ ANALOG_MOVE_Y = 'analogmovey'
14
+ ANALOG_REWIND = 'analogrewind'
15
+ ANALOG_SEEK_BACK = 'analogseekback'
16
+ ANALOG_SEEK_FORWARD = 'analogseekforward'
17
+ ASPECT_RATIO = 'aspectratio'
18
+ AUDIO_DELAY = 'audiodelay'
19
+ AUDIO_DELAY_MINUS = 'audiodelayminus'
20
+ AUDIO_DELAY_PLUS = 'audiodelayplus'
21
+ AUDIO_NEXT_LANGUAGE = 'audionextlanguage'
22
+ AUDIO_TOGGLE_DIGITAL = 'audiotoggledigital'
23
+ BACK = 'back'
24
+ BACKSPACE = 'backspace'
25
+ BIG_STEP_BACK = 'bigstepback'
26
+ BIG_STEP_FORWARD = 'bigstepforward'
27
+ BLUE = 'blue'
28
+ CHANNEL_DOWN = 'channeldown'
29
+ CHANNEL_UP = 'channelup'
30
+ CHAPTER_OR_BIG_STEP_BACK = 'chapterorbigstepback'
31
+ CHAPTER_OR_BIG_STEP_FORWARD = 'chapterorbigstepforward'
32
+ CLOSE = 'close'
33
+ CODEC_INFO = 'codecinfo'
34
+ CONTEXT_MENU = 'contextmenu'
35
+ COPY = 'copy'
36
+ CREATE_BOOKMARK = 'createbookmark'
37
+ CREATE_EPISODE_BOOKMARK = 'createepisodebookmark'
38
+ CURSOR_LEFT = 'cursorleft'
39
+ CURSOR_RIGHT = 'cursorright'
40
+ CYCLE_SUBTITLE = 'cyclesubtitle'
41
+ DECREASE_PAR = 'decreasepar'
42
+ DECREASE_RATING = 'decreaserating'
43
+ DECREASE_VIS_RATING = 'decreasevisrating'
44
+ DELETE = 'delete'
45
+ DOUBLE_CLICK = 'doubleclick'
46
+ DOWN = 'down'
47
+ ENTER = 'enter'
48
+ ERROR = 'error'
49
+ FAST_FORWARD = 'fastforward'
50
+ FILTER = 'filter'
51
+ FILTER_CLEAR = 'filterclear'
52
+ FILTER_SMS2 = 'filtersms2'
53
+ FILTER_SMS3 = 'filtersms3'
54
+ FILTER_SMS4 = 'filtersms4'
55
+ FILTER_SMS5 = 'filtersms5'
56
+ FILTER_SMS6 = 'filtersms6'
57
+ FILTER_SMS7 = 'filtersms7'
58
+ FILTER_SMS8 = 'filtersms8'
59
+ FILTER_SMS9 = 'filtersms9'
60
+ FIRST_PAGE = 'firstpage'
61
+ FULLSCREEN = 'fullscreen'
62
+ GREEN = 'green'
63
+ GUI_PROFILE = 'guiprofile'
64
+ HIGHLIGHT = 'highlight'
65
+ INCREASE_PAR = 'increasepar'
66
+ INCREASE_RATING = 'increaserating'
67
+ INCREASE_VIS_RATING = 'increasevisrating'
68
+ INFO = 'info'
69
+ JUMP_SMS_2 = 'jumpsms2'
70
+ JUMP_SMS_3 = 'jumpsms3'
71
+ JUMP_SMS_4 = 'jumpsms4'
72
+ JUMP_SMS_5 = 'jumpsms5'
73
+ JUMP_SMS_6 = 'jumpsms6'
74
+ JUMP_SMS_7 = 'jumpsms7'
75
+ JUMP_SMS_8 = 'jumpsms8'
76
+ JUMP_SMS_9 = 'jumpsms9'
77
+ LAST_PAGE = 'lastpage'
78
+ LEFT = 'left'
79
+ LEFT_CLICK = 'leftclick'
80
+ LOCK_PRESET = 'lockpreset'
81
+ LONG_CLICK = 'longclick'
82
+ LONG_PRESS = 'longpress'
83
+ MENU = 'menu'
84
+ MIDDLE_CLICK = 'middleclick'
85
+ MOUSE_DRAG = 'mousedrag'
86
+ MOUSE_MOVE = 'mousemove'
87
+ MOVE = 'move'
88
+ MOVE_ITEMD_OWN = 'moveitemdown'
89
+ MOVE_ITEM_UP = 'moveitemup'
90
+ MUTE = 'mute'
91
+ NEXT_CALIBRATION = 'nextcalibration'
92
+ NEXT_CHANNEL_GROUP = 'nextchannelgroup'
93
+ NEXT_LETTER = 'nextletter'
94
+ NEXT_PICTURE = 'nextpicture'
95
+ NEXT_PRESET = 'nextpreset'
96
+ NEXT_RESOLUTION = 'nextresolution'
97
+ NEXT_SCENE = 'nextscene'
98
+ NEXT_STEREO_MODE = 'nextstereomode'
99
+ NEXT_SUBTITLE = 'nextsubtitle'
100
+ NOOP = 'noop'
101
+ NUMBER_0 = 'number0'
102
+ NUMBER_1 = 'number1'
103
+ NUMBER_2 = 'number2'
104
+ NUMBER_3 = 'number3'
105
+ NUMBER_4 = 'number4'
106
+ NUMBER_5 = 'number5'
107
+ NUMBER_6 = 'number6'
108
+ NUMBER_7 = 'number7'
109
+ NUMBER_8 = 'number8'
110
+ NUMBER_9 = 'number9'
111
+ OSD = 'osd'
112
+ PAGEDOWN = 'pagedown'
113
+ PAGEUP = 'pageup'
114
+ PAN_GESTURE = 'pangesture'
115
+ PARENT_DIR = 'parentdir'
116
+ PARENT_FOLDER = 'parentfolder'
117
+ PAUSE = 'pause'
118
+ PLAY = 'play'
119
+ PLAYER_DEBUG = 'playerdebug'
120
+ PLAYER_PROCESS_INFO = 'playerprocessinfo'
121
+ PLAYLIST = 'playlist'
122
+ PLAY_PAUSE = 'playpause'
123
+ PLAY_PVR = 'playpvr'
124
+ PLAY_PVR_RADIO = 'playpvrradio'
125
+ PLAY_PVR_TV = 'playpvrtv'
126
+ PREVIOUS_CHANNEL_GROUP = 'previouschannelgroup'
127
+ PREVIOUS_MENU = 'previousmenu'
128
+ PREVIOUS_PICTURE = 'previouspicture'
129
+ PREVIOUS_PRESET = 'previouspreset'
130
+ PREVIOUS_SCENE = 'previousscene'
131
+ PREVIOUS_STEREO_MODE = 'previousstereomode'
132
+ PREV_LETTER = 'prevletter'
133
+ QUEUE = 'queue'
134
+ RANDOM_PRESET = 'randompreset'
135
+ RECORD = 'record'
136
+ RED = 'red'
137
+ RELOAD_KEYMAPS = 'reloadkeymaps'
138
+ RENAME = 'rename'
139
+ RESET_CALIBRATION = 'resetcalibration'
140
+ REWIND = 'rewind'
141
+ RIGHT = 'right'
142
+ RIGHT_CLICK = 'rightclick'
143
+ ROTATE = 'rotate'
144
+ ROTATE_CCW = 'rotateccw'
145
+ ROTATE_GESTURE = 'rotategesture'
146
+ SCAN_ITEM = 'scanitem'
147
+ SCREENSHOT = 'screenshot'
148
+ SCROLL_DOWN = 'scrolldown'
149
+ SCROLL_UP = 'scrollup'
150
+ SELECT = 'select'
151
+ SET_RATING = 'setrating'
152
+ SETTINGS_LEVEL_CHANGE = 'settingslevelchange'
153
+ SETTINGS_RESET = 'settingsreset'
154
+ SHIFT = 'shift'
155
+ SHOW_PRESET = 'showpreset'
156
+ SHOW_SUBTITLES = 'showsubtitles'
157
+ SHOW_TIME = 'showtime'
158
+ SHOW_TIMER_RULE = 'showtimerrule'
159
+ SHOW_VIDEO_MENU = 'showvideomenu'
160
+ SKIP_NEXT = 'skipnext'
161
+ SKIP_PREVIOUS = 'skipprevious'
162
+ SMALL_STEP_BACK = 'smallstepback'
163
+ STEP_BACK = 'stepback'
164
+ STEP_FORWARD = 'stepforward'
165
+ STEREO_MODE = 'stereomode'
166
+ STEREO_MODE_TO_MONO = 'stereomodetomono'
167
+ STOP = 'stop'
168
+ SUBTITLE_ALIGN = 'subtitlealign'
169
+ SUBTITLE_DELAY = 'subtitledelay'
170
+ SUBTITLE_DELAY_MINUS = 'subtitledelayminus'
171
+ SUBTITLE_DELAY_PLUS = 'subtitledelayplus'
172
+ SUBTITLE_SHIFT_DOWN = 'subtitleshiftdown'
173
+ SUBTITLE_SHIF_TUP = 'subtitleshiftup'
174
+ SWIPE_DOWN = 'swipedown'
175
+ SWIPE_LEFT = 'swipeleft'
176
+ SWIPE_RIGHT = 'swiperight'
177
+ SWIPE_UP = 'swipeup'
178
+ SWITCH_PLAYER = 'switchplayer'
179
+ SYMBOLS = 'symbols'
180
+ TAP = 'tap'
181
+ TOGGLE_COMM_SKIP = 'togglecommskip'
182
+ TOGGLE_FULLSCREEN = 'togglefullscreen'
183
+ TOGGLE_STEREO_MODE = 'togglestereomode'
184
+ TOGGLE_WATCHED = 'togglewatched'
185
+ UP = 'up'
186
+ VERTICAL_SHIFT_DOWN = 'verticalshiftdown'
187
+ VERTICAL_SHIFT_UP = 'verticalshiftup'
188
+ VOL_AMP_DOWN = 'volampdown'
189
+ VOL_AMP_UP = 'volampup'
190
+ VOLUME_AMPLIFICATION = 'volumeamplification'
191
+ VOLUME_DOWN = 'volumedown'
192
+ VOLUME_UP = 'volumeup'
193
+ WHEEL_DOWN = 'wheeldown'
194
+ WHEEL_UP = 'wheelup'
195
+ YELLOW = 'yellow'
196
+ ZOOM_GESTURE = 'zoomgesture'
197
+ ZOOM_IN = 'zoomin'
198
+ ZOOM_LEVEL_1 = 'zoomlevel1'
199
+ ZOOM_LEVEL_2 = 'zoomlevel2'
200
+ ZOOM_LEVEL_3 = 'zoomlevel3'
201
+ ZOOM_LEVEL_4 = 'zoomlevel4'
202
+ ZOOM_LEVEL_5 = 'zoomlevel5'
203
+ ZOOM_LEVEL_6 = 'zoomlevel6'
204
+ ZOOM_LEVEL_7 = 'zoomlevel7'
205
+ ZOOM_LEVEL_8 = 'zoomlevel8'
206
+ ZOOM_LEVEL_9 = 'zoomlevel9'
207
+ ZOOM_NORMAL = 'zoomnormal'
208
+ ZOOM_OUT = 'zoomout'
209
+ end
210
+ end
211
+ end
212
+ end
@@ -3,14 +3,16 @@
3
3
  module KodiClient
4
4
  module Types
5
5
  module Items
6
-
7
6
  # Item.Details.Base https://kodi.wiki/view/JSON-RPC_API/v12#Item.Details.Base
8
7
  module ItemDetailsBase
9
-
10
8
  attr_reader :label
11
9
 
10
+ def item_details_base_mappings
11
+ {}
12
+ end
13
+
12
14
  def item_details_base_by_hash(hash)
13
- item_details_base(hash['label'])
15
+ item_details_base(*Extensions::Creatable.hash_to_arr(hash, %w[label], item_details_base_mappings))
14
16
  end
15
17
 
16
18
  def item_details_base(label)