Source code for api4jenkins.user
# encoding: utf-8
from collections import namedtuple
from .item import AsyncItem, Item
from .mix import (AsyncDeletionMixIn, AsyncDescriptionMixIn,
DeletionMixIn, DescriptionMixIn)
user_tree = 'users[user[id,absoluteUrl,fullName]]'
new_token_url = 'descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken'
revoke_token_url = 'descriptorByName/jenkins.security.ApiTokenProperty/revoke'
[docs]
class Users(Item):
def __iter__(self):
for user in self.api_json(tree=user_tree)['users']:
yield User(self.jenkins, user['user']['absoluteUrl'])
[docs]
def get(self, name):
for user in self.api_json(tree=user_tree)['users']:
if name in [user['user']['id'], user['user']['fullName']]:
return User(self.jenkins, user['user']['absoluteUrl'])
return None
ApiToken = namedtuple('ApiToken', ['name', 'uuid', 'value'])
[docs]
class User(Item, DeletionMixIn, DescriptionMixIn):
[docs]
def generate_token(self, name=''):
data = self.handle_req('POST', new_token_url,
params={'newTokenName': name}).json()['data']
return ApiToken(data['tokenName'], data['tokenUuid'], data['tokenValue'])
[docs]
def revoke_token(self, uuid):
return self.handle_req('POST', revoke_token_url, params={'tokenUuid': uuid})
# async class
[docs]
class AsyncUsers(AsyncItem):
async def __aiter__(self):
for user in (await self.api_json(tree=user_tree))['users']:
yield AsyncUser(self.jenkins, user['user']['absoluteUrl'])
[docs]
async def get(self, name):
for user in (await self.api_json(tree=user_tree))['users']:
if name in [user['user']['id'], user['user']['fullName']]:
return AsyncUser(self.jenkins, user['user']['absoluteUrl'])
return None
[docs]
class AsyncUser(AsyncItem, AsyncDeletionMixIn, AsyncDescriptionMixIn):
[docs]
async def generate_token(self, name=''):
data = (await self.handle_req('POST', new_token_url,
params={'newTokenName': name})).json()['data']
return ApiToken(data['tokenName'], data['tokenUuid'], data['tokenValue'])
[docs]
async def revoke_token(self, uuid):
return await self.handle_req('POST', revoke_token_url, params={'tokenUuid': uuid})