def get_user_me(self, root, info, **args): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) info.context['token_id'] = token info.context['user_uuid'] = token_infos['metadata']['uuid'] info.context['tenant_uuid'] = token_infos['metadata']['tenant_uuid'] return {}
def get(self, profile): args = parser.parse_args() term = args['term'] logger.info('Lookup for %s with profile %s', term, profile) tenant = Tenant.autodetect() try: profile_config = self.profile_service.get_by_name( tenant.uuid, profile) display = self.build_display(profile_config) except OldAPIException as e: return e.body, e.status_code token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) user_uuid = token_infos['metadata']['uuid'] raw_results = self.lookup_service.lookup(profile_config, tenant.uuid, term, user_uuid, token=token) favorites = self.favorite_service.favorite_ids(profile_config, user_uuid).by_name formatter = _ResultFormatter(display) response = formatter.format_results(raw_results, favorites) response.update({'term': term}) return response
def get(self, profile): logger.debug('Listing personal with profile %s', profile) token = request.headers.get('X-Auth-Token', '') token_infos = auth.client().token.get(token) tenant = Tenant.autodetect() try: profile_config = self.profile_service.get_by_name(tenant.uuid, profile) display = self.build_display(profile_config) except OldAPIException as e: return e.body, e.status_code raw_results = self.personal_service.list_contacts( tenant.uuid, token_infos['xivo_user_uuid'], ) try: favorites = self.favorite_service.favorite_ids( profile_config, token_infos['xivo_user_uuid'], ).by_name except self.favorite_service.NoSuchProfileException as e: return _error(404, str(e)) formatter = _ResultFormatter(display) return formatter.format_results(raw_results, favorites)
def post(self): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) charset = request.mimetype_params.get('charset', 'utf-8') try: csv_document = request.data.decode(charset) except UnicodeDecodeError as e: error = { 'reason': [str(e)], 'timestamp': [time()], 'status_code': 400, } return error, 400 created, errors = self._mass_import(csv_document, token_infos) if not created: error = { 'reason': errors or ['No contact found'], 'timestamp': [time()], 'status_code': 400, } return error, 400 result = { 'created': created, 'failed': errors, } return result, 201
def delete(self): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) self.personal_service.purge_contacts(token_infos) return '', 204
def put(self, contact_id): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) new_contact = request.json try: contact = self.personal_service.edit_contact( contact_id, new_contact, token_infos) return contact, 200 except self.personal_service.NoSuchContact as e: error = { 'reason': [str(e)], 'timestamp': [time()], 'status_code': 404, } return error, 404 except self.personal_service.InvalidPersonalContact as e: error = { 'reason': e.errors, 'timestamp': [time()], 'status_code': 400, } return error, 400 except self.personal_service.DuplicatedContactException: error = { 'reason': ['Modifying this contact would create a duplicate'], 'timestamp': [time()], 'status_code': 409, } return error, 409
def _get_calling_user_uuid(): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) user_uuid = token_infos.get('metadata').get('uuid') if not user_uuid: raise APIException(401, 'This token has no user UUID', 'invalid-token') return user_uuid
def get(self): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) contacts = self.personal_service.list_contacts_raw(token_infos) mimetype = request.mimetype if not mimetype: args = parser.parse_args() mimetype = args.get('format', None) return self.contacts_formatter(mimetype)(contacts)
def delete(self, contact_id): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) try: self.personal_service.remove_contact(contact_id, token_infos) return '', 204 except self.personal_service.NoSuchContact as e: error = { 'reason': [str(e)], 'timestamp': [time()], 'status_code': 404, } return error, 404
def put(self, directory, contact): token = request.headers.get('X-Auth-Token', '') token_infos = auth.client().token.get(token) tenant = Tenant.autodetect() try: self.favorites_service.new_favorite( tenant.uuid, directory, contact, token_infos['metadata']['uuid']) except self.favorites_service.DuplicatedFavoriteException: return _error(409, 'Adding this favorite would create a duplicate') except self.favorites_service.NoSuchSourceException as e: return _error(404, str(e)) return '', 204
def delete(self, directory, contact): token = request.headers.get('X-Auth-Token', '') token_infos = auth.client().token.get(token) tenant = Tenant.autodetect() try: self.favorites_service.remove_favorite( tenant.uuid, directory, contact, token_infos['metadata']['uuid']) return '', 204 except ( self.favorites_service.NoSuchFavoriteException, self.favorites_service.NoSuchSourceException, ) as e: return _error(404, str(e))
def get(self, profile): logger.debug('Listing favorites with profile %s', profile) tenant = Tenant.autodetect() try: profile_config = self.profile_service.get_by_name( tenant.uuid, profile) display = self.build_display(profile_config) except OldAPIException as e: return e.body, e.status_code token = request.headers.get('X-Auth-Token', '') token_infos = auth.client().token.get(token) try: raw_results = self.favorites_service.favorites( profile_config, token_infos['metadata']['uuid'], token) except self.favorites_service.NoSuchProfileException as e: return _error(404, str(e)) formatter = _FavoriteResultFormatter(display) return formatter.format_results(raw_results)
def post(self): token = request.headers['X-Auth-Token'] token_infos = auth.client().token.get(token) contact = request.json try: contact = self.personal_service.create_contact( contact, token_infos) return contact, 201 except self.personal_service.InvalidPersonalContact as e: error = { 'reason': e.errors, 'timestamp': [time()], 'status_code': 400, } return error, 400 except self.personal_service.DuplicatedContactException: error = { 'reason': ['Addind this contact would create a duplicate'], 'timestamp': [time()], 'status_code': 409, } return error, 409