Skip to content

Commit

Permalink
support token refresh, future corner cases
Browse files Browse the repository at this point in the history
  • Loading branch information
FZambia committed Jan 28, 2024
1 parent e370486 commit 49dd752
Show file tree
Hide file tree
Showing 10 changed files with 537 additions and 207 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,8 @@ jobs:
- name: Run tests
run: |
python -m unittest discover -s tests
- name: Run linter
run: |
pip install flake8
flake8 centrifuge --max-line-length 120 --exclude centrifuge/protocol/client_pb2.py
12 changes: 11 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
.PHONY: proto
.PHONY: proto test lint

dev:
pip install -r requirements.txt
pip install -r requirements-dev.txt

proto:
protoc --python_out=centrifuge/protocol client.proto

test:
python -m unittest discover -s tests

lint:
flake8 centrifuge --max-line-length 120 --exclude centrifuge/protocol/client_pb2.py
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

This is a WebSocket SDK for [Centrifugo](https://github.com/centrifugal/centrifugo) server (and any [Centrifuge-based](https://github.com/centrifugal/centrifuge) server) on top of Python asyncio library.

Before starting to work with this library check out [Centrifugo client SDK API specification](https://centrifugal.dev/docs/transports/client_api) as it contains common information about Centrifugal real-time SDK behavior.

The features implemented by this SDK can be found in [SDK feature matrix](https://centrifugal.dev/docs/transports/client_sdk#sdk-feature-matrix).

## Install

```
pip install centrifuge-python
```

Then in your code:

```
from centrifuge import Client
```

See [example code](https://github.com/centrifugal/centrifuge-python/blob/master/example.py) and [how to run it](#run-example) locally.

## Run tests

To run tests first start Centrifugo server:
Expand Down
35 changes: 31 additions & 4 deletions centrifuge/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,31 @@
from .client import *
from .exceptions import *
from .contexts import *
from .types import *
from .client import Client, Subscription, ClientState, SubscriptionState
from .exceptions import CentrifugeException, Timeout, ClientDisconnected, \
SubscriptionUnsubscribed, DuplicateSubscription, ReplyError, Unauthorized
from .contexts import SubscriptionTokenContext, ConnectionTokenContext, \
SubscribingContext, SubscribedContext, UnsubscribedContext, \
PublicationContext, JoinContext, LeaveContext, \
ErrorContext, DisconnectedContext, ConnectedContext, ConnectingContext, \
ServerSubscribedContext, ServerSubscribingContext, ServerUnsubscribedContext, \
ServerPublicationContext, ServerJoinContext, ServerLeaveContext, \
SubscriptionErrorContext
from .types import JSON, BytesOrJSON, StreamPosition, ClientInfo, Publication, PublishResult, \
HistoryResult, PresenceResult, PresenceStatsResult, RpcResult


__all__ = [
Client, Subscription, ClientState, SubscriptionState,

CentrifugeException, Timeout, ClientDisconnected, SubscriptionUnsubscribed,
DuplicateSubscription, ReplyError, Unauthorized,

SubscriptionTokenContext, ConnectionTokenContext,
SubscribingContext, SubscribedContext, UnsubscribedContext,
PublicationContext, JoinContext, LeaveContext,
ErrorContext, DisconnectedContext, ConnectedContext, ConnectingContext,
ServerSubscribedContext, ServerSubscribingContext, ServerUnsubscribedContext,
ServerPublicationContext, ServerJoinContext, ServerLeaveContext,
SubscriptionErrorContext,

JSON, BytesOrJSON, StreamPosition, ClientInfo, Publication, PublishResult,
HistoryResult, PresenceResult, PresenceStatsResult, RpcResult
]
Loading

0 comments on commit 49dd752

Please sign in to comment.