[Mediacontroller] Added refreshing the list of handles
[platform/core/api/webapi-plugins.git] / src / mediacontroller / mediacontroller_utils.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16
17 #ifndef MEDIACONTROLLER_MEDIACONTROLLER_UTILS_H_
18 #define MEDIACONTROLLER_MEDIACONTROLLER_UTILS_H_
19
20 #include <media_controller_type.h>
21 #include <functional>
22 #include <map>
23 #include <string>
24
25 #include "common/platform_enum.h"
26 #include "common/platform_result.h"
27
28 namespace extension {
29 namespace mediacontroller {
30
31 typedef std::function<void(picojson::value*)> JsonCallback;
32 typedef std::map<std::string, mc_playlist_h> PlaylistHandleMap;
33
34 namespace privileges {
35
36 extern const char* kPrivilegeMediaControllerClient;
37 extern const char* kPrivilegeMediaControllerServer;
38
39 }  // privileges
40
41 namespace attributes {
42
43 extern const char* kAbility;
44 extern const char* kAbilityType;
45 extern const char* kAction;
46 extern const char* kAgeRating;
47 extern const char* kCallbackId;
48 extern const char* kCategory;
49 extern const char* kClientName;
50 extern const char* kCode;
51 extern const char* kCommand;
52 extern const char* kContentType;
53 extern const char* kData;
54 extern const char* kDisplayMode;
55 extern const char* kDisplayRotation;
56 extern const char* kDisplayRotationAbility;
57 extern const char* kEnabled;
58 extern const char* kEventData;
59 extern const char* kEventName;
60 extern const char* kExtraData;
61 extern const char* kIconURI;
62 extern const char* kIndex;
63 extern const char* kKeyword;
64 extern const char* kListenerId;
65 extern const char* kMetadata;
66 extern const char* kMode;
67 extern const char* kName;
68 extern const char* kPlaylistName;
69 extern const char* kPosition;
70 extern const char* kRating;
71 extern const char* kRepeatMode;
72 extern const char* kRepeatState;
73 extern const char* kReply;
74 extern const char* kReplyListener;
75 extern const char* kRequest;
76 extern const char* kRequestId;
77 extern const char* kResult;
78 extern const char* kResultCode;
79 extern const char* kServerName;
80 extern const char* kShuffleMode;
81 extern const char* kState;
82 extern const char* kSupport;
83 extern const char* kType;
84 extern const char* kValue;
85 extern const char* kSeason;
86 extern const char* kSeasonNumber;
87 extern const char* kSeasonTitle;
88 extern const char* kEpisode;
89 extern const char* kEpisodeNumber;
90 extern const char* kEpisodeTitle;
91 extern const char* kResolution;
92 extern const char* kResolutionWidth;
93 extern const char* kResolutionHeight;
94
95 }  // attributes
96
97 namespace types {
98
99 common::PlatformResult ConvertPlaybackState(mc_playback_h playback_h, std::string* state);
100 common::PlatformResult ConvertContentAgeRating(mc_playback_h playback_h, std::string* state);
101 common::PlatformResult ConvertPlaybackPosition(mc_playback_h playback_h, double* position);
102 common::PlatformResult ConvertMetadata(mc_metadata_h metadata_h, picojson::object* metadata);
103 common::PlatformResult ConvertContentType(mc_playback_h playback_h, std::string* contentType);
104 common::PlatformResult ConvertPlaybackAbility(mc_playback_ability_h ability_h,
105                                               const std::string& action, std::string* ability_str);
106
107 extern const common::PlatformEnum<mc_server_state_e> MediaControllerServerStateEnum;
108 extern const common::PlatformEnum<mc_playback_states_e> MediaControllerPlaybackStateEnum;
109 extern const common::PlatformEnum<mc_playback_action_e> MediaControllerPlaybackActionEnum;
110 extern const common::PlatformEnum<mc_meta_e> MediaControllerMetadataAttributeEnum;
111 extern const common::PlatformEnum<mc_repeat_mode_e> MediaControllerRepeatModeEnum;
112 extern const common::PlatformEnum<mc_content_age_rating_e> MediaControllerContentAgeRatingEnum;
113 extern const common::PlatformEnum<mc_content_type_e> MediaControllerContentTypeEnum;
114 extern const common::PlatformEnum<mc_search_category_e> MediaControllerSearchCategoryEnum;
115 extern const common::PlatformEnum<mc_ability_support_e> MediaControllerAbilitySupportEnum;
116 extern const common::PlatformEnum<mc_subscription_type_e> MediaControllerSubscriptionTypeEnum;
117 extern const common::PlatformEnum<mc_ability_e> MediaControllerSimpleAbilityEnum;
118 extern const common::PlatformEnum<mc_display_mode_e> MediaControllerDisplayModeEnum;
119 extern const common::PlatformEnum<mc_display_rotation_e> MediaControllerDisplayRotationEnum;
120
121 }  // namespace types
122
123 namespace utils {
124 common::PlatformResult GetAllPlaylists(const std::string& app_id, picojson::array* playlists);
125 common::PlatformResult GetAllPlaylistsHandles(const std::string& app_id,
126                                               std::map<std::string, mc_playlist_h>* playlists);
127 picojson::value CreatePlaylistsJSON(const std::string& app_id,
128                                     const std::map<std::string, mc_playlist_h>& playlists);
129 void UpdatePlaylistHandleMap(const std::string& app_id,
130                              const std::map<std::string, mc_playlist_h>& to_update,
131                              std::map<std::string, PlaylistHandleMap>& server_playlist_map);
132 common::PlatformResult GetPlaylist(const std::string& app_id, const std::string& playlist_name,
133                                    picojson::object* playlist_obj, mc_playlist_h* handle = nullptr);
134 common::ErrorCode ConvertMediaControllerError(int e);
135 common::PlatformResult MediaControllerPlaylistGetItems(const mc_playlist_h playlist_handle,
136                                                        picojson::array* items);
137
138 bool isMetadataAttributeEncodable(const std::string& name);
139 common::PlatformResult EncodeMetadata(const picojson::object& to_encode, picojson::object* encoded);
140 common::PlatformResult DecodeMetadata(const picojson::value& to_decode, picojson::object* decoded);
141 }  // namespace utils
142
143 }  // namespace mediacontroller
144 }  // namespace extension
145
146 #endif  // MEDIACONTROLLER_MEDIACONTROLLER_UTILS_H_