Skip to main content

RNet OAuth Python client library

Project description

RNet OAuth Python Library

A Python backend library for integrating RNet OAuth and AI Provider services. This library allows users to authenticate via RNet and pay for AI model token costs directly using their RNet account.

Features

  • OAuth2 PKCE Support: Secure authorization code flow with automatic code verifier and challenge generation.
  • Token Management: Exchange authorization codes for tokens and refresh expired tokens.
  • UserInfo Endpoint: Fetch the authenticated user's RNet profile with an access token.
  • AI Integration: Easy methods to chat with AI models using standard or streaming responses.

Installation

pip install rnet-oauth

Quick Start

1. Initialize the Clients

from rnet_oauth import RNetAuth, RNetAi

auth = RNetAuth(
    client_id='client-id',
    client_secret='client-secret',
    redirect_uri='redirect-uri'
)
ai = RNetAi()

2. Generate Authorization URL (OAuth2 PKCE)

# 1. Generate PKCE
pkce = auth.generate_pkce()
verifier = pkce['verifier']
challenge = pkce['challenge']

# 2. Get Authorization URL
# challenge: PKCE code challenge (optional)
# state: An optional string to maintain state between the request and callback (recommended for security)
auth_url = auth.get_authorization_url(challenge, state='optional-state')

3. Exchange Code for Tokens

# 3. Exchange code for tokens
tokens = auth.exchange_code_for_token(code, verifier)
access_token = tokens['access_token']

4. Get User Info

user_info = auth.get_user_info(access_token)
print(user_info['email'])
print(user_info['name'])

The UserInfo response comes from RNet's /userinfo endpoint and may include: sub, email, email_verified, name, preferred_username, user_id, role, and status.

5. Chat with AI

response = ai.chat({
    "contents": [
        {
            "role": "user",
            "parts": [{"text": "Hello!"}]
        }
    ]
}, access_token, "gemini-2.5-flash-lite")

6. Streaming AI Response (Untested)

for chunk in ai.chat_stream({
    "contents": [
        {
            "role": "user",
            "parts": [{"text": "Hello!"}]
        }
    ]
}, access_token, "gemini-2.5-flash-lite"):
    print(chunk)

7. File Upload (Untested)

with open("document.pdf", "rb") as f:
    file_buffer = f.read()

# Upload to Gemini
gemini_upload = ai.gemini_file_upload(access_token, "gemini-2.5-flash-lite", file_buffer, "application/pdf", "document.pdf")
print(gemini_upload['fileReference']) # Use this in chat payload

# Upload to OpenAI
openai_upload = ai.openai_file_upload(access_token, "gpt-4o", file_buffer, "application/pdf", "document.pdf")

8. File Deletion (Untested)

# Gemini files auto-delete after 48 hours, so there is no delete method.
# Delete an OpenAI file:
ai.openai_file_delete(access_token, "gpt-4o", openai_upload['fileReference'])

9. AI Chat with File & Tools (Untested)

payload = {
    "contents": [
        {
            "role": "user",
            "parts": [
                { "text": "Based on this document, what is my name? Also search the web for the current weather in London." },
                { "fileData": { "fileUri": gemini_upload['fileReference'], "mimeType": gemini_upload['mimeType'] } }
            ]
        }
    ],
    "tools": [
        { "googleSearch": {} } # Enable Google Search tool
    ]
}

response = ai.chat(payload, access_token, "gemini-2.5-flash-lite")
print(response)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rnet_oauth-1.0.2.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rnet_oauth-1.0.2-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file rnet_oauth-1.0.2.tar.gz.

File metadata

  • Download URL: rnet_oauth-1.0.2.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for rnet_oauth-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f66f1875e10e0a98b61b56a4ce6c8bd17215009ceb91c624a195d2ccc2362494
MD5 17e13efe510c8561f2dae343725e4779
BLAKE2b-256 95068348366801ec1768a391f0ff42eca423f2eda4169e6f3f92f82add3dd51e

See more details on using hashes here.

File details

Details for the file rnet_oauth-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: rnet_oauth-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for rnet_oauth-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4c65aa59aa0839c623afbb6c0f29275ed90b9552a541bf81c6005070584d1ff5
MD5 e608eb28711ab9874f497d59358eceb8
BLAKE2b-256 72b375ce4d685382bb8bbe69a527f510e054163c1e26faab4b478aae7c35b61f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page