Ejemplo n.º 1
0
 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 {}
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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))
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
 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