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,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KodiClient
4
-
5
- # creates a create and create_list method by hash
6
- module Creatable
7
-
8
- def fields_to_map(fields)
9
- @fields_to_map = fields
10
- end
11
-
12
- def type_mapping(*args)
13
- return if args.nil?
14
-
15
- @type_mapping = {}
16
- args.map { |it| @type_mapping[it[0]] = Creatable::CreateMap.new(it[1], it[2].nil? ? false : it[2]) }
17
- end
18
-
19
- def lazy_type_mapping
20
- {}
21
- end
22
-
23
- def create_list(hash)
24
- hash.nil? ? [] : hash.map { |it| create(it) }.reject(&:nil?)
25
- end
26
-
27
- def create(hash)
28
- return nil if hash.nil?
29
-
30
- if @fields_to_map.nil? || @fields_to_map.empty?
31
- fields = @kodi_fields
32
- return nil if @kodi_fields.none? { |it| !hash[it.to_s.gsub('_', '')].nil? }
33
- else
34
- fields = @fields_to_map
35
- end
36
-
37
- mapping = @type_mapping.nil? ? lazy_type_mapping : @type_mapping
38
- args = fields.map do |it|
39
- field = it.to_s.gsub('_', '')
40
- Creatable.extract_field_from_hash(field, hash, mapping)
41
- end
42
-
43
- new(*args)
44
- end
45
-
46
- def self.hash_to_arr(hash, fields, mapping = {})
47
- return nil if hash.nil?
48
-
49
- fields.map do |it|
50
- field = it.to_s.gsub('_', '')
51
- extract_field_from_hash(field, hash, mapping)
52
- end
53
- end
54
-
55
- def hash_to_arr(hash, fields)
56
- Creatable.hash_to_arr(hash, fields, @type_mapping.nil? ? {} : @type_mapping)
57
- end
58
-
59
- def self.extract_field_from_hash(field, hash, mapping)
60
- map = mapping[field]
61
- return nil if hash[field].nil? && map.nil?
62
-
63
- return hash[field] if map.nil?
64
-
65
- return map.type.create_list(hash[field]) if map.is_list
66
-
67
- map.type.create(hash[field])
68
- end
69
-
70
- def attr_accessor(*args)
71
- attr_reader(*args)
72
- attr_writer(*args)
73
- end
74
-
75
- def attr_reader(*args)
76
- @kodi_fields = args.map { |it| it.to_s.gsub('_', '') }
77
-
78
- args.each do |it|
79
- inst_variable_name = "@#{it}".to_sym
80
- define_method it do
81
- instance_variable_get(inst_variable_name)
82
- end
83
- end
84
- end
85
-
86
- def attr_writer(*args)
87
- args.each do |it|
88
- inst_variable_name = "@#{it}".to_sym
89
- define_method "#{it}=" do |new_value|
90
- instance_variable_set(inst_variable_name, new_value)
91
- end
92
- end
93
- end
94
-
95
- # mapping class with the type and if it is a list field or not
96
- class CreateMap
97
-
98
- attr_reader :type, :is_list
99
-
100
- def initialize(type, is_list = false)
101
- @type = type
102
- @is_list = is_list
103
- end
104
- end
105
- end
106
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KodiClient
4
-
5
- # offers iterable methods
6
- module Iterable
7
- def all_properties
8
- constants.map { |it| const_get(it) }.sort!
9
- end
10
- end
11
- end