Skip to content

Commit

Permalink
add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
jefer94 committed Mar 14, 2024
1 parent af83df9 commit fc95cc7
Show file tree
Hide file tree
Showing 14 changed files with 1,092 additions and 11 deletions.
75 changes: 75 additions & 0 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Check

on:
push: {}
pull_request: {}

env:
PYTHON_VERSION: 3.11.8
PYTHONUNBUFFERED: 1

jobs:
tests:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: "pip"

- name: Install dependencies
run: |
pip install hatch
- name: Run tests
run: |
hatch run test
- uses: codecov/codecov-action@v4
if: ${{ github.event_name == 'pull_request' || github.repository == 'breatheco-de/apiv2' }}
with:
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
files: ./coverage.xml # optional
flags: unittests # optional
name: codecov-umbrella # optional
fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)

- name: Upload coverage data to coveralls.io
if: ${{ github.event_name == 'pull_request' || github.repository == 'breatheco-de/apiv2' }}
run: |
hatch run coveralls --service=github
env:
GITHUB_TOKEN: ${{ github.token }}

pages:
if: >-
github.repository == 'breatheco-de/linked-services-django-plugin' &&
github.event_name == 'push' &&
github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: "pip"

- name: Install dependencies
run: |
pip install hatch
- name: Deploy docs
run: hatch run mkdocs gh-deploy --force
42 changes: 38 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,53 @@
[![PyPI - Version](https://img.shields.io/pypi/v/linked-services.svg)](https://pypi.org/project/linked-services)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/linked-services.svg)](https://pypi.org/project/linked-services)

-----
---

**Table of Contents**

- [Installation](#installation)
- [License](#license)

## What does this

Linked Services was made by [4geeks.com](https://4geeks.com) to manage communication between multiple services and microservices, it manages specifically communications between pairwise services, so, if only two services share the same key, a request just could has two emisors, the other service and itself. It was designed to replace the signature algorithms because them are significally slower.

## Installation

```console
pip install linked-services
You should install linked-services with a few optional dependencies running:

```bash
pip install linked-services[django,requests,aiohttp]
```

### Optional dependencies

#### django

- django
- djangorestframework
- celery-task-manager[django]
- adrf

#### requests

- requests
- brotli

#### httpx

- httpx
- httpcore
- h11
- idna
- brotli

#### aiohttp

- aiohttp
- aiodns
- brotli

## License

`linked-services` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
`linked-services` is distributed under the terms of the [LGPL 3.0](https://spdx.org/licenses/LGPL-3.0-or-later.html) license.
59 changes: 59 additions & 0 deletions docs/extending-scope/rest-frameworks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Rest frameworks

To implement `scope` and `ascope` you must use `get_decorators` and `get_handlers` functions to get both decorators.

## get_app_keys

### arguments

- `app_slug`: - slug or your application.

### Returns

It returns a tuple of (info, key, legacy_key or None) where:

- info: (app_id, algorithm, strategy, schema, require_an_agreement, required_scopes, optional_scopes, webhook_url, redirect_url, app_url)
- key and legacy_key: (public_key, private_key)

#### info

- `app_id`: application id.
- `algorithm`: algorithm of the keys used.
- `strategy`: authentication strategy used by default.
- `schema`: schema of the keys used.
- `require_an_agreement`: if true, the user must accept share its data with the other application.
- `required_scopes`: list of strings with all scopes that are required.
- `optional_scopes` list of strings with all scopes that are optional.
- `webhook_url`: webhook url.
- `redirect_url`: redirect url.
- `app_url`: application url.

#### key and legacy_key

- `public_key`: public key string
- `private_key`: private key string or None

## get_user_scopes

### arguments

- `app_slug`: slug or your application.
- `user_id`: optional user id.

### Returns

Two tuple of strings, the second tuple should be None. It returns the required scopes as first tuple and the optional as second tuple.

## Example

```py
from linked_services.core.decorators import get_decorators, get_handlers
from linked_services.django.actions import get_app_keys, get_user_scopes

__all__ = ["scope", "ascope"]


link_schema, signature_schema = get_handlers(get_app_keys, get_user_scopes)
scope, ascope = get_decorators(link_schema, signature_schema)

```
Loading

0 comments on commit fc95cc7

Please sign in to comment.