Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,13 @@ Initialize the client with a username and password. This user *must* have Admin
api.get_room_info('room_id')
api.get_private_room_info('room_id')
api.get_room_history('room_id')
api.create_public_room('room_name', members=[], read_only=False)
api.delete_public_room('room_id')
api.get_my_info()
api.get_users()
api.get_user_info('user_id')
api.create_user('email', 'name', 'password', 'username', active=True, roles=['user'], join_default_channels=True, require_password_change=False, send_welcome_email=False, verified=False, customFields=None)
api.delete_user('user_id')

check /rocketchat/calls/api.py for more.

Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
requests>=2.0.0,<3.0
pytest==2.8.7
pytest>=2.9
pytest-flakes==1.0.1
pytest-sugar
pytest-pep8==1.0.6
Expand Down
84 changes: 83 additions & 1 deletion rocketchat/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@
from rocketchat.calls.groups.get_private_room_info import GetPrivateRoomInfo
from rocketchat.calls.channels.get_history import GetRoomHistory
from rocketchat.calls.groups.get_private_room_history import GetPrivateRoomHistory
from rocketchat.calls.channels.create_public_room import CreatePublicRoom
from rocketchat.calls.channels.delete_public_room import DeletePublicRoom
from rocketchat.calls.auth.get_me import GetMe
from rocketchat.calls.users.get_users import GetUsers
from rocketchat.calls.users.get_user_info import GetUserInfo
from rocketchat.calls.users.create_user import CreateUser
from rocketchat.calls.users.delete_user import DeleteUser
from datetime import datetime


Expand Down Expand Up @@ -107,6 +113,82 @@ def get_room_history(
**kwargs
)

def get_my_info(self, **kwargs):
def create_public_room(self, name, **kwargs):
"""
Create room with given name
:param name: Room name
:param kwargs:
members: The users to add to the channel when it is created.
Optional; Ex.: ["rocket.cat"], Default: []
read_only: Set if the channel is read only or not.
Optional; Ex.: True, Default: False
:return:
"""
return CreatePublicRoom(settings=self.settings, **kwargs).call(name=name, **kwargs)

def delete_public_room(self, room_id, **kwargs):
"""
Delete room with given ID
:param room_id: Room ID
:param kwargs:
:return:
"""
return DeletePublicRoom(settings=self.settings, **kwargs).call(room_id=room_id, **kwargs)

def get_my_info(self, **kwargs):
return GetMe(settings=self.settings, **kwargs).call(**kwargs)

def get_users(self, **kwargs):
"""
Gets all of the users in the system and their information
:param kwargs:
:return:
"""
return GetUsers(settings=self.settings, **kwargs).call(**kwargs)

def get_user_info(self, user_id, **kwargs):
"""
Retrieves information about a user,
the result is only limited to what the callee has access to view.
:param user_id:
:param kwargs:
:return:
"""
return GetUserInfo(settings=self.settings, **kwargs).call(
user_id=user_id,
**kwargs
)

def create_user(self, email, name, password, username, **kwargs):
"""
Create user
:param email: E-mail
:param name: Full name
:param password: Password
:param username: Username
:param kwargs:
active:
roles:
join_default_channels:
require_password_change:
send_welcome_email:
verified:
custom_fields:
:return:
"""
return CreateUser(settings=self.settings, **kwargs).call(
email=email,
name=name,
password=password,
username=username,
**kwargs
)

def delete_user(self, user_id, **kwargs):
"""
Delete user
:param user_id: User ID
:param kwargs:
:return:
"""
return DeleteUser(settings=self.settings, **kwargs).call(user_id=user_id, **kwargs)
23 changes: 23 additions & 0 deletions rocketchat/calls/channels/create_public_room.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import logging
import json

from rocketchat.calls.base import PostMixin, RocketChatBase

logger = logging.getLogger(__name__)


class CreatePublicRoom(PostMixin, RocketChatBase):
endpoint = '/api/v1/channels.create'

def build_endpoint(self, **kwargs):
return self.endpoint

def build_payload(self, **kwargs):
return json.dumps({
'name': kwargs.get('name'),
'members': kwargs.get('members', []),
'readOnly': kwargs.get('read_only', False)
})

def post_response(self, result):
return result
21 changes: 21 additions & 0 deletions rocketchat/calls/channels/delete_public_room.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import logging
import json

from rocketchat.calls.base import PostMixin, RocketChatBase

logger = logging.getLogger(__name__)


class DeletePublicRoom(PostMixin, RocketChatBase):
endpoint = '/api/v1/channels.delete'

def build_endpoint(self, **kwargs):
return self.endpoint

def build_payload(self, **kwargs):
return json.dumps({
'roomId': kwargs.get('room_id')
})

def post_response(self, result):
return result
Empty file.
31 changes: 31 additions & 0 deletions rocketchat/calls/users/create_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import logging
import json

from rocketchat.calls.base import PostMixin, RocketChatBase

logger = logging.getLogger(__name__)


class CreateUser(PostMixin, RocketChatBase):
endpoint = '/api/v1/users.create'

def build_endpoint(self, **kwargs):
return self.endpoint

def build_payload(self, **kwargs):
return json.dumps({
'email': kwargs.get('email'),
'name': kwargs.get('name'),
'password': kwargs.get('password'),
'username': kwargs.get('username'),
'active': kwargs.get('active', True),
'roles': kwargs.get('roles', ['user']),
'joinDefaultChannels': kwargs.get('join_default_channels', True),
'requirePasswordChange': kwargs.get('require_password_change', False),
'sendWelcomeEmail': kwargs.get('send_welcome_email', False),
'verified': kwargs.get('verified', False),
'customFields': kwargs.get('customFields')
})

def post_response(self, result):
return result
21 changes: 21 additions & 0 deletions rocketchat/calls/users/delete_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import logging
import json

from rocketchat.calls.base import PostMixin, RocketChatBase

logger = logging.getLogger(__name__)


class DeleteUser(PostMixin, RocketChatBase):
endpoint = '/api/v1/users.delete'

def build_endpoint(self, **kwargs):
return self.endpoint

def build_payload(self, **kwargs):
return json.dumps({
'userId': kwargs.get('user_id')
})

def post_response(self, result):
return result
19 changes: 19 additions & 0 deletions rocketchat/calls/users/get_user_info.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import logging


from rocketchat.calls.base import RocketChatBase

logger = logging.getLogger(__name__)


class GetUserInfo(RocketChatBase):
endpoint = '/api/v1/users.info'

def build_endpoint(self, **kwargs):
return '{endpoint}?userId={room_id}'.format(
endpoint=self.endpoint,
room_id=kwargs.get('user_id')
)

def post_response(self, result):
return result
37 changes: 37 additions & 0 deletions rocketchat/calls/users/get_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import logging


from rocketchat.calls.base import RocketChatBase

logger = logging.getLogger(__name__)


class GetUsers(RocketChatBase):
endpoint = '/api/v1/users.list'

def build_endpoint(self):
return self.endpoint

def post_response(self, result):
users = []

try:
_users = result.get('users')

for user in _users:
user_dict = dict()
user_dict['name'] = user.get('name')
user_dict['emails'] = [email['address'] for email in user.get('emails')]
user_dict['username'] = user.get('username')
user_dict['type'] = user.get('type')
user_dict['status'] = user.get('status')
user_dict['roles'] = user.get('roles')
user_dict['id'] = user.get('_id')
users.append(user_dict)

except Exception as e:
logger.error('Exception in fetching public rooms {e}'.format(
e=e
), exc_info=True)

return users
101 changes: 100 additions & 1 deletion tests/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
'_id': '123456'}
]}

GET_USERS_TEST = {
GET_ROOM_INFO_TEST = {
"channel": {
"_id": "ByehQjC44FwMeiLbX",
"ts": "2016-11-30T21:23:04.737Z",
Expand Down Expand Up @@ -38,3 +38,102 @@
"active": 'true',
"success": 'true'
}

GET_USERS_TEST = {
"users": [
{
"_id": "nSYqWzZ4GsKTX4dyK",
"createdAt": "2016-12-07T15:47:46.861Z",
"services": {
"password": {
"bcrypt": "..."
},
"email": {
"verificationTokens": [
{
"token": "...",
"address": "example@example.com",
"when": "2016-12-07T15:47:46.930Z"
}
]
},
"resume": {
"loginTokens": [
{
"when": "2016-12-07T15:47:47.334Z",
"hashedToken": "..."
}
]
}
},
"emails": [
{
"address": "example@example.com",
"verified": 'true'
}
],
"type": "user",
"status": "offline",
"active": 'true',
"roles": [
"user"
],
"name": "Example User",
"lastLogin": "2016-12-08T00:22:15.167Z",
"statusConnection": "offline",
"utcOffset": 0,
"username": "example"
}
],
"count": 3,
"offset": 2,
"total": 10,
"success": 'true'
}

GET_USER_INFO_TEST = {
"user": {
"_id": "nSYqWzZ4GsKTX4dyK",
"createdAt": "2016-12-07T15:47:46.861Z",
"services": {
"password": {
"bcrypt": "..."
},
"email": {
"verificationTokens": [
{
"token": "...",
"address": "example@example.com",
"when": "2016-12-07T15:47:46.930Z"
}
]
},
"resume": {
"loginTokens": [
{
"when": "2016-12-07T15:47:47.334Z",
"hashedToken": "..."
}
]
}
},
"emails": [
{
"address": "example@example.com",
"verified": 'true'
}
],
"type": "user",
"status": "offline",
"active": 'true',
"roles": [
"user"
],
"name": "Example User",
"lastLogin": "2016-12-08T00:22:15.167Z",
"statusConnection": "offline",
"utcOffset": 0,
"username": "example"
},
"success": 'true'
}
Loading