Metadata-Version: 2.4
Name: rpweibo
Version: 0.2.2
Summary: cURL + Python Weibo Wrapper
Home-page: https://github.com/WeCase/rpweibo
Download-URL: https://github.com/WeCase/rpweibo
Author: Tom Li
Author-email: biergaizi@member.fsf.org
License: LGPLv3+
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: COPYING
Requires-Dist: pycurl>=7.19.3
Requires-Dist: rsa>=3.1
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: download-url
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: summary

rpweibo
=======

cURL + Python Weibo Wrapper.


## Installing

```bash
sudo python3 setup.py install
```

or

```bash
sudo pip install rpweibo
```

## Usage

### Initialize

```python
import rpweibo

example_app = rpweibo.Application(APP_KEY, APP_SECRET, REDIRECT_URI)
weibo = rpweibo.Weibo(example_app)
```

### Authorize

#### with Username and Password

```python
authenticator = rpweibo.UserPassAutheticator(USERNAME, PASSWORD)
try:
    weibo.auth(authenticator)
except rpweibo.AuthorizeFailed:
    print("Invalid username or password!")
```

#### with Existing Access Token

```python
authenticator = rpweibo.AccessTokenAuthenticator(ACCESS_TOKEN)
weibo.auth(authenticator)
```

### Using API

#### Styles

##### Procedural Style

```python
tweets = weibo.get("statuses/user_timeline")["statuses"]
for tweet in tweets:
    print(tweet["text"])

weibo.post("statuses/update", status="Hello, world!")
```

##### Object Style

```python
tweets = weibo.api("statuses/user_timeline").get().statuses
for tweet in tweets:
    print(tweet.text)

weibo.api("statuses/update").post(status="Hello, world!")
```

### Error Handling

```python
try:
    tweets = weibo.api("statuses/user_timeline").get().statuses
except rpweibo.RemoteError:
    # handle API errors likely cause by remote server
    print("Something wrong with the server")
except rpweibo.CallerError:
    # handle API errors likely cause by the client
    print("You shouldn't use the API in this way")
except rpweibo.ResultCorrupted:
    print("Request the API successfully, but got the corrupted result")
except rpweibo.NetworkError:
    print("Somethings wrong with your network")
except rpweibo.APIError as e:
    # Handle all API errors, including RemoteError and CallerError.
    # NOTE: we handle both two type of API errors already, never reach here
    print("%d - %s" % (e.error_code, e.error_message))
```
