bocco package¶
Module contents¶
BOCCO API python ライブラリ
GitHub: | https://github.com/YUKAI/bocco-api-python |
---|---|
Copyright: | YUKAI Engineering Inc. |
Lisence: | MIT, see LICENSE for more details. |
Web API の詳細は http://api-docs.bocco.me を参照してください。
Submodules¶
bocco.api module¶
-
class
bocco.api.
Client
(access_token)[source]¶ Bases:
object
BOCCO API クライアント
-
download
(url, dest)[source]¶ ファイルをダウンロードする
Web API: http://api-docs.bocco.me/reference.html#get-messagesuniqueidextname
-
get_messages
(room_uuid, newer_than=None, older_than=None, read=True)[source]¶ メッセージ一覧を取得
Note
このAPIにアクセスするためには、追加の権限が必要です。BOCCOサポートにお問い合わせください。
Web API: http://api-docs.bocco.me/reference.html#get-roomsroomidmessages
-
get_rooms
()[source]¶ 自分が入っている部屋一覧を取得
Web API: http://api-docs.bocco.me/reference.html#get-roomsjoined
-
post_text_message
(room_uuid, text)[source]¶ テキストメッセージの送信
現在 python ライブラリではテキストメッセージのみサポートしています。
Web API: http://api-docs.bocco.me/reference.html#post-roomsroomidmessages
-
classmethod
signin
(api_key, email, password)[source]¶ 新しいセッションでクライアントを作成する
api = bocco.api.Client.signin('API KEY', 'test@example.com', 'pass') print(api.access_token)
内部的には http://api-docs.bocco.me/get_access_token.html と同じ処理を行っています。
Web API: http://api-docs.bocco.me/reference.html#post-sessions
-
subscribe
(room_uuid, newer_than=None, read=True)[source]¶ イベントの取得
この API はロングポーリングでの利用を想定しています。 newer_than パラメータより新しい ID のメッセージが来た場合に、レスポンスが返ります。 来なかった場合はタイムアウトとなります。
Note
このAPIにアクセスするためには、追加の権限が必要です。BOCCOサポートにお問い合わせください。
Web API: http://api-docs.bocco.me/reference.html#get-roomsroomidsubscribe
-
bocco.models module¶
-
class
bocco.models.
ApiErrorBody
(data)[source]¶ Bases:
bocco.models._Model
エラーレスポンス
エラーコードの詳細は以下を参照 http://api-docs.bocco.me/reference.html#section-31
>>> e = ApiErrorBody({ ... 'code': 401, ... 'message': u'ERROR MESSAGE' ... }) >>> e['code'] 401 >>> e['message'] == u'ERROR MESSAGE' True
-
schema
= Schema({'message': <class 'str'>, 'code': <class 'int'>})¶
-
-
class
bocco.models.
Message
(data)[source]¶ Bases:
bocco.models._Model
部屋へ送信されたメッセージ
>>> m = Message({ ... 'id': 123, ... 'dictated': True, ... 'unique_id': u'a8852948-fc6e-40d4-a384-e4c6a63b705e', ... 'media': u'text', ... 'audio': u'', ... 'message_type': u'normal', ... 'text': u'メッセージです', ... 'image': u'', ... 'sender': u'0a0f6b39-ac63-4731-9c94-756ae80dd0b9', ... 'date': u'2016-03-02 11:00:59', ... 'user': { ... 'uuid': u'0a0f6b39-ac63-4731-9c94-756ae80dd0b9', ... 'user_type': u'bocco', ... 'nickname': u'ニックネーム', ... 'seller': u'', ... 'address': u'00:11:22:33:44:55', ... 'icon': u'http://example.com/image.png' ... } ... }) >>> m['id'] 123 >>> m['text'] == u'メッセージです' True >>> m['dictated'] True >>> m['user']['uuid'] UUID('0a0f6b39-ac63-4731-9c94-756ae80dd0b9')
-
schema
= Schema({'id': <class 'int'>, 'message_type': Or(<enum 'MessageType'>, Use(<enum 'MessageType'>), Use(<function Message.<lambda>>)), 'audio': And(<class 'str'>, <function <lambda>>), 'date': Or(<class 'arrow.arrow.Arrow'>, Use(<function get>)), 'image': And(<class 'str'>, <function <lambda>>), 'text': <class 'str'>, 'sender': Or(<class 'uuid.UUID'>, Use(<class 'uuid.UUID'>)), 'media': Or(<enum 'MessageMedia'>, Use(<enum 'MessageMedia'>), Use(<function Message.<lambda>>)), 'user': Or(<class 'bocco.models.User'>, Use(<class 'bocco.models.User'>)), 'unique_id': Or(<class 'uuid.UUID'>, Use(<class 'uuid.UUID'>)), 'dictated': <class 'bool'>})¶
-
-
class
bocco.models.
MessageMedia
[source]¶ Bases:
enum.Enum
メッセージのメディア
-
audio
= 'audio'¶
-
image
= 'image'¶
-
stamp
= 'stamp'¶
-
text
= 'text'¶
-
unknown
= 'unknown'¶
-
-
class
bocco.models.
MessageType
[source]¶ Bases:
enum.Enum
メッセージの種別
-
normal
= 'normal'¶
-
system_human_joined
= 'system.human_joined'¶
-
system_sensor_joined
= 'system.sensor_joined'¶
-
unknown
= 'unknown'¶
-
-
class
bocco.models.
Room
(data)[source]¶ Bases:
bocco.models._Model
部屋情報
>>> r = Room({ ... 'uuid': u'3e6aceea-4db1-44a3-b2a9-4ccfccd843e1', ... 'name': u'テストルーム', ... 'updated_at': u'2011-02-03', ... 'members': [ ... { ... 'read_id': 123, ... 'joined_at': u'2010-01-02', ... 'user': { ... 'uuid': 'u7b44ddd8-d1b0-4666-a11d-4dac68068ebd', ... 'user_type': u'human', ... 'nickname': u'TEST USER', ... 'seller': u'', ... 'address': u'00:11:22:33:44:55', ... 'icon': u'http://example.com/image.png' ... } ... } ... ], ... 'messages': [ ... { ... 'id': 24686, ... 'unique_id': u'1DB34B93-0DFA-4150-AEF5-ffffffffffff', ... 'date': u'2015-07-31T21:47:46+09:00', ... 'media': u'text', ... 'message_type': u'normal', ... 'user': { ... 'uuid': u'cffbf787-dd20-4157-8279-ffffffffffff', ... 'user_type': u'human', ... 'nickname': u'mash', ... 'icon': u'http://example.com/1/users/cffbf787-dd20-4157-8279-ffffffffffff/d4187679-bd07-49f8-94c9-000000000000.png', ... 'seller': u'' ... }, ... 'dictated': False, ... 'text': u'hoge', ... 'audio': u'http://example.com/1/messages/24686.ogg', ... 'image': u'', ... 'sender': u'cffbf787-dd20-4157-8279-ffffffffffff', ... 'detail': None ... } ... ], ... 'sensors': [ ... { ... 'uuid': u'0af1c101-3b7d-40a8-9e63-bf03f2dda6c4', ... 'user_type': u'sensor_door', ... 'nickname': u'DOOR SENSOR', ... 'seller': u'', ... 'address': u'00:11:22:33:44:55', ... 'icon': u'http://example.com/image.png' ... } ... ], ... }) >>> r['uuid'] UUID('3e6aceea-4db1-44a3-b2a9-4ccfccd843e1') >>> r['name'] == u'テストルーム' True >>> r['updated_at'] <Arrow [2011-02-03T00:00:00+00:00]> >>> r['members'][0]['user']['nickname'] == 'TEST USER' True >>> r['sensors'][0]['user_type'] == UserType.sensor_door True >>> r['messages'][0]['id'] == 24686 True
-
schema
= Schema({'uuid': Or(<class 'uuid.UUID'>, Use(<class 'uuid.UUID'>)), 'updated_at': Or(<class 'arrow.arrow.Arrow'>, Use(<function get>)), 'messages': Or(<function Room.<lambda>>, Use(<function Room.<lambda>>)), 'members': Or(Use(<function Room.<lambda>>), <function Room.<lambda>>, Use(<function Room.<lambda>>)), 'sensors': Or(<function Room.<lambda>>, Use(<function Room.<lambda>>)), 'name': And(<class 'str'>, <function Room.<lambda>>)})¶
-
-
class
bocco.models.
RoomUser
(data)[source]¶ Bases:
bocco.models._Model
部屋と紐付いたユーザ情報
>>> u = RoomUser({ ... 'read_id': 123, ... 'joined_at': u'2015-01-02', ... 'user': { ... 'uuid': u'7b44ddd8-d1b0-4666-a11d-4dac68068ebd', ... 'user_type': u'bocco', ... 'nickname': u'TEST USER', ... 'seller': u'', ... 'address': u'00:11:22:33:44:55', ... 'icon': u'http://example.com/image.png' ... } ... }) >>> u['read_id'] 123 >>> u['joined_at'] <Arrow [2015-01-02T00:00:00+00:00]> >>> u['user']['uuid'] UUID('7b44ddd8-d1b0-4666-a11d-4dac68068ebd')
-
schema
= Schema({'joined_at': Or(<class 'arrow.arrow.Arrow'>, Use(<function get>)), 'read_id': <class 'int'>, 'user': Or(<class 'bocco.models.User'>, Use(<class 'bocco.models.User'>))})¶
-
-
class
bocco.models.
Session
(data)[source]¶ Bases:
bocco.models._Model
API クライアントのセッション情報
>>> s = Session({ ... 'access_token': u'Dummy Token', ... 'uuid': u'17023f65-065f-41e4-b648-cdd38076a7c9', ... }) >>> s['access_token'] == u'Dummy Token' True >>> s['uuid'] UUID('17023f65-065f-41e4-b648-cdd38076a7c9')
-
schema
= Schema({'uuid': Or(<class 'uuid.UUID'>, Use(<class 'uuid.UUID'>)), 'access_token': <class 'str'>})¶
-
-
class
bocco.models.
User
(data)[source]¶ Bases:
bocco.models._Model
BOCCO ユーザ
BOCCO 本体またはアプリユーザの情報。
>>> u = User({ ... 'uuid': u'7b44ddd8-d1b0-4666-a11d-4dac68068ebd', ... 'user_type': u'bocco', ... 'nickname': u'ニックネーム', ... 'seller': u'', ... 'address': u'00:11:22:33:44:55', ... 'icon': u'http://example.com/image.png' ... }) >>> u['uuid'] UUID('7b44ddd8-d1b0-4666-a11d-4dac68068ebd') >>> u['user_type'] == UserType.bocco True >>> u['nickname'] == u'ニックネーム' True >>> u['seller'] == u'' True >>> u['icon'] == u'http://example.com/image.png' True
-
schema
= Schema({'uuid': Or(<class 'uuid.UUID'>, Use(<class 'uuid.UUID'>)), 'nickname': And(<class 'str'>, <function User.<lambda>>), Optional('address'): <class 'str'>, 'user_type': Or(<enum 'UserType'>, Use(<enum 'UserType'>), Use(<function User.<lambda>>)), Optional('icon'): And(<class 'str'>, <function <lambda>>), 'seller': <class 'str'>})¶
-