4 * Copyright (c) 2010 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 #include "ctsvc_internal.h"
22 #include "ctsvc_inotify.h"
23 #include "ctsvc_client_handle.h"
24 #include "ctsvc_client_ipc.h"
26 static int _client_noti_check_read_permission(const char *view_uri)
31 if (STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ADDRESSBOOK, strlen(CTSVC_VIEW_URI_ADDRESSBOOK))
32 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PERSON, strlen(CTSVC_VIEW_URI_PERSON))
33 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_CONTACT, strlen(CTSVC_VIEW_URI_CONTACT))
34 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SIMPLE_CONTACT, strlen(CTSVC_VIEW_URI_SIMPLE_CONTACT))
35 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_GROUP, strlen(CTSVC_VIEW_URI_GROUP))
36 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_MY_PROFILE, strlen(CTSVC_VIEW_URI_MY_PROFILE))
37 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NAME, strlen(CTSVC_VIEW_URI_NAME))
38 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NUMBER, strlen(CTSVC_VIEW_URI_NUMBER))
39 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_EMAIL, strlen(CTSVC_VIEW_URI_EMAIL))
40 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ADDRESS, strlen(CTSVC_VIEW_URI_ADDRESS))
41 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NOTE, strlen(CTSVC_VIEW_URI_NOTE))
42 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_URL, strlen(CTSVC_VIEW_URI_URL))
43 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_EVENT, strlen(CTSVC_VIEW_URI_EVENT))
44 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_IMAGE, strlen(CTSVC_VIEW_URI_IMAGE))
45 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_COMPANY, strlen(CTSVC_VIEW_URI_COMPANY))
46 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_NICKNAME, strlen(CTSVC_VIEW_URI_NICKNAME))
47 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_MESSENGER, strlen(CTSVC_VIEW_URI_MESSENGER))
48 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_EXTENSION, strlen(CTSVC_VIEW_URI_EXTENSION))
49 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PROFILE, strlen(CTSVC_VIEW_URI_PROFILE))
50 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_RELATIONSHIP, strlen(CTSVC_VIEW_URI_RELATIONSHIP))
51 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ACTIVITY, strlen(CTSVC_VIEW_URI_ACTIVITY))
52 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_ACTIVITY_PHOTO, strlen(CTSVC_VIEW_URI_ACTIVITY_PHOTO))
53 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SPEEDDIAL, strlen(CTSVC_VIEW_URI_SPEEDDIAL))
54 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SDN, strlen(CTSVC_VIEW_URI_SDN))
55 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_GROUP_RELATION, strlen(CTSVC_VIEW_URI_GROUP_RELATION))
56 || STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_SIP, strlen(CTSVC_VIEW_URI_SIP))) {
57 ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_CONTACT_READ, &result);
58 if (CONTACTS_ERROR_NONE != ret) {
59 ERR("ctsvc_ipc_client_check_permission() Fail(%d)", ret);
63 RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED,
64 "Permission denied(contact read)");
65 } else if (STRING_EQUAL == strncmp(view_uri, CTSVC_VIEW_URI_PHONELOG, strlen(CTSVC_VIEW_URI_PHONELOG))) {
66 ret = ctsvc_ipc_client_check_permission(CTSVC_PERMISSION_PHONELOG_READ, &result);
67 if (CONTACTS_ERROR_NONE != ret) {
68 ERR("ctsvc_ipc_client_check_permission() Fail(%d)", ret);
72 RETVM_IF(result == false, CONTACTS_ERROR_PERMISSION_DENIED,
73 "Permission denied(phonelog read)");
76 return CONTACTS_ERROR_NONE;
79 API int contacts_db_add_changed_cb(const char *view_uri, contacts_db_changed_cb cb,
84 RETV_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER);
85 RETV_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER);
87 ret = _client_noti_check_read_permission(view_uri);
88 RETVM_IF(CONTACTS_ERROR_NONE != ret, ret,
89 "_client_noti_check_read_permission() Fail(%d)", ret);
91 ret = ctsvc_inotify_subscribe(view_uri, cb, user_data);
92 if (CONTACTS_ERROR_NONE != ret) {
93 ERR("ctsvc_inotify_subscribe(%s) Fail(%d)", view_uri, ret);
97 return CONTACTS_ERROR_NONE;
100 API int contacts_db_remove_changed_cb(const char *view_uri, contacts_db_changed_cb cb,
105 RETV_IF(NULL == view_uri, CONTACTS_ERROR_INVALID_PARAMETER);
106 RETV_IF(NULL == cb, CONTACTS_ERROR_INVALID_PARAMETER);
108 ret = ctsvc_inotify_unsubscribe(view_uri, cb, user_data);
109 if (CONTACTS_ERROR_NONE != ret) {
110 ERR("ctsvc_inotify_unsubscribe(%s) Fail(%d)", view_uri, ret);
114 return CONTACTS_ERROR_NONE;