Update open api generated components
This commit is contained in:
1
api-customer/.env
Normal file
1
api-customer/.env
Normal file
@@ -0,0 +1 @@
|
|||||||
|
API_ADDRESS=https://192.168.15.120/
|
||||||
68
api-customer/api-resources/auth-endpoint.yaml
Normal file
68
api-customer/api-resources/auth-endpoint.yaml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
openapi: "3.1.0"
|
||||||
|
info:
|
||||||
|
title: "boardmate_api API"
|
||||||
|
description: "boardmate_api API"
|
||||||
|
version: "1.0.0"
|
||||||
|
servers:
|
||||||
|
- url: "https://boardmate_api"
|
||||||
|
paths:
|
||||||
|
/authenticate:
|
||||||
|
post:
|
||||||
|
summary: "POST authenticate"
|
||||||
|
operationId: "login"
|
||||||
|
tags:
|
||||||
|
- Auth
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/AuthRequestDto"
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: "OK"
|
||||||
|
content:
|
||||||
|
'*/*':
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ResponseBodyAuthResponseDto"
|
||||||
|
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
AuthRequestDto:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
username:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
key:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
|
||||||
|
ResponseBodyAuthResponseDto:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
data:
|
||||||
|
type: "object"
|
||||||
|
nullable: true
|
||||||
|
message:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
success:
|
||||||
|
type: "boolean"
|
||||||
|
nullable: false
|
||||||
|
|
||||||
|
AuthResponseDto:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
clientId:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
name:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
username:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
authToken:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# NOTE: This file is auto generated by OpenAPI Generator.
|
|
||||||
# URL: https://openapi-generator.tech
|
|
||||||
#
|
|
||||||
# ref: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
|
|
||||||
|
|
||||||
name: openapi_client Python package
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Set up Python ${{ matrix.python-version }}
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install flake8 pytest
|
|
||||||
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
||||||
if [ -f test-requirements.txt ]; then pip install -r test-requirements.txt; fi
|
|
||||||
- name: Lint with flake8
|
|
||||||
run: |
|
|
||||||
# stop the build if there are Python syntax errors or undefined names
|
|
||||||
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
||||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
|
||||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
|
||||||
- name: Test with pytest
|
|
||||||
run: |
|
|
||||||
pytest
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
# Byte-compiled / optimized / DLL files
|
|
||||||
__pycache__/
|
|
||||||
*.py[cod]
|
|
||||||
*$py.class
|
|
||||||
|
|
||||||
# C extensions
|
|
||||||
*.so
|
|
||||||
|
|
||||||
# Distribution / packaging
|
|
||||||
.Python
|
|
||||||
env/
|
|
||||||
build/
|
|
||||||
develop-eggs/
|
|
||||||
dist/
|
|
||||||
downloads/
|
|
||||||
eggs/
|
|
||||||
.eggs/
|
|
||||||
lib/
|
|
||||||
lib64/
|
|
||||||
parts/
|
|
||||||
sdist/
|
|
||||||
var/
|
|
||||||
*.egg-info/
|
|
||||||
.installed.cfg
|
|
||||||
*.egg
|
|
||||||
|
|
||||||
# PyInstaller
|
|
||||||
# Usually these files are written by a python script from a template
|
|
||||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
||||||
*.manifest
|
|
||||||
*.spec
|
|
||||||
|
|
||||||
# Installer logs
|
|
||||||
pip-log.txt
|
|
||||||
pip-delete-this-directory.txt
|
|
||||||
|
|
||||||
# Unit test / coverage reports
|
|
||||||
htmlcov/
|
|
||||||
.tox/
|
|
||||||
.coverage
|
|
||||||
.coverage.*
|
|
||||||
.cache
|
|
||||||
nosetests.xml
|
|
||||||
coverage.xml
|
|
||||||
*,cover
|
|
||||||
.hypothesis/
|
|
||||||
venv/
|
|
||||||
.venv/
|
|
||||||
.python-version
|
|
||||||
.pytest_cache
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
*.mo
|
|
||||||
*.pot
|
|
||||||
|
|
||||||
# Django stuff:
|
|
||||||
*.log
|
|
||||||
|
|
||||||
# Sphinx documentation
|
|
||||||
docs/_build/
|
|
||||||
|
|
||||||
# PyBuilder
|
|
||||||
target/
|
|
||||||
|
|
||||||
#Ipython Notebook
|
|
||||||
.ipynb_checkpoints
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
# NOTE: This file is auto generated by OpenAPI Generator.
|
|
||||||
# URL: https://openapi-generator.tech
|
|
||||||
#
|
|
||||||
# ref: https://docs.gitlab.com/ee/ci/README.html
|
|
||||||
# ref: https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- test
|
|
||||||
|
|
||||||
.pytest:
|
|
||||||
stage: test
|
|
||||||
script:
|
|
||||||
- pip install -r requirements.txt
|
|
||||||
- pip install -r test-requirements.txt
|
|
||||||
- pytest --cov=openapi_client
|
|
||||||
|
|
||||||
pytest-3.7:
|
|
||||||
extends: .pytest
|
|
||||||
image: python:3.7-alpine
|
|
||||||
pytest-3.8:
|
|
||||||
extends: .pytest
|
|
||||||
image: python:3.8-alpine
|
|
||||||
pytest-3.9:
|
|
||||||
extends: .pytest
|
|
||||||
image: python:3.9-alpine
|
|
||||||
pytest-3.10:
|
|
||||||
extends: .pytest
|
|
||||||
image: python:3.10-alpine
|
|
||||||
pytest-3.11:
|
|
||||||
extends: .pytest
|
|
||||||
image: python:3.11-alpine
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# OpenAPI Generator Ignore
|
|
||||||
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
|
|
||||||
|
|
||||||
# Use this file to prevent files from being overwritten by the generator.
|
|
||||||
# The patterns follow closely to .gitignore or .dockerignore.
|
|
||||||
|
|
||||||
# As an example, the C# client generator defines ApiClient.cs.
|
|
||||||
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
|
|
||||||
#ApiClient.cs
|
|
||||||
|
|
||||||
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
|
|
||||||
#foo/*/qux
|
|
||||||
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
|
|
||||||
|
|
||||||
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
|
|
||||||
#foo/**/qux
|
|
||||||
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
|
|
||||||
|
|
||||||
# You can also negate patterns with an exclamation (!).
|
|
||||||
# For example, you can ignore all files in a docs folder with the file extension .md:
|
|
||||||
#docs/*.md
|
|
||||||
# Then explicitly reverse the ignore rule for a single file:
|
|
||||||
#!docs/README.md
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
.github/workflows/python.yml
|
|
||||||
.gitignore
|
|
||||||
.gitlab-ci.yml
|
|
||||||
.openapi-generator-ignore
|
|
||||||
.travis.yml
|
|
||||||
README.md
|
|
||||||
docs/ClientDto.md
|
|
||||||
docs/DefaultApi.md
|
|
||||||
docs/ResponseBodyString.md
|
|
||||||
git_push.sh
|
|
||||||
openapi_client/__init__.py
|
|
||||||
openapi_client/api/__init__.py
|
|
||||||
openapi_client/api/default_api.py
|
|
||||||
openapi_client/api_client.py
|
|
||||||
openapi_client/api_response.py
|
|
||||||
openapi_client/configuration.py
|
|
||||||
openapi_client/exceptions.py
|
|
||||||
openapi_client/models/__init__.py
|
|
||||||
openapi_client/models/client_dto.py
|
|
||||||
openapi_client/models/response_body_string.py
|
|
||||||
openapi_client/py.typed
|
|
||||||
openapi_client/rest.py
|
|
||||||
pyproject.toml
|
|
||||||
requirements.txt
|
|
||||||
setup.cfg
|
|
||||||
setup.py
|
|
||||||
test-requirements.txt
|
|
||||||
test/__init__.py
|
|
||||||
test/test_client_dto.py
|
|
||||||
test/test_default_api.py
|
|
||||||
test/test_response_body_string.py
|
|
||||||
tox.ini
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
7.0.1
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# ref: https://docs.travis-ci.com/user/languages/python
|
|
||||||
language: python
|
|
||||||
python:
|
|
||||||
- "3.7"
|
|
||||||
- "3.8"
|
|
||||||
- "3.9"
|
|
||||||
- "3.10"
|
|
||||||
- "3.11"
|
|
||||||
# uncomment the following if needed
|
|
||||||
#- "3.11-dev" # 3.11 development branch
|
|
||||||
#- "nightly" # nightly build
|
|
||||||
# command to install dependencies
|
|
||||||
install:
|
|
||||||
- "pip install -r requirements.txt"
|
|
||||||
- "pip install -r test-requirements.txt"
|
|
||||||
# command to run tests
|
|
||||||
script: pytest --cov=openapi_client
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
# openapi-client
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
||||||
|
|
||||||
- API version: 1.0.0
|
|
||||||
- Package version: 1.0.0
|
|
||||||
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
|
||||||
|
|
||||||
## Requirements.
|
|
||||||
|
|
||||||
Python 3.7+
|
|
||||||
|
|
||||||
## Installation & Usage
|
|
||||||
### pip install
|
|
||||||
|
|
||||||
If the python package is hosted on a repository, you can install directly using:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git
|
|
||||||
```
|
|
||||||
(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`)
|
|
||||||
|
|
||||||
Then import the package:
|
|
||||||
```python
|
|
||||||
import openapi_client
|
|
||||||
```
|
|
||||||
|
|
||||||
### Setuptools
|
|
||||||
|
|
||||||
Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
|
|
||||||
|
|
||||||
```sh
|
|
||||||
python setup.py install --user
|
|
||||||
```
|
|
||||||
(or `sudo python setup.py install` to install the package for all users)
|
|
||||||
|
|
||||||
Then import the package:
|
|
||||||
```python
|
|
||||||
import openapi_client
|
|
||||||
```
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
|
|
||||||
Execute `pytest` to run the tests.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
Please follow the [installation procedure](#installation--usage) and then run the following:
|
|
||||||
|
|
||||||
```python
|
|
||||||
|
|
||||||
import time
|
|
||||||
import openapi_client
|
|
||||||
from openapi_client.rest import ApiException
|
|
||||||
from pprint import pprint
|
|
||||||
|
|
||||||
# Defining the host is optional and defaults to https://boardmate_api
|
|
||||||
# See configuration.py for a list of all supported configuration parameters.
|
|
||||||
configuration = openapi_client.Configuration(
|
|
||||||
host = "https://boardmate_api"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Enter a context with an instance of the API client
|
|
||||||
with openapi_client.ApiClient(configuration) as api_client:
|
|
||||||
# Create an instance of the API class
|
|
||||||
api_instance = openapi_client.DefaultApi(api_client)
|
|
||||||
client_dto = openapi_client.ClientDto() # ClientDto |
|
|
||||||
|
|
||||||
try:
|
|
||||||
# POST client/create
|
|
||||||
api_response = api_instance.create(client_dto)
|
|
||||||
print("The response of DefaultApi->create:\n")
|
|
||||||
pprint(api_response)
|
|
||||||
except ApiException as e:
|
|
||||||
print("Exception when calling DefaultApi->create: %s\n" % e)
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Documentation for API Endpoints
|
|
||||||
|
|
||||||
All URIs are relative to *https://boardmate_api*
|
|
||||||
|
|
||||||
Class | Method | HTTP request | Description
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
*DefaultApi* | [**create**](docs/DefaultApi.md#create) | **POST** /client/create | POST client/create
|
|
||||||
|
|
||||||
|
|
||||||
## Documentation For Models
|
|
||||||
|
|
||||||
- [ClientDto](docs/ClientDto.md)
|
|
||||||
- [ResponseBodyString](docs/ResponseBodyString.md)
|
|
||||||
|
|
||||||
|
|
||||||
<a id="documentation-for-authorization"></a>
|
|
||||||
## Documentation For Authorization
|
|
||||||
|
|
||||||
Endpoints do not require authorization.
|
|
||||||
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# ClientDto
|
|
||||||
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
**name** | **str** | | [optional]
|
|
||||||
**username** | **str** | | [optional]
|
|
||||||
**key** | **str** | | [optional]
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```python
|
|
||||||
from openapi_client.models.client_dto import ClientDto
|
|
||||||
|
|
||||||
# TODO update the JSON string below
|
|
||||||
json = "{}"
|
|
||||||
# create an instance of ClientDto from a JSON string
|
|
||||||
client_dto_instance = ClientDto.from_json(json)
|
|
||||||
# print the JSON string representation of the object
|
|
||||||
print ClientDto.to_json()
|
|
||||||
|
|
||||||
# convert the object into a dict
|
|
||||||
client_dto_dict = client_dto_instance.to_dict()
|
|
||||||
# create an instance of ClientDto from a dict
|
|
||||||
client_dto_form_dict = client_dto.from_dict(client_dto_dict)
|
|
||||||
```
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# openapi_client.DefaultApi
|
|
||||||
|
|
||||||
All URIs are relative to *https://boardmate_api*
|
|
||||||
|
|
||||||
Method | HTTP request | Description
|
|
||||||
------------- | ------------- | -------------
|
|
||||||
[**create**](DefaultApi.md#create) | **POST** /client/create | POST client/create
|
|
||||||
|
|
||||||
|
|
||||||
# **create**
|
|
||||||
> ResponseBodyString create(client_dto)
|
|
||||||
|
|
||||||
POST client/create
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
```python
|
|
||||||
import time
|
|
||||||
import os
|
|
||||||
import openapi_client
|
|
||||||
from openapi_client.models.client_dto import ClientDto
|
|
||||||
from openapi_client.models.response_body_string import ResponseBodyString
|
|
||||||
from openapi_client.rest import ApiException
|
|
||||||
from pprint import pprint
|
|
||||||
|
|
||||||
# Defining the host is optional and defaults to https://boardmate_api
|
|
||||||
# See configuration.py for a list of all supported configuration parameters.
|
|
||||||
configuration = openapi_client.Configuration(
|
|
||||||
host = "https://boardmate_api"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Enter a context with an instance of the API client
|
|
||||||
with openapi_client.ApiClient(configuration) as api_client:
|
|
||||||
# Create an instance of the API class
|
|
||||||
api_instance = openapi_client.DefaultApi(api_client)
|
|
||||||
client_dto = openapi_client.ClientDto() # ClientDto |
|
|
||||||
|
|
||||||
try:
|
|
||||||
# POST client/create
|
|
||||||
api_response = api_instance.create(client_dto)
|
|
||||||
print("The response of DefaultApi->create:\n")
|
|
||||||
pprint(api_response)
|
|
||||||
except Exception as e:
|
|
||||||
print("Exception when calling DefaultApi->create: %s\n" % e)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------- | ------------- | ------------- | -------------
|
|
||||||
**client_dto** | [**ClientDto**](ClientDto.md)| |
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**ResponseBodyString**](ResponseBodyString.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
No authorization required
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: */*
|
|
||||||
|
|
||||||
### HTTP response details
|
|
||||||
| Status code | Description | Response headers |
|
|
||||||
|-------------|-------------|------------------|
|
|
||||||
**200** | OK | - |
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# ResponseBodyString
|
|
||||||
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
Name | Type | Description | Notes
|
|
||||||
------------ | ------------- | ------------- | -------------
|
|
||||||
**data** | **str** | | [optional]
|
|
||||||
**message** | **str** | | [optional]
|
|
||||||
**success** | **bool** | | [optional]
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```python
|
|
||||||
from openapi_client.models.response_body_string import ResponseBodyString
|
|
||||||
|
|
||||||
# TODO update the JSON string below
|
|
||||||
json = "{}"
|
|
||||||
# create an instance of ResponseBodyString from a JSON string
|
|
||||||
response_body_string_instance = ResponseBodyString.from_json(json)
|
|
||||||
# print the JSON string representation of the object
|
|
||||||
print ResponseBodyString.to_json()
|
|
||||||
|
|
||||||
# convert the object into a dict
|
|
||||||
response_body_string_dict = response_body_string_instance.to_dict()
|
|
||||||
# create an instance of ResponseBodyString from a dict
|
|
||||||
response_body_string_form_dict = response_body_string.from_dict(response_body_string_dict)
|
|
||||||
```
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
|
|
||||||
#
|
|
||||||
# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
|
|
||||||
|
|
||||||
git_user_id=$1
|
|
||||||
git_repo_id=$2
|
|
||||||
release_note=$3
|
|
||||||
git_host=$4
|
|
||||||
|
|
||||||
if [ "$git_host" = "" ]; then
|
|
||||||
git_host="github.com"
|
|
||||||
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$git_user_id" = "" ]; then
|
|
||||||
git_user_id="GIT_USER_ID"
|
|
||||||
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$git_repo_id" = "" ]; then
|
|
||||||
git_repo_id="GIT_REPO_ID"
|
|
||||||
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$release_note" = "" ]; then
|
|
||||||
release_note="Minor update"
|
|
||||||
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Initialize the local directory as a Git repository
|
|
||||||
git init
|
|
||||||
|
|
||||||
# Adds the files in the local repository and stages them for commit.
|
|
||||||
git add .
|
|
||||||
|
|
||||||
# Commits the tracked changes and prepares them to be pushed to a remote repository.
|
|
||||||
git commit -m "$release_note"
|
|
||||||
|
|
||||||
# Sets the new remote
|
|
||||||
git_remote=$(git remote)
|
|
||||||
if [ "$git_remote" = "" ]; then # git remote not defined
|
|
||||||
|
|
||||||
if [ "$GIT_TOKEN" = "" ]; then
|
|
||||||
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
|
|
||||||
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
|
|
||||||
else
|
|
||||||
git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
git pull origin master
|
|
||||||
|
|
||||||
# Pushes (Forces) the changes in the local repository up to the remote repository
|
|
||||||
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
|
|
||||||
git push origin master 2>&1 | grep -v 'To https'
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
# flake8: noqa
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
__version__ = "1.0.0"
|
|
||||||
|
|
||||||
# import apis into sdk package
|
|
||||||
from openapi_client.api.default_api import DefaultApi
|
|
||||||
|
|
||||||
# import ApiClient
|
|
||||||
from openapi_client.api_response import ApiResponse
|
|
||||||
from openapi_client.api_client import ApiClient
|
|
||||||
from openapi_client.configuration import Configuration
|
|
||||||
from openapi_client.exceptions import OpenApiException
|
|
||||||
from openapi_client.exceptions import ApiTypeError
|
|
||||||
from openapi_client.exceptions import ApiValueError
|
|
||||||
from openapi_client.exceptions import ApiKeyError
|
|
||||||
from openapi_client.exceptions import ApiAttributeError
|
|
||||||
from openapi_client.exceptions import ApiException
|
|
||||||
|
|
||||||
# import models into sdk package
|
|
||||||
from openapi_client.models.client_dto import ClientDto
|
|
||||||
from openapi_client.models.response_body_string import ResponseBodyString
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# flake8: noqa
|
|
||||||
|
|
||||||
# import apis into api package
|
|
||||||
from openapi_client.api.default_api import DefaultApi
|
|
||||||
|
|
||||||
@@ -1,187 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import re # noqa: F401
|
|
||||||
import io
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
from pydantic import validate_arguments, ValidationError
|
|
||||||
|
|
||||||
from openapi_client.models.client_dto import ClientDto
|
|
||||||
from openapi_client.models.response_body_string import ResponseBodyString
|
|
||||||
|
|
||||||
from openapi_client.api_client import ApiClient
|
|
||||||
from openapi_client.api_response import ApiResponse
|
|
||||||
from openapi_client.exceptions import ( # noqa: F401
|
|
||||||
ApiTypeError,
|
|
||||||
ApiValueError
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DefaultApi:
|
|
||||||
"""NOTE: This class is auto generated by OpenAPI Generator
|
|
||||||
Ref: https://openapi-generator.tech
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, api_client=None) -> None:
|
|
||||||
if api_client is None:
|
|
||||||
api_client = ApiClient.get_default()
|
|
||||||
self.api_client = api_client
|
|
||||||
|
|
||||||
@validate_arguments
|
|
||||||
def create(self, client_dto : ClientDto, **kwargs) -> ResponseBodyString: # noqa: E501
|
|
||||||
"""POST client/create # noqa: E501
|
|
||||||
|
|
||||||
This method makes a synchronous HTTP request by default. To make an
|
|
||||||
asynchronous HTTP request, please pass async_req=True
|
|
||||||
|
|
||||||
>>> thread = api.create(client_dto, async_req=True)
|
|
||||||
>>> result = thread.get()
|
|
||||||
|
|
||||||
:param client_dto: (required)
|
|
||||||
:type client_dto: ClientDto
|
|
||||||
:param async_req: Whether to execute the request asynchronously.
|
|
||||||
:type async_req: bool, optional
|
|
||||||
:param _request_timeout: timeout setting for this request.
|
|
||||||
If one number provided, it will be total request
|
|
||||||
timeout. It can also be a pair (tuple) of
|
|
||||||
(connection, read) timeouts.
|
|
||||||
:return: Returns the result object.
|
|
||||||
If the method is called asynchronously,
|
|
||||||
returns the request thread.
|
|
||||||
:rtype: ResponseBodyString
|
|
||||||
"""
|
|
||||||
kwargs['_return_http_data_only'] = True
|
|
||||||
if '_preload_content' in kwargs:
|
|
||||||
message = "Error! Please call the create_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
|
||||||
raise ValueError(message)
|
|
||||||
return self.create_with_http_info(client_dto, **kwargs) # noqa: E501
|
|
||||||
|
|
||||||
@validate_arguments
|
|
||||||
def create_with_http_info(self, client_dto : ClientDto, **kwargs) -> ApiResponse: # noqa: E501
|
|
||||||
"""POST client/create # noqa: E501
|
|
||||||
|
|
||||||
This method makes a synchronous HTTP request by default. To make an
|
|
||||||
asynchronous HTTP request, please pass async_req=True
|
|
||||||
|
|
||||||
>>> thread = api.create_with_http_info(client_dto, async_req=True)
|
|
||||||
>>> result = thread.get()
|
|
||||||
|
|
||||||
:param client_dto: (required)
|
|
||||||
:type client_dto: ClientDto
|
|
||||||
:param async_req: Whether to execute the request asynchronously.
|
|
||||||
:type async_req: bool, optional
|
|
||||||
:param _preload_content: if False, the ApiResponse.data will
|
|
||||||
be set to none and raw_data will store the
|
|
||||||
HTTP response body without reading/decoding.
|
|
||||||
Default is True.
|
|
||||||
:type _preload_content: bool, optional
|
|
||||||
:param _return_http_data_only: response data instead of ApiResponse
|
|
||||||
object with status code, headers, etc
|
|
||||||
:type _return_http_data_only: bool, optional
|
|
||||||
:param _request_timeout: timeout setting for this request. If one
|
|
||||||
number provided, it will be total request
|
|
||||||
timeout. It can also be a pair (tuple) of
|
|
||||||
(connection, read) timeouts.
|
|
||||||
:param _request_auth: set to override the auth_settings for an a single
|
|
||||||
request; this effectively ignores the authentication
|
|
||||||
in the spec for a single request.
|
|
||||||
:type _request_auth: dict, optional
|
|
||||||
:type _content_type: string, optional: force content-type for the request
|
|
||||||
:return: Returns the result object.
|
|
||||||
If the method is called asynchronously,
|
|
||||||
returns the request thread.
|
|
||||||
:rtype: tuple(ResponseBodyString, status_code(int), headers(HTTPHeaderDict))
|
|
||||||
"""
|
|
||||||
|
|
||||||
_params = locals()
|
|
||||||
|
|
||||||
_all_params = [
|
|
||||||
'client_dto'
|
|
||||||
]
|
|
||||||
_all_params.extend(
|
|
||||||
[
|
|
||||||
'async_req',
|
|
||||||
'_return_http_data_only',
|
|
||||||
'_preload_content',
|
|
||||||
'_request_timeout',
|
|
||||||
'_request_auth',
|
|
||||||
'_content_type',
|
|
||||||
'_headers'
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
# validate the arguments
|
|
||||||
for _key, _val in _params['kwargs'].items():
|
|
||||||
if _key not in _all_params:
|
|
||||||
raise ApiTypeError(
|
|
||||||
"Got an unexpected keyword argument '%s'"
|
|
||||||
" to method create" % _key
|
|
||||||
)
|
|
||||||
_params[_key] = _val
|
|
||||||
del _params['kwargs']
|
|
||||||
|
|
||||||
_collection_formats = {}
|
|
||||||
|
|
||||||
# process the path parameters
|
|
||||||
_path_params = {}
|
|
||||||
|
|
||||||
# process the query parameters
|
|
||||||
_query_params = []
|
|
||||||
# process the header parameters
|
|
||||||
_header_params = dict(_params.get('_headers', {}))
|
|
||||||
# process the form parameters
|
|
||||||
_form_params = []
|
|
||||||
_files = {}
|
|
||||||
# process the body parameter
|
|
||||||
_body_params = None
|
|
||||||
if _params['client_dto'] is not None:
|
|
||||||
_body_params = _params['client_dto']
|
|
||||||
|
|
||||||
# set the HTTP header `Accept`
|
|
||||||
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
||||||
['*/*']) # noqa: E501
|
|
||||||
|
|
||||||
# set the HTTP header `Content-Type`
|
|
||||||
_content_types_list = _params.get('_content_type',
|
|
||||||
self.api_client.select_header_content_type(
|
|
||||||
['application/json']))
|
|
||||||
if _content_types_list:
|
|
||||||
_header_params['Content-Type'] = _content_types_list
|
|
||||||
|
|
||||||
# authentication setting
|
|
||||||
_auth_settings = [] # noqa: E501
|
|
||||||
|
|
||||||
_response_types_map = {
|
|
||||||
'200': "ResponseBodyString",
|
|
||||||
}
|
|
||||||
|
|
||||||
return self.api_client.call_api(
|
|
||||||
'/client/create', 'POST',
|
|
||||||
_path_params,
|
|
||||||
_query_params,
|
|
||||||
_header_params,
|
|
||||||
body=_body_params,
|
|
||||||
post_params=_form_params,
|
|
||||||
files=_files,
|
|
||||||
response_types_map=_response_types_map,
|
|
||||||
auth_settings=_auth_settings,
|
|
||||||
async_req=_params.get('async_req'),
|
|
||||||
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
|
||||||
_preload_content=_params.get('_preload_content', True),
|
|
||||||
_request_timeout=_params.get('_request_timeout'),
|
|
||||||
collection_formats=_collection_formats,
|
|
||||||
_request_auth=_params.get('_request_auth'))
|
|
||||||
@@ -1,758 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import atexit
|
|
||||||
import datetime
|
|
||||||
from dateutil.parser import parse
|
|
||||||
import json
|
|
||||||
import mimetypes
|
|
||||||
from multiprocessing.pool import ThreadPool
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
from urllib.parse import quote
|
|
||||||
|
|
||||||
from openapi_client.configuration import Configuration
|
|
||||||
from openapi_client.api_response import ApiResponse
|
|
||||||
import openapi_client.models
|
|
||||||
from openapi_client import rest
|
|
||||||
from openapi_client.exceptions import ApiValueError, ApiException
|
|
||||||
|
|
||||||
|
|
||||||
class ApiClient:
|
|
||||||
"""Generic API client for OpenAPI client library builds.
|
|
||||||
|
|
||||||
OpenAPI generic API client. This client handles the client-
|
|
||||||
server communication, and is invariant across implementations. Specifics of
|
|
||||||
the methods and models for each application are generated from the OpenAPI
|
|
||||||
templates.
|
|
||||||
|
|
||||||
:param configuration: .Configuration object for this client
|
|
||||||
:param header_name: a header to pass when making calls to the API.
|
|
||||||
:param header_value: a header value to pass when making calls to
|
|
||||||
the API.
|
|
||||||
:param cookie: a cookie to include in the header when making calls
|
|
||||||
to the API
|
|
||||||
:param pool_threads: The number of threads to use for async requests
|
|
||||||
to the API. More threads means more concurrent API requests.
|
|
||||||
"""
|
|
||||||
|
|
||||||
PRIMITIVE_TYPES = (float, bool, bytes, str, int)
|
|
||||||
NATIVE_TYPES_MAPPING = {
|
|
||||||
'int': int,
|
|
||||||
'long': int, # TODO remove as only py3 is supported?
|
|
||||||
'float': float,
|
|
||||||
'str': str,
|
|
||||||
'bool': bool,
|
|
||||||
'date': datetime.date,
|
|
||||||
'datetime': datetime.datetime,
|
|
||||||
'object': object,
|
|
||||||
}
|
|
||||||
_pool = None
|
|
||||||
|
|
||||||
def __init__(self, configuration=None, header_name=None, header_value=None,
|
|
||||||
cookie=None, pool_threads=1) -> None:
|
|
||||||
# use default configuration if none is provided
|
|
||||||
if configuration is None:
|
|
||||||
configuration = Configuration.get_default()
|
|
||||||
self.configuration = configuration
|
|
||||||
self.pool_threads = pool_threads
|
|
||||||
|
|
||||||
self.rest_client = rest.RESTClientObject(configuration)
|
|
||||||
self.default_headers = {}
|
|
||||||
if header_name is not None:
|
|
||||||
self.default_headers[header_name] = header_value
|
|
||||||
self.cookie = cookie
|
|
||||||
# Set default User-Agent.
|
|
||||||
self.user_agent = 'OpenAPI-Generator/1.0.0/python'
|
|
||||||
self.client_side_validation = configuration.client_side_validation
|
|
||||||
|
|
||||||
def __enter__(self):
|
|
||||||
return self
|
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_value, traceback):
|
|
||||||
self.close()
|
|
||||||
|
|
||||||
def close(self):
|
|
||||||
if self._pool:
|
|
||||||
self._pool.close()
|
|
||||||
self._pool.join()
|
|
||||||
self._pool = None
|
|
||||||
if hasattr(atexit, 'unregister'):
|
|
||||||
atexit.unregister(self.close)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def pool(self):
|
|
||||||
"""Create thread pool on first request
|
|
||||||
avoids instantiating unused threadpool for blocking clients.
|
|
||||||
"""
|
|
||||||
if self._pool is None:
|
|
||||||
atexit.register(self.close)
|
|
||||||
self._pool = ThreadPool(self.pool_threads)
|
|
||||||
return self._pool
|
|
||||||
|
|
||||||
@property
|
|
||||||
def user_agent(self):
|
|
||||||
"""User agent for this API client"""
|
|
||||||
return self.default_headers['User-Agent']
|
|
||||||
|
|
||||||
@user_agent.setter
|
|
||||||
def user_agent(self, value):
|
|
||||||
self.default_headers['User-Agent'] = value
|
|
||||||
|
|
||||||
def set_default_header(self, header_name, header_value):
|
|
||||||
self.default_headers[header_name] = header_value
|
|
||||||
|
|
||||||
|
|
||||||
_default = None
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_default(cls):
|
|
||||||
"""Return new instance of ApiClient.
|
|
||||||
|
|
||||||
This method returns newly created, based on default constructor,
|
|
||||||
object of ApiClient class or returns a copy of default
|
|
||||||
ApiClient.
|
|
||||||
|
|
||||||
:return: The ApiClient object.
|
|
||||||
"""
|
|
||||||
if cls._default is None:
|
|
||||||
cls._default = ApiClient()
|
|
||||||
return cls._default
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def set_default(cls, default):
|
|
||||||
"""Set default instance of ApiClient.
|
|
||||||
|
|
||||||
It stores default ApiClient.
|
|
||||||
|
|
||||||
:param default: object of ApiClient.
|
|
||||||
"""
|
|
||||||
cls._default = default
|
|
||||||
|
|
||||||
def __call_api(
|
|
||||||
self, resource_path, method, path_params=None,
|
|
||||||
query_params=None, header_params=None, body=None, post_params=None,
|
|
||||||
files=None, response_types_map=None, auth_settings=None,
|
|
||||||
_return_http_data_only=None, collection_formats=None,
|
|
||||||
_preload_content=True, _request_timeout=None, _host=None,
|
|
||||||
_request_auth=None):
|
|
||||||
|
|
||||||
config = self.configuration
|
|
||||||
|
|
||||||
# header parameters
|
|
||||||
header_params = header_params or {}
|
|
||||||
header_params.update(self.default_headers)
|
|
||||||
if self.cookie:
|
|
||||||
header_params['Cookie'] = self.cookie
|
|
||||||
if header_params:
|
|
||||||
header_params = self.sanitize_for_serialization(header_params)
|
|
||||||
header_params = dict(self.parameters_to_tuples(header_params,
|
|
||||||
collection_formats))
|
|
||||||
|
|
||||||
# path parameters
|
|
||||||
if path_params:
|
|
||||||
path_params = self.sanitize_for_serialization(path_params)
|
|
||||||
path_params = self.parameters_to_tuples(path_params,
|
|
||||||
collection_formats)
|
|
||||||
for k, v in path_params:
|
|
||||||
# specified safe chars, encode everything
|
|
||||||
resource_path = resource_path.replace(
|
|
||||||
'{%s}' % k,
|
|
||||||
quote(str(v), safe=config.safe_chars_for_path_param)
|
|
||||||
)
|
|
||||||
|
|
||||||
# post parameters
|
|
||||||
if post_params or files:
|
|
||||||
post_params = post_params if post_params else []
|
|
||||||
post_params = self.sanitize_for_serialization(post_params)
|
|
||||||
post_params = self.parameters_to_tuples(post_params,
|
|
||||||
collection_formats)
|
|
||||||
post_params.extend(self.files_parameters(files))
|
|
||||||
|
|
||||||
# auth setting
|
|
||||||
self.update_params_for_auth(
|
|
||||||
header_params, query_params, auth_settings,
|
|
||||||
resource_path, method, body,
|
|
||||||
request_auth=_request_auth)
|
|
||||||
|
|
||||||
# body
|
|
||||||
if body:
|
|
||||||
body = self.sanitize_for_serialization(body)
|
|
||||||
|
|
||||||
# request url
|
|
||||||
if _host is None:
|
|
||||||
url = self.configuration.host + resource_path
|
|
||||||
else:
|
|
||||||
# use server/host defined in path or operation instead
|
|
||||||
url = _host + resource_path
|
|
||||||
|
|
||||||
# query parameters
|
|
||||||
if query_params:
|
|
||||||
query_params = self.sanitize_for_serialization(query_params)
|
|
||||||
url_query = self.parameters_to_url_query(query_params,
|
|
||||||
collection_formats)
|
|
||||||
url += "?" + url_query
|
|
||||||
|
|
||||||
try:
|
|
||||||
# perform request and return response
|
|
||||||
response_data = self.request(
|
|
||||||
method, url,
|
|
||||||
query_params=query_params,
|
|
||||||
headers=header_params,
|
|
||||||
post_params=post_params, body=body,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout)
|
|
||||||
except ApiException as e:
|
|
||||||
if e.body:
|
|
||||||
e.body = e.body.decode('utf-8')
|
|
||||||
raise e
|
|
||||||
|
|
||||||
self.last_response = response_data
|
|
||||||
|
|
||||||
return_data = None # assuming derialization is not needed
|
|
||||||
# data needs deserialization or returns HTTP data (deserialized) only
|
|
||||||
if _preload_content or _return_http_data_only:
|
|
||||||
response_type = response_types_map.get(str(response_data.status), None)
|
|
||||||
if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:
|
|
||||||
# if not found, look for '1XX', '2XX', etc.
|
|
||||||
response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
|
|
||||||
|
|
||||||
if response_type == "bytearray":
|
|
||||||
response_data.data = response_data.data
|
|
||||||
else:
|
|
||||||
match = None
|
|
||||||
content_type = response_data.getheader('content-type')
|
|
||||||
if content_type is not None:
|
|
||||||
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
|
|
||||||
encoding = match.group(1) if match else "utf-8"
|
|
||||||
response_data.data = response_data.data.decode(encoding)
|
|
||||||
|
|
||||||
# deserialize response data
|
|
||||||
if response_type == "bytearray":
|
|
||||||
return_data = response_data.data
|
|
||||||
elif response_type:
|
|
||||||
return_data = self.deserialize(response_data, response_type)
|
|
||||||
else:
|
|
||||||
return_data = None
|
|
||||||
|
|
||||||
if _return_http_data_only:
|
|
||||||
return return_data
|
|
||||||
else:
|
|
||||||
return ApiResponse(status_code = response_data.status,
|
|
||||||
data = return_data,
|
|
||||||
headers = response_data.getheaders(),
|
|
||||||
raw_data = response_data.data)
|
|
||||||
|
|
||||||
def sanitize_for_serialization(self, obj):
|
|
||||||
"""Builds a JSON POST object.
|
|
||||||
|
|
||||||
If obj is None, return None.
|
|
||||||
If obj is str, int, long, float, bool, return directly.
|
|
||||||
If obj is datetime.datetime, datetime.date
|
|
||||||
convert to string in iso8601 format.
|
|
||||||
If obj is list, sanitize each element in the list.
|
|
||||||
If obj is dict, return the dict.
|
|
||||||
If obj is OpenAPI model, return the properties dict.
|
|
||||||
|
|
||||||
:param obj: The data to serialize.
|
|
||||||
:return: The serialized form of data.
|
|
||||||
"""
|
|
||||||
if obj is None:
|
|
||||||
return None
|
|
||||||
elif isinstance(obj, self.PRIMITIVE_TYPES):
|
|
||||||
return obj
|
|
||||||
elif isinstance(obj, list):
|
|
||||||
return [self.sanitize_for_serialization(sub_obj)
|
|
||||||
for sub_obj in obj]
|
|
||||||
elif isinstance(obj, tuple):
|
|
||||||
return tuple(self.sanitize_for_serialization(sub_obj)
|
|
||||||
for sub_obj in obj)
|
|
||||||
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
|
||||||
return obj.isoformat()
|
|
||||||
|
|
||||||
if isinstance(obj, dict):
|
|
||||||
obj_dict = obj
|
|
||||||
else:
|
|
||||||
# Convert model obj to dict except
|
|
||||||
# attributes `openapi_types`, `attribute_map`
|
|
||||||
# and attributes which value is not None.
|
|
||||||
# Convert attribute name to json key in
|
|
||||||
# model definition for request.
|
|
||||||
obj_dict = obj.to_dict()
|
|
||||||
|
|
||||||
return {key: self.sanitize_for_serialization(val)
|
|
||||||
for key, val in obj_dict.items()}
|
|
||||||
|
|
||||||
def deserialize(self, response, response_type):
|
|
||||||
"""Deserializes response into an object.
|
|
||||||
|
|
||||||
:param response: RESTResponse object to be deserialized.
|
|
||||||
:param response_type: class literal for
|
|
||||||
deserialized object, or string of class name.
|
|
||||||
|
|
||||||
:return: deserialized object.
|
|
||||||
"""
|
|
||||||
# handle file downloading
|
|
||||||
# save response body into a tmp file and return the instance
|
|
||||||
if response_type == "file":
|
|
||||||
return self.__deserialize_file(response)
|
|
||||||
|
|
||||||
# fetch data from response object
|
|
||||||
try:
|
|
||||||
data = json.loads(response.data)
|
|
||||||
except ValueError:
|
|
||||||
data = response.data
|
|
||||||
|
|
||||||
return self.__deserialize(data, response_type)
|
|
||||||
|
|
||||||
def __deserialize(self, data, klass):
|
|
||||||
"""Deserializes dict, list, str into an object.
|
|
||||||
|
|
||||||
:param data: dict, list or str.
|
|
||||||
:param klass: class literal, or string of class name.
|
|
||||||
|
|
||||||
:return: object.
|
|
||||||
"""
|
|
||||||
if data is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if isinstance(klass, str):
|
|
||||||
if klass.startswith('List['):
|
|
||||||
sub_kls = re.match(r'List\[(.*)]', klass).group(1)
|
|
||||||
return [self.__deserialize(sub_data, sub_kls)
|
|
||||||
for sub_data in data]
|
|
||||||
|
|
||||||
if klass.startswith('Dict['):
|
|
||||||
sub_kls = re.match(r'Dict\[([^,]*), (.*)]', klass).group(2)
|
|
||||||
return {k: self.__deserialize(v, sub_kls)
|
|
||||||
for k, v in data.items()}
|
|
||||||
|
|
||||||
# convert str to class
|
|
||||||
if klass in self.NATIVE_TYPES_MAPPING:
|
|
||||||
klass = self.NATIVE_TYPES_MAPPING[klass]
|
|
||||||
else:
|
|
||||||
klass = getattr(openapi_client.models, klass)
|
|
||||||
|
|
||||||
if klass in self.PRIMITIVE_TYPES:
|
|
||||||
return self.__deserialize_primitive(data, klass)
|
|
||||||
elif klass == object:
|
|
||||||
return self.__deserialize_object(data)
|
|
||||||
elif klass == datetime.date:
|
|
||||||
return self.__deserialize_date(data)
|
|
||||||
elif klass == datetime.datetime:
|
|
||||||
return self.__deserialize_datetime(data)
|
|
||||||
else:
|
|
||||||
return self.__deserialize_model(data, klass)
|
|
||||||
|
|
||||||
def call_api(self, resource_path, method,
|
|
||||||
path_params=None, query_params=None, header_params=None,
|
|
||||||
body=None, post_params=None, files=None,
|
|
||||||
response_types_map=None, auth_settings=None,
|
|
||||||
async_req=None, _return_http_data_only=None,
|
|
||||||
collection_formats=None, _preload_content=True,
|
|
||||||
_request_timeout=None, _host=None, _request_auth=None):
|
|
||||||
"""Makes the HTTP request (synchronous) and returns deserialized data.
|
|
||||||
|
|
||||||
To make an async_req request, set the async_req parameter.
|
|
||||||
|
|
||||||
:param resource_path: Path to method endpoint.
|
|
||||||
:param method: Method to call.
|
|
||||||
:param path_params: Path parameters in the url.
|
|
||||||
:param query_params: Query parameters in the url.
|
|
||||||
:param header_params: Header parameters to be
|
|
||||||
placed in the request header.
|
|
||||||
:param body: Request body.
|
|
||||||
:param post_params dict: Request post form parameters,
|
|
||||||
for `application/x-www-form-urlencoded`, `multipart/form-data`.
|
|
||||||
:param auth_settings list: Auth Settings names for the request.
|
|
||||||
:param response: Response data type.
|
|
||||||
:param files dict: key -> filename, value -> filepath,
|
|
||||||
for `multipart/form-data`.
|
|
||||||
:param async_req bool: execute request asynchronously
|
|
||||||
:param _return_http_data_only: response data instead of ApiResponse
|
|
||||||
object with status code, headers, etc
|
|
||||||
:param _preload_content: if False, the ApiResponse.data will
|
|
||||||
be set to none and raw_data will store the
|
|
||||||
HTTP response body without reading/decoding.
|
|
||||||
Default is True.
|
|
||||||
:param collection_formats: dict of collection formats for path, query,
|
|
||||||
header, and post parameters.
|
|
||||||
:param _request_timeout: timeout setting for this request. If one
|
|
||||||
number provided, it will be total request
|
|
||||||
timeout. It can also be a pair (tuple) of
|
|
||||||
(connection, read) timeouts.
|
|
||||||
:param _request_auth: set to override the auth_settings for an a single
|
|
||||||
request; this effectively ignores the authentication
|
|
||||||
in the spec for a single request.
|
|
||||||
:type _request_token: dict, optional
|
|
||||||
:return:
|
|
||||||
If async_req parameter is True,
|
|
||||||
the request will be called asynchronously.
|
|
||||||
The method will return the request thread.
|
|
||||||
If parameter async_req is False or missing,
|
|
||||||
then the method will return the response directly.
|
|
||||||
"""
|
|
||||||
if not async_req:
|
|
||||||
return self.__call_api(resource_path, method,
|
|
||||||
path_params, query_params, header_params,
|
|
||||||
body, post_params, files,
|
|
||||||
response_types_map, auth_settings,
|
|
||||||
_return_http_data_only, collection_formats,
|
|
||||||
_preload_content, _request_timeout, _host,
|
|
||||||
_request_auth)
|
|
||||||
|
|
||||||
return self.pool.apply_async(self.__call_api, (resource_path,
|
|
||||||
method, path_params,
|
|
||||||
query_params,
|
|
||||||
header_params, body,
|
|
||||||
post_params, files,
|
|
||||||
response_types_map,
|
|
||||||
auth_settings,
|
|
||||||
_return_http_data_only,
|
|
||||||
collection_formats,
|
|
||||||
_preload_content,
|
|
||||||
_request_timeout,
|
|
||||||
_host, _request_auth))
|
|
||||||
|
|
||||||
def request(self, method, url, query_params=None, headers=None,
|
|
||||||
post_params=None, body=None, _preload_content=True,
|
|
||||||
_request_timeout=None):
|
|
||||||
"""Makes the HTTP request using RESTClient."""
|
|
||||||
if method == "GET":
|
|
||||||
return self.rest_client.get_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
headers=headers)
|
|
||||||
elif method == "HEAD":
|
|
||||||
return self.rest_client.head_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
headers=headers)
|
|
||||||
elif method == "OPTIONS":
|
|
||||||
return self.rest_client.options_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
headers=headers,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout)
|
|
||||||
elif method == "POST":
|
|
||||||
return self.rest_client.post_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
headers=headers,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
elif method == "PUT":
|
|
||||||
return self.rest_client.put_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
headers=headers,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
elif method == "PATCH":
|
|
||||||
return self.rest_client.patch_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
headers=headers,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
elif method == "DELETE":
|
|
||||||
return self.rest_client.delete_request(url,
|
|
||||||
query_params=query_params,
|
|
||||||
headers=headers,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
else:
|
|
||||||
raise ApiValueError(
|
|
||||||
"http method must be `GET`, `HEAD`, `OPTIONS`,"
|
|
||||||
" `POST`, `PATCH`, `PUT` or `DELETE`."
|
|
||||||
)
|
|
||||||
|
|
||||||
def parameters_to_tuples(self, params, collection_formats):
|
|
||||||
"""Get parameters as list of tuples, formatting collections.
|
|
||||||
|
|
||||||
:param params: Parameters as dict or list of two-tuples
|
|
||||||
:param dict collection_formats: Parameter collection formats
|
|
||||||
:return: Parameters as list of tuples, collections formatted
|
|
||||||
"""
|
|
||||||
new_params = []
|
|
||||||
if collection_formats is None:
|
|
||||||
collection_formats = {}
|
|
||||||
for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
|
|
||||||
if k in collection_formats:
|
|
||||||
collection_format = collection_formats[k]
|
|
||||||
if collection_format == 'multi':
|
|
||||||
new_params.extend((k, value) for value in v)
|
|
||||||
else:
|
|
||||||
if collection_format == 'ssv':
|
|
||||||
delimiter = ' '
|
|
||||||
elif collection_format == 'tsv':
|
|
||||||
delimiter = '\t'
|
|
||||||
elif collection_format == 'pipes':
|
|
||||||
delimiter = '|'
|
|
||||||
else: # csv is the default
|
|
||||||
delimiter = ','
|
|
||||||
new_params.append(
|
|
||||||
(k, delimiter.join(str(value) for value in v)))
|
|
||||||
else:
|
|
||||||
new_params.append((k, v))
|
|
||||||
return new_params
|
|
||||||
|
|
||||||
def parameters_to_url_query(self, params, collection_formats):
|
|
||||||
"""Get parameters as list of tuples, formatting collections.
|
|
||||||
|
|
||||||
:param params: Parameters as dict or list of two-tuples
|
|
||||||
:param dict collection_formats: Parameter collection formats
|
|
||||||
:return: URL query string (e.g. a=Hello%20World&b=123)
|
|
||||||
"""
|
|
||||||
new_params = []
|
|
||||||
if collection_formats is None:
|
|
||||||
collection_formats = {}
|
|
||||||
for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
|
|
||||||
if isinstance(v, (int, float)):
|
|
||||||
v = str(v)
|
|
||||||
if isinstance(v, bool):
|
|
||||||
v = str(v).lower()
|
|
||||||
if isinstance(v, dict):
|
|
||||||
v = json.dumps(v)
|
|
||||||
|
|
||||||
if k in collection_formats:
|
|
||||||
collection_format = collection_formats[k]
|
|
||||||
if collection_format == 'multi':
|
|
||||||
new_params.extend((k, value) for value in v)
|
|
||||||
else:
|
|
||||||
if collection_format == 'ssv':
|
|
||||||
delimiter = ' '
|
|
||||||
elif collection_format == 'tsv':
|
|
||||||
delimiter = '\t'
|
|
||||||
elif collection_format == 'pipes':
|
|
||||||
delimiter = '|'
|
|
||||||
else: # csv is the default
|
|
||||||
delimiter = ','
|
|
||||||
new_params.append(
|
|
||||||
(k, delimiter.join(quote(str(value)) for value in v)))
|
|
||||||
else:
|
|
||||||
new_params.append((k, quote(str(v))))
|
|
||||||
|
|
||||||
return "&".join(["=".join(item) for item in new_params])
|
|
||||||
|
|
||||||
def files_parameters(self, files=None):
|
|
||||||
"""Builds form parameters.
|
|
||||||
|
|
||||||
:param files: File parameters.
|
|
||||||
:return: Form parameters with files.
|
|
||||||
"""
|
|
||||||
params = []
|
|
||||||
|
|
||||||
if files:
|
|
||||||
for k, v in files.items():
|
|
||||||
if not v:
|
|
||||||
continue
|
|
||||||
file_names = v if type(v) is list else [v]
|
|
||||||
for n in file_names:
|
|
||||||
with open(n, 'rb') as f:
|
|
||||||
filename = os.path.basename(f.name)
|
|
||||||
filedata = f.read()
|
|
||||||
mimetype = (mimetypes.guess_type(filename)[0] or
|
|
||||||
'application/octet-stream')
|
|
||||||
params.append(
|
|
||||||
tuple([k, tuple([filename, filedata, mimetype])]))
|
|
||||||
|
|
||||||
return params
|
|
||||||
|
|
||||||
def select_header_accept(self, accepts):
|
|
||||||
"""Returns `Accept` based on an array of accepts provided.
|
|
||||||
|
|
||||||
:param accepts: List of headers.
|
|
||||||
:return: Accept (e.g. application/json).
|
|
||||||
"""
|
|
||||||
if not accepts:
|
|
||||||
return
|
|
||||||
|
|
||||||
for accept in accepts:
|
|
||||||
if re.search('json', accept, re.IGNORECASE):
|
|
||||||
return accept
|
|
||||||
|
|
||||||
return accepts[0]
|
|
||||||
|
|
||||||
def select_header_content_type(self, content_types):
|
|
||||||
"""Returns `Content-Type` based on an array of content_types provided.
|
|
||||||
|
|
||||||
:param content_types: List of content-types.
|
|
||||||
:return: Content-Type (e.g. application/json).
|
|
||||||
"""
|
|
||||||
if not content_types:
|
|
||||||
return None
|
|
||||||
|
|
||||||
for content_type in content_types:
|
|
||||||
if re.search('json', content_type, re.IGNORECASE):
|
|
||||||
return content_type
|
|
||||||
|
|
||||||
return content_types[0]
|
|
||||||
|
|
||||||
def update_params_for_auth(self, headers, queries, auth_settings,
|
|
||||||
resource_path, method, body,
|
|
||||||
request_auth=None):
|
|
||||||
"""Updates header and query params based on authentication setting.
|
|
||||||
|
|
||||||
:param headers: Header parameters dict to be updated.
|
|
||||||
:param queries: Query parameters tuple list to be updated.
|
|
||||||
:param auth_settings: Authentication setting identifiers list.
|
|
||||||
:resource_path: A string representation of the HTTP request resource path.
|
|
||||||
:method: A string representation of the HTTP request method.
|
|
||||||
:body: A object representing the body of the HTTP request.
|
|
||||||
The object type is the return value of sanitize_for_serialization().
|
|
||||||
:param request_auth: if set, the provided settings will
|
|
||||||
override the token in the configuration.
|
|
||||||
"""
|
|
||||||
if not auth_settings:
|
|
||||||
return
|
|
||||||
|
|
||||||
if request_auth:
|
|
||||||
self._apply_auth_params(headers, queries,
|
|
||||||
resource_path, method, body,
|
|
||||||
request_auth)
|
|
||||||
return
|
|
||||||
|
|
||||||
for auth in auth_settings:
|
|
||||||
auth_setting = self.configuration.auth_settings().get(auth)
|
|
||||||
if auth_setting:
|
|
||||||
self._apply_auth_params(headers, queries,
|
|
||||||
resource_path, method, body,
|
|
||||||
auth_setting)
|
|
||||||
|
|
||||||
def _apply_auth_params(self, headers, queries,
|
|
||||||
resource_path, method, body,
|
|
||||||
auth_setting):
|
|
||||||
"""Updates the request parameters based on a single auth_setting
|
|
||||||
|
|
||||||
:param headers: Header parameters dict to be updated.
|
|
||||||
:param queries: Query parameters tuple list to be updated.
|
|
||||||
:resource_path: A string representation of the HTTP request resource path.
|
|
||||||
:method: A string representation of the HTTP request method.
|
|
||||||
:body: A object representing the body of the HTTP request.
|
|
||||||
The object type is the return value of sanitize_for_serialization().
|
|
||||||
:param auth_setting: auth settings for the endpoint
|
|
||||||
"""
|
|
||||||
if auth_setting['in'] == 'cookie':
|
|
||||||
headers['Cookie'] = auth_setting['value']
|
|
||||||
elif auth_setting['in'] == 'header':
|
|
||||||
if auth_setting['type'] != 'http-signature':
|
|
||||||
headers[auth_setting['key']] = auth_setting['value']
|
|
||||||
elif auth_setting['in'] == 'query':
|
|
||||||
queries.append((auth_setting['key'], auth_setting['value']))
|
|
||||||
else:
|
|
||||||
raise ApiValueError(
|
|
||||||
'Authentication token must be in `query` or `header`'
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_file(self, response):
|
|
||||||
"""Deserializes body to file
|
|
||||||
|
|
||||||
Saves response body into a file in a temporary folder,
|
|
||||||
using the filename from the `Content-Disposition` header if provided.
|
|
||||||
|
|
||||||
:param response: RESTResponse.
|
|
||||||
:return: file path.
|
|
||||||
"""
|
|
||||||
fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
|
|
||||||
os.close(fd)
|
|
||||||
os.remove(path)
|
|
||||||
|
|
||||||
content_disposition = response.getheader("Content-Disposition")
|
|
||||||
if content_disposition:
|
|
||||||
filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?',
|
|
||||||
content_disposition).group(1)
|
|
||||||
path = os.path.join(os.path.dirname(path), filename)
|
|
||||||
|
|
||||||
with open(path, "wb") as f:
|
|
||||||
f.write(response.data)
|
|
||||||
|
|
||||||
return path
|
|
||||||
|
|
||||||
def __deserialize_primitive(self, data, klass):
|
|
||||||
"""Deserializes string to primitive type.
|
|
||||||
|
|
||||||
:param data: str.
|
|
||||||
:param klass: class literal.
|
|
||||||
|
|
||||||
:return: int, long, float, str, bool.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return klass(data)
|
|
||||||
except UnicodeEncodeError:
|
|
||||||
return str(data)
|
|
||||||
except TypeError:
|
|
||||||
return data
|
|
||||||
|
|
||||||
def __deserialize_object(self, value):
|
|
||||||
"""Return an original value.
|
|
||||||
|
|
||||||
:return: object.
|
|
||||||
"""
|
|
||||||
return value
|
|
||||||
|
|
||||||
def __deserialize_date(self, string):
|
|
||||||
"""Deserializes string to date.
|
|
||||||
|
|
||||||
:param string: str.
|
|
||||||
:return: date.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return parse(string).date()
|
|
||||||
except ImportError:
|
|
||||||
return string
|
|
||||||
except ValueError:
|
|
||||||
raise rest.ApiException(
|
|
||||||
status=0,
|
|
||||||
reason="Failed to parse `{0}` as date object".format(string)
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_datetime(self, string):
|
|
||||||
"""Deserializes string to datetime.
|
|
||||||
|
|
||||||
The string should be in iso8601 datetime format.
|
|
||||||
|
|
||||||
:param string: str.
|
|
||||||
:return: datetime.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return parse(string)
|
|
||||||
except ImportError:
|
|
||||||
return string
|
|
||||||
except ValueError:
|
|
||||||
raise rest.ApiException(
|
|
||||||
status=0,
|
|
||||||
reason=(
|
|
||||||
"Failed to parse `{0}` as datetime object"
|
|
||||||
.format(string)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_model(self, data, klass):
|
|
||||||
"""Deserializes list or dict to model.
|
|
||||||
|
|
||||||
:param data: dict, list.
|
|
||||||
:param klass: class literal.
|
|
||||||
:return: model object.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return klass.from_dict(data)
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
"""API response object."""
|
|
||||||
|
|
||||||
from __future__ import annotations
|
|
||||||
from typing import Any, Dict, Optional
|
|
||||||
from pydantic import Field, StrictInt, StrictStr
|
|
||||||
|
|
||||||
class ApiResponse:
|
|
||||||
"""
|
|
||||||
API response object
|
|
||||||
"""
|
|
||||||
|
|
||||||
status_code: Optional[StrictInt] = Field(None, description="HTTP status code")
|
|
||||||
headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers")
|
|
||||||
data: Optional[Any] = Field(None, description="Deserialized data given the data type")
|
|
||||||
raw_data: Optional[Any] = Field(None, description="Raw data (HTTP response body)")
|
|
||||||
|
|
||||||
def __init__(self,
|
|
||||||
status_code=None,
|
|
||||||
headers=None,
|
|
||||||
data=None,
|
|
||||||
raw_data=None) -> None:
|
|
||||||
self.status_code = status_code
|
|
||||||
self.headers = headers
|
|
||||||
self.data = data
|
|
||||||
self.raw_data = raw_data
|
|
||||||
@@ -1,434 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import copy
|
|
||||||
import logging
|
|
||||||
import multiprocessing
|
|
||||||
import sys
|
|
||||||
import urllib3
|
|
||||||
|
|
||||||
import http.client as httplib
|
|
||||||
|
|
||||||
JSON_SCHEMA_VALIDATION_KEYWORDS = {
|
|
||||||
'multipleOf', 'maximum', 'exclusiveMaximum',
|
|
||||||
'minimum', 'exclusiveMinimum', 'maxLength',
|
|
||||||
'minLength', 'pattern', 'maxItems', 'minItems'
|
|
||||||
}
|
|
||||||
|
|
||||||
class Configuration:
|
|
||||||
"""This class contains various settings of the API client.
|
|
||||||
|
|
||||||
:param host: Base url.
|
|
||||||
:param api_key: Dict to store API key(s).
|
|
||||||
Each entry in the dict specifies an API key.
|
|
||||||
The dict key is the name of the security scheme in the OAS specification.
|
|
||||||
The dict value is the API key secret.
|
|
||||||
:param api_key_prefix: Dict to store API prefix (e.g. Bearer).
|
|
||||||
The dict key is the name of the security scheme in the OAS specification.
|
|
||||||
The dict value is an API key prefix when generating the auth data.
|
|
||||||
:param username: Username for HTTP basic authentication.
|
|
||||||
:param password: Password for HTTP basic authentication.
|
|
||||||
:param access_token: Access token.
|
|
||||||
:param server_index: Index to servers configuration.
|
|
||||||
:param server_variables: Mapping with string values to replace variables in
|
|
||||||
templated server configuration. The validation of enums is performed for
|
|
||||||
variables with defined enum values before.
|
|
||||||
:param server_operation_index: Mapping from operation ID to an index to server
|
|
||||||
configuration.
|
|
||||||
:param server_operation_variables: Mapping from operation ID to a mapping with
|
|
||||||
string values to replace variables in templated server configuration.
|
|
||||||
The validation of enums is performed for variables with defined enum
|
|
||||||
values before.
|
|
||||||
:param ssl_ca_cert: str - the path to a file of concatenated CA certificates
|
|
||||||
in PEM format.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
_default = None
|
|
||||||
|
|
||||||
def __init__(self, host=None,
|
|
||||||
api_key=None, api_key_prefix=None,
|
|
||||||
username=None, password=None,
|
|
||||||
access_token=None,
|
|
||||||
server_index=None, server_variables=None,
|
|
||||||
server_operation_index=None, server_operation_variables=None,
|
|
||||||
ssl_ca_cert=None,
|
|
||||||
) -> None:
|
|
||||||
"""Constructor
|
|
||||||
"""
|
|
||||||
self._base_path = "https://boardmate_api" if host is None else host
|
|
||||||
"""Default Base url
|
|
||||||
"""
|
|
||||||
self.server_index = 0 if server_index is None and host is None else server_index
|
|
||||||
self.server_operation_index = server_operation_index or {}
|
|
||||||
"""Default server index
|
|
||||||
"""
|
|
||||||
self.server_variables = server_variables or {}
|
|
||||||
self.server_operation_variables = server_operation_variables or {}
|
|
||||||
"""Default server variables
|
|
||||||
"""
|
|
||||||
self.temp_folder_path = None
|
|
||||||
"""Temp file folder for downloading files
|
|
||||||
"""
|
|
||||||
# Authentication Settings
|
|
||||||
self.api_key = {}
|
|
||||||
if api_key:
|
|
||||||
self.api_key = api_key
|
|
||||||
"""dict to store API key(s)
|
|
||||||
"""
|
|
||||||
self.api_key_prefix = {}
|
|
||||||
if api_key_prefix:
|
|
||||||
self.api_key_prefix = api_key_prefix
|
|
||||||
"""dict to store API prefix (e.g. Bearer)
|
|
||||||
"""
|
|
||||||
self.refresh_api_key_hook = None
|
|
||||||
"""function hook to refresh API key if expired
|
|
||||||
"""
|
|
||||||
self.username = username
|
|
||||||
"""Username for HTTP basic authentication
|
|
||||||
"""
|
|
||||||
self.password = password
|
|
||||||
"""Password for HTTP basic authentication
|
|
||||||
"""
|
|
||||||
self.access_token = access_token
|
|
||||||
"""Access token
|
|
||||||
"""
|
|
||||||
self.logger = {}
|
|
||||||
"""Logging Settings
|
|
||||||
"""
|
|
||||||
self.logger["package_logger"] = logging.getLogger("openapi_client")
|
|
||||||
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
|
|
||||||
self.logger_format = '%(asctime)s %(levelname)s %(message)s'
|
|
||||||
"""Log format
|
|
||||||
"""
|
|
||||||
self.logger_stream_handler = None
|
|
||||||
"""Log stream handler
|
|
||||||
"""
|
|
||||||
self.logger_file_handler = None
|
|
||||||
"""Log file handler
|
|
||||||
"""
|
|
||||||
self.logger_file = None
|
|
||||||
"""Debug file location
|
|
||||||
"""
|
|
||||||
self.debug = False
|
|
||||||
"""Debug switch
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.verify_ssl = True
|
|
||||||
"""SSL/TLS verification
|
|
||||||
Set this to false to skip verifying SSL certificate when calling API
|
|
||||||
from https server.
|
|
||||||
"""
|
|
||||||
self.ssl_ca_cert = ssl_ca_cert
|
|
||||||
"""Set this to customize the certificate file to verify the peer.
|
|
||||||
"""
|
|
||||||
self.cert_file = None
|
|
||||||
"""client certificate file
|
|
||||||
"""
|
|
||||||
self.key_file = None
|
|
||||||
"""client key file
|
|
||||||
"""
|
|
||||||
self.assert_hostname = None
|
|
||||||
"""Set this to True/False to enable/disable SSL hostname verification.
|
|
||||||
"""
|
|
||||||
self.tls_server_name = None
|
|
||||||
"""SSL/TLS Server Name Indication (SNI)
|
|
||||||
Set this to the SNI value expected by the server.
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
|
|
||||||
"""urllib3 connection pool's maximum number of connections saved
|
|
||||||
per pool. urllib3 uses 1 connection as default value, but this is
|
|
||||||
not the best value when you are making a lot of possibly parallel
|
|
||||||
requests to the same host, which is often the case here.
|
|
||||||
cpu_count * 5 is used as default value to increase performance.
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.proxy = None
|
|
||||||
"""Proxy URL
|
|
||||||
"""
|
|
||||||
self.proxy_headers = None
|
|
||||||
"""Proxy headers
|
|
||||||
"""
|
|
||||||
self.safe_chars_for_path_param = ''
|
|
||||||
"""Safe chars for path_param
|
|
||||||
"""
|
|
||||||
self.retries = None
|
|
||||||
"""Adding retries to override urllib3 default value 3
|
|
||||||
"""
|
|
||||||
# Enable client side validation
|
|
||||||
self.client_side_validation = True
|
|
||||||
|
|
||||||
self.socket_options = None
|
|
||||||
"""Options to pass down to the underlying urllib3 socket
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z"
|
|
||||||
"""datetime format
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.date_format = "%Y-%m-%d"
|
|
||||||
"""date format
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __deepcopy__(self, memo):
|
|
||||||
cls = self.__class__
|
|
||||||
result = cls.__new__(cls)
|
|
||||||
memo[id(self)] = result
|
|
||||||
for k, v in self.__dict__.items():
|
|
||||||
if k not in ('logger', 'logger_file_handler'):
|
|
||||||
setattr(result, k, copy.deepcopy(v, memo))
|
|
||||||
# shallow copy of loggers
|
|
||||||
result.logger = copy.copy(self.logger)
|
|
||||||
# use setters to configure loggers
|
|
||||||
result.logger_file = self.logger_file
|
|
||||||
result.debug = self.debug
|
|
||||||
return result
|
|
||||||
|
|
||||||
def __setattr__(self, name, value):
|
|
||||||
object.__setattr__(self, name, value)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def set_default(cls, default):
|
|
||||||
"""Set default instance of configuration.
|
|
||||||
|
|
||||||
It stores default configuration, which can be
|
|
||||||
returned by get_default_copy method.
|
|
||||||
|
|
||||||
:param default: object of Configuration
|
|
||||||
"""
|
|
||||||
cls._default = default
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_default_copy(cls):
|
|
||||||
"""Deprecated. Please use `get_default` instead.
|
|
||||||
|
|
||||||
Deprecated. Please use `get_default` instead.
|
|
||||||
|
|
||||||
:return: The configuration object.
|
|
||||||
"""
|
|
||||||
return cls.get_default()
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_default(cls):
|
|
||||||
"""Return the default configuration.
|
|
||||||
|
|
||||||
This method returns newly created, based on default constructor,
|
|
||||||
object of Configuration class or returns a copy of default
|
|
||||||
configuration.
|
|
||||||
|
|
||||||
:return: The configuration object.
|
|
||||||
"""
|
|
||||||
if cls._default is None:
|
|
||||||
cls._default = Configuration()
|
|
||||||
return cls._default
|
|
||||||
|
|
||||||
@property
|
|
||||||
def logger_file(self):
|
|
||||||
"""The logger file.
|
|
||||||
|
|
||||||
If the logger_file is None, then add stream handler and remove file
|
|
||||||
handler. Otherwise, add file handler and remove stream handler.
|
|
||||||
|
|
||||||
:param value: The logger_file path.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
return self.__logger_file
|
|
||||||
|
|
||||||
@logger_file.setter
|
|
||||||
def logger_file(self, value):
|
|
||||||
"""The logger file.
|
|
||||||
|
|
||||||
If the logger_file is None, then add stream handler and remove file
|
|
||||||
handler. Otherwise, add file handler and remove stream handler.
|
|
||||||
|
|
||||||
:param value: The logger_file path.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
self.__logger_file = value
|
|
||||||
if self.__logger_file:
|
|
||||||
# If set logging file,
|
|
||||||
# then add file handler and remove stream handler.
|
|
||||||
self.logger_file_handler = logging.FileHandler(self.__logger_file)
|
|
||||||
self.logger_file_handler.setFormatter(self.logger_formatter)
|
|
||||||
for _, logger in self.logger.items():
|
|
||||||
logger.addHandler(self.logger_file_handler)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def debug(self):
|
|
||||||
"""Debug status
|
|
||||||
|
|
||||||
:param value: The debug status, True or False.
|
|
||||||
:type: bool
|
|
||||||
"""
|
|
||||||
return self.__debug
|
|
||||||
|
|
||||||
@debug.setter
|
|
||||||
def debug(self, value):
|
|
||||||
"""Debug status
|
|
||||||
|
|
||||||
:param value: The debug status, True or False.
|
|
||||||
:type: bool
|
|
||||||
"""
|
|
||||||
self.__debug = value
|
|
||||||
if self.__debug:
|
|
||||||
# if debug status is True, turn on debug logging
|
|
||||||
for _, logger in self.logger.items():
|
|
||||||
logger.setLevel(logging.DEBUG)
|
|
||||||
# turn on httplib debug
|
|
||||||
httplib.HTTPConnection.debuglevel = 1
|
|
||||||
else:
|
|
||||||
# if debug status is False, turn off debug logging,
|
|
||||||
# setting log level to default `logging.WARNING`
|
|
||||||
for _, logger in self.logger.items():
|
|
||||||
logger.setLevel(logging.WARNING)
|
|
||||||
# turn off httplib debug
|
|
||||||
httplib.HTTPConnection.debuglevel = 0
|
|
||||||
|
|
||||||
@property
|
|
||||||
def logger_format(self):
|
|
||||||
"""The logger format.
|
|
||||||
|
|
||||||
The logger_formatter will be updated when sets logger_format.
|
|
||||||
|
|
||||||
:param value: The format string.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
return self.__logger_format
|
|
||||||
|
|
||||||
@logger_format.setter
|
|
||||||
def logger_format(self, value):
|
|
||||||
"""The logger format.
|
|
||||||
|
|
||||||
The logger_formatter will be updated when sets logger_format.
|
|
||||||
|
|
||||||
:param value: The format string.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
self.__logger_format = value
|
|
||||||
self.logger_formatter = logging.Formatter(self.__logger_format)
|
|
||||||
|
|
||||||
def get_api_key_with_prefix(self, identifier, alias=None):
|
|
||||||
"""Gets API key (with prefix if set).
|
|
||||||
|
|
||||||
:param identifier: The identifier of apiKey.
|
|
||||||
:param alias: The alternative identifier of apiKey.
|
|
||||||
:return: The token for api key authentication.
|
|
||||||
"""
|
|
||||||
if self.refresh_api_key_hook is not None:
|
|
||||||
self.refresh_api_key_hook(self)
|
|
||||||
key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
|
|
||||||
if key:
|
|
||||||
prefix = self.api_key_prefix.get(identifier)
|
|
||||||
if prefix:
|
|
||||||
return "%s %s" % (prefix, key)
|
|
||||||
else:
|
|
||||||
return key
|
|
||||||
|
|
||||||
def get_basic_auth_token(self):
|
|
||||||
"""Gets HTTP basic authentication header (string).
|
|
||||||
|
|
||||||
:return: The token for basic HTTP authentication.
|
|
||||||
"""
|
|
||||||
username = ""
|
|
||||||
if self.username is not None:
|
|
||||||
username = self.username
|
|
||||||
password = ""
|
|
||||||
if self.password is not None:
|
|
||||||
password = self.password
|
|
||||||
return urllib3.util.make_headers(
|
|
||||||
basic_auth=username + ':' + password
|
|
||||||
).get('authorization')
|
|
||||||
|
|
||||||
def auth_settings(self):
|
|
||||||
"""Gets Auth Settings dict for api client.
|
|
||||||
|
|
||||||
:return: The Auth Settings information dict.
|
|
||||||
"""
|
|
||||||
auth = {}
|
|
||||||
return auth
|
|
||||||
|
|
||||||
def to_debug_report(self):
|
|
||||||
"""Gets the essential information for debugging.
|
|
||||||
|
|
||||||
:return: The report for debugging.
|
|
||||||
"""
|
|
||||||
return "Python SDK Debug Report:\n"\
|
|
||||||
"OS: {env}\n"\
|
|
||||||
"Python Version: {pyversion}\n"\
|
|
||||||
"Version of the API: 1.0.0\n"\
|
|
||||||
"SDK Package Version: 1.0.0".\
|
|
||||||
format(env=sys.platform, pyversion=sys.version)
|
|
||||||
|
|
||||||
def get_host_settings(self):
|
|
||||||
"""Gets an array of host settings
|
|
||||||
|
|
||||||
:return: An array of host settings
|
|
||||||
"""
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
'url': "https://boardmate_api",
|
|
||||||
'description': "No description provided",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
def get_host_from_settings(self, index, variables=None, servers=None):
|
|
||||||
"""Gets host URL based on the index and variables
|
|
||||||
:param index: array index of the host settings
|
|
||||||
:param variables: hash of variable and the corresponding value
|
|
||||||
:param servers: an array of host settings or None
|
|
||||||
:return: URL based on host settings
|
|
||||||
"""
|
|
||||||
if index is None:
|
|
||||||
return self._base_path
|
|
||||||
|
|
||||||
variables = {} if variables is None else variables
|
|
||||||
servers = self.get_host_settings() if servers is None else servers
|
|
||||||
|
|
||||||
try:
|
|
||||||
server = servers[index]
|
|
||||||
except IndexError:
|
|
||||||
raise ValueError(
|
|
||||||
"Invalid index {0} when selecting the host settings. "
|
|
||||||
"Must be less than {1}".format(index, len(servers)))
|
|
||||||
|
|
||||||
url = server['url']
|
|
||||||
|
|
||||||
# go through variables and replace placeholders
|
|
||||||
for variable_name, variable in server.get('variables', {}).items():
|
|
||||||
used_value = variables.get(
|
|
||||||
variable_name, variable['default_value'])
|
|
||||||
|
|
||||||
if 'enum_values' in variable \
|
|
||||||
and used_value not in variable['enum_values']:
|
|
||||||
raise ValueError(
|
|
||||||
"The variable `{0}` in the host URL has invalid value "
|
|
||||||
"{1}. Must be {2}.".format(
|
|
||||||
variable_name, variables[variable_name],
|
|
||||||
variable['enum_values']))
|
|
||||||
|
|
||||||
url = url.replace("{" + variable_name + "}", used_value)
|
|
||||||
|
|
||||||
return url
|
|
||||||
|
|
||||||
@property
|
|
||||||
def host(self):
|
|
||||||
"""Return generated host."""
|
|
||||||
return self.get_host_from_settings(self.server_index, variables=self.server_variables)
|
|
||||||
|
|
||||||
@host.setter
|
|
||||||
def host(self, value):
|
|
||||||
"""Fix base path."""
|
|
||||||
self._base_path = value
|
|
||||||
self.server_index = None
|
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
class OpenApiException(Exception):
|
|
||||||
"""The base exception class for all OpenAPIExceptions"""
|
|
||||||
|
|
||||||
|
|
||||||
class ApiTypeError(OpenApiException, TypeError):
|
|
||||||
def __init__(self, msg, path_to_item=None, valid_classes=None,
|
|
||||||
key_type=None) -> None:
|
|
||||||
""" Raises an exception for TypeErrors
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (list): a list of keys an indices to get to the
|
|
||||||
current_item
|
|
||||||
None if unset
|
|
||||||
valid_classes (tuple): the primitive classes that current item
|
|
||||||
should be an instance of
|
|
||||||
None if unset
|
|
||||||
key_type (bool): False if our value is a value in a dict
|
|
||||||
True if it is a key in a dict
|
|
||||||
False if our item is an item in a list
|
|
||||||
None if unset
|
|
||||||
"""
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
self.valid_classes = valid_classes
|
|
||||||
self.key_type = key_type
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiTypeError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiValueError(OpenApiException, ValueError):
|
|
||||||
def __init__(self, msg, path_to_item=None) -> None:
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (list) the path to the exception in the
|
|
||||||
received_data dict. None if unset
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiValueError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiAttributeError(OpenApiException, AttributeError):
|
|
||||||
def __init__(self, msg, path_to_item=None) -> None:
|
|
||||||
"""
|
|
||||||
Raised when an attribute reference or assignment fails.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (None/list) the path to the exception in the
|
|
||||||
received_data dict
|
|
||||||
"""
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiAttributeError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiKeyError(OpenApiException, KeyError):
|
|
||||||
def __init__(self, msg, path_to_item=None) -> None:
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (None/list) the path to the exception in the
|
|
||||||
received_data dict
|
|
||||||
"""
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiKeyError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiException(OpenApiException):
|
|
||||||
|
|
||||||
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
|
||||||
if http_resp:
|
|
||||||
self.status = http_resp.status
|
|
||||||
self.reason = http_resp.reason
|
|
||||||
self.body = http_resp.data
|
|
||||||
self.headers = http_resp.getheaders()
|
|
||||||
else:
|
|
||||||
self.status = status
|
|
||||||
self.reason = reason
|
|
||||||
self.body = None
|
|
||||||
self.headers = None
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Custom error messages for exception"""
|
|
||||||
error_message = "({0})\n"\
|
|
||||||
"Reason: {1}\n".format(self.status, self.reason)
|
|
||||||
if self.headers:
|
|
||||||
error_message += "HTTP response headers: {0}\n".format(
|
|
||||||
self.headers)
|
|
||||||
|
|
||||||
if self.body:
|
|
||||||
error_message += "HTTP response body: {0}\n".format(self.body)
|
|
||||||
|
|
||||||
return error_message
|
|
||||||
|
|
||||||
class BadRequestException(ApiException):
|
|
||||||
|
|
||||||
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
|
||||||
super(BadRequestException, self).__init__(status, reason, http_resp)
|
|
||||||
|
|
||||||
class NotFoundException(ApiException):
|
|
||||||
|
|
||||||
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
|
||||||
super(NotFoundException, self).__init__(status, reason, http_resp)
|
|
||||||
|
|
||||||
|
|
||||||
class UnauthorizedException(ApiException):
|
|
||||||
|
|
||||||
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
|
||||||
super(UnauthorizedException, self).__init__(status, reason, http_resp)
|
|
||||||
|
|
||||||
|
|
||||||
class ForbiddenException(ApiException):
|
|
||||||
|
|
||||||
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
|
||||||
super(ForbiddenException, self).__init__(status, reason, http_resp)
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceException(ApiException):
|
|
||||||
|
|
||||||
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
|
||||||
super(ServiceException, self).__init__(status, reason, http_resp)
|
|
||||||
|
|
||||||
|
|
||||||
def render_path(path_to_item):
|
|
||||||
"""Returns a string representation of a path"""
|
|
||||||
result = ""
|
|
||||||
for pth in path_to_item:
|
|
||||||
if isinstance(pth, int):
|
|
||||||
result += "[{0}]".format(pth)
|
|
||||||
else:
|
|
||||||
result += "['{0}']".format(pth)
|
|
||||||
return result
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
# flake8: noqa
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
# import models into model package
|
|
||||||
from openapi_client.models.client_dto import ClientDto
|
|
||||||
from openapi_client.models.response_body_string import ResponseBodyString
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
from __future__ import annotations
|
|
||||||
import pprint
|
|
||||||
import re # noqa: F401
|
|
||||||
import json
|
|
||||||
|
|
||||||
|
|
||||||
from typing import Optional
|
|
||||||
from pydantic import BaseModel, StrictStr
|
|
||||||
|
|
||||||
class ClientDto(BaseModel):
|
|
||||||
"""
|
|
||||||
ClientDto
|
|
||||||
"""
|
|
||||||
name: Optional[StrictStr] = None
|
|
||||||
username: Optional[StrictStr] = None
|
|
||||||
key: Optional[StrictStr] = None
|
|
||||||
__properties = ["name", "username", "key"]
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
"""Pydantic configuration"""
|
|
||||||
allow_population_by_field_name = True
|
|
||||||
validate_assignment = True
|
|
||||||
|
|
||||||
def to_str(self) -> str:
|
|
||||||
"""Returns the string representation of the model using alias"""
|
|
||||||
return pprint.pformat(self.dict(by_alias=True))
|
|
||||||
|
|
||||||
def to_json(self) -> str:
|
|
||||||
"""Returns the JSON representation of the model using alias"""
|
|
||||||
return json.dumps(self.to_dict())
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_json(cls, json_str: str) -> ClientDto:
|
|
||||||
"""Create an instance of ClientDto from a JSON string"""
|
|
||||||
return cls.from_dict(json.loads(json_str))
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""Returns the dictionary representation of the model using alias"""
|
|
||||||
_dict = self.dict(by_alias=True,
|
|
||||||
exclude={
|
|
||||||
},
|
|
||||||
exclude_none=True)
|
|
||||||
return _dict
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_dict(cls, obj: dict) -> ClientDto:
|
|
||||||
"""Create an instance of ClientDto from a dict"""
|
|
||||||
if obj is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if not isinstance(obj, dict):
|
|
||||||
return ClientDto.parse_obj(obj)
|
|
||||||
|
|
||||||
_obj = ClientDto.parse_obj({
|
|
||||||
"name": obj.get("name"),
|
|
||||||
"username": obj.get("username"),
|
|
||||||
"key": obj.get("key")
|
|
||||||
})
|
|
||||||
return _obj
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
from __future__ import annotations
|
|
||||||
import pprint
|
|
||||||
import re # noqa: F401
|
|
||||||
import json
|
|
||||||
|
|
||||||
|
|
||||||
from typing import Optional
|
|
||||||
from pydantic import BaseModel, StrictBool, StrictStr
|
|
||||||
|
|
||||||
class ResponseBodyString(BaseModel):
|
|
||||||
"""
|
|
||||||
ResponseBodyString
|
|
||||||
"""
|
|
||||||
data: Optional[StrictStr] = None
|
|
||||||
message: Optional[StrictStr] = None
|
|
||||||
success: Optional[StrictBool] = None
|
|
||||||
__properties = ["data", "message", "success"]
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
"""Pydantic configuration"""
|
|
||||||
allow_population_by_field_name = True
|
|
||||||
validate_assignment = True
|
|
||||||
|
|
||||||
def to_str(self) -> str:
|
|
||||||
"""Returns the string representation of the model using alias"""
|
|
||||||
return pprint.pformat(self.dict(by_alias=True))
|
|
||||||
|
|
||||||
def to_json(self) -> str:
|
|
||||||
"""Returns the JSON representation of the model using alias"""
|
|
||||||
return json.dumps(self.to_dict())
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_json(cls, json_str: str) -> ResponseBodyString:
|
|
||||||
"""Create an instance of ResponseBodyString from a JSON string"""
|
|
||||||
return cls.from_dict(json.loads(json_str))
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""Returns the dictionary representation of the model using alias"""
|
|
||||||
_dict = self.dict(by_alias=True,
|
|
||||||
exclude={
|
|
||||||
},
|
|
||||||
exclude_none=True)
|
|
||||||
return _dict
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_dict(cls, obj: dict) -> ResponseBodyString:
|
|
||||||
"""Create an instance of ResponseBodyString from a dict"""
|
|
||||||
if obj is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if not isinstance(obj, dict):
|
|
||||||
return ResponseBodyString.parse_obj(obj)
|
|
||||||
|
|
||||||
_obj = ResponseBodyString.parse_obj({
|
|
||||||
"data": obj.get("data"),
|
|
||||||
"message": obj.get("message"),
|
|
||||||
"success": obj.get("success")
|
|
||||||
})
|
|
||||||
return _obj
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,303 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import io
|
|
||||||
import json
|
|
||||||
import logging
|
|
||||||
import re
|
|
||||||
import ssl
|
|
||||||
|
|
||||||
from urllib.parse import urlencode, quote_plus
|
|
||||||
import urllib3
|
|
||||||
|
|
||||||
from openapi_client.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError, BadRequestException
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class RESTResponse(io.IOBase):
|
|
||||||
|
|
||||||
def __init__(self, resp) -> None:
|
|
||||||
self.urllib3_response = resp
|
|
||||||
self.status = resp.status
|
|
||||||
self.reason = resp.reason
|
|
||||||
self.data = resp.data
|
|
||||||
|
|
||||||
def getheaders(self):
|
|
||||||
"""Returns a dictionary of the response headers."""
|
|
||||||
return self.urllib3_response.headers
|
|
||||||
|
|
||||||
def getheader(self, name, default=None):
|
|
||||||
"""Returns a given response header."""
|
|
||||||
return self.urllib3_response.headers.get(name, default)
|
|
||||||
|
|
||||||
|
|
||||||
class RESTClientObject:
|
|
||||||
|
|
||||||
def __init__(self, configuration, pools_size=4, maxsize=None) -> None:
|
|
||||||
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
|
||||||
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
|
||||||
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
|
||||||
# maxsize is the number of requests to host that are allowed in parallel # noqa: E501
|
|
||||||
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
|
||||||
|
|
||||||
# cert_reqs
|
|
||||||
if configuration.verify_ssl:
|
|
||||||
cert_reqs = ssl.CERT_REQUIRED
|
|
||||||
else:
|
|
||||||
cert_reqs = ssl.CERT_NONE
|
|
||||||
|
|
||||||
addition_pool_args = {}
|
|
||||||
if configuration.assert_hostname is not None:
|
|
||||||
addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501
|
|
||||||
|
|
||||||
if configuration.retries is not None:
|
|
||||||
addition_pool_args['retries'] = configuration.retries
|
|
||||||
|
|
||||||
if configuration.tls_server_name:
|
|
||||||
addition_pool_args['server_hostname'] = configuration.tls_server_name
|
|
||||||
|
|
||||||
|
|
||||||
if configuration.socket_options is not None:
|
|
||||||
addition_pool_args['socket_options'] = configuration.socket_options
|
|
||||||
|
|
||||||
if maxsize is None:
|
|
||||||
if configuration.connection_pool_maxsize is not None:
|
|
||||||
maxsize = configuration.connection_pool_maxsize
|
|
||||||
else:
|
|
||||||
maxsize = 4
|
|
||||||
|
|
||||||
# https pool manager
|
|
||||||
if configuration.proxy:
|
|
||||||
self.pool_manager = urllib3.ProxyManager(
|
|
||||||
num_pools=pools_size,
|
|
||||||
maxsize=maxsize,
|
|
||||||
cert_reqs=cert_reqs,
|
|
||||||
ca_certs=configuration.ssl_ca_cert,
|
|
||||||
cert_file=configuration.cert_file,
|
|
||||||
key_file=configuration.key_file,
|
|
||||||
proxy_url=configuration.proxy,
|
|
||||||
proxy_headers=configuration.proxy_headers,
|
|
||||||
**addition_pool_args
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
self.pool_manager = urllib3.PoolManager(
|
|
||||||
num_pools=pools_size,
|
|
||||||
maxsize=maxsize,
|
|
||||||
cert_reqs=cert_reqs,
|
|
||||||
ca_certs=configuration.ssl_ca_cert,
|
|
||||||
cert_file=configuration.cert_file,
|
|
||||||
key_file=configuration.key_file,
|
|
||||||
**addition_pool_args
|
|
||||||
)
|
|
||||||
|
|
||||||
def request(self, method, url, query_params=None, headers=None,
|
|
||||||
body=None, post_params=None, _preload_content=True,
|
|
||||||
_request_timeout=None):
|
|
||||||
"""Perform requests.
|
|
||||||
|
|
||||||
:param method: http request method
|
|
||||||
:param url: http request url
|
|
||||||
:param query_params: query parameters in the url
|
|
||||||
:param headers: http request headers
|
|
||||||
:param body: request json body, for `application/json`
|
|
||||||
:param post_params: request post parameters,
|
|
||||||
`application/x-www-form-urlencoded`
|
|
||||||
and `multipart/form-data`
|
|
||||||
:param _preload_content: if False, the urllib3.HTTPResponse object will
|
|
||||||
be returned without reading/decoding response
|
|
||||||
data. Default is True.
|
|
||||||
:param _request_timeout: timeout setting for this request. If one
|
|
||||||
number provided, it will be total request
|
|
||||||
timeout. It can also be a pair (tuple) of
|
|
||||||
(connection, read) timeouts.
|
|
||||||
"""
|
|
||||||
method = method.upper()
|
|
||||||
assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
|
|
||||||
'PATCH', 'OPTIONS']
|
|
||||||
|
|
||||||
if post_params and body:
|
|
||||||
raise ApiValueError(
|
|
||||||
"body parameter cannot be used with post_params parameter."
|
|
||||||
)
|
|
||||||
|
|
||||||
post_params = post_params or {}
|
|
||||||
headers = headers or {}
|
|
||||||
# url already contains the URL query string
|
|
||||||
# so reset query_params to empty dict
|
|
||||||
query_params = {}
|
|
||||||
|
|
||||||
timeout = None
|
|
||||||
if _request_timeout:
|
|
||||||
if isinstance(_request_timeout, (int,float)): # noqa: E501,F821
|
|
||||||
timeout = urllib3.Timeout(total=_request_timeout)
|
|
||||||
elif (isinstance(_request_timeout, tuple) and
|
|
||||||
len(_request_timeout) == 2):
|
|
||||||
timeout = urllib3.Timeout(
|
|
||||||
connect=_request_timeout[0], read=_request_timeout[1])
|
|
||||||
|
|
||||||
try:
|
|
||||||
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
|
||||||
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
|
||||||
|
|
||||||
# no content type provided or payload is json
|
|
||||||
if not headers.get('Content-Type') or re.search('json', headers['Content-Type'], re.IGNORECASE):
|
|
||||||
request_body = None
|
|
||||||
if body is not None:
|
|
||||||
request_body = json.dumps(body)
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method, url,
|
|
||||||
body=request_body,
|
|
||||||
preload_content=_preload_content,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers)
|
|
||||||
elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method, url,
|
|
||||||
fields=post_params,
|
|
||||||
encode_multipart=False,
|
|
||||||
preload_content=_preload_content,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers)
|
|
||||||
elif headers['Content-Type'] == 'multipart/form-data':
|
|
||||||
# must del headers['Content-Type'], or the correct
|
|
||||||
# Content-Type which generated by urllib3 will be
|
|
||||||
# overwritten.
|
|
||||||
del headers['Content-Type']
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method, url,
|
|
||||||
fields=post_params,
|
|
||||||
encode_multipart=True,
|
|
||||||
preload_content=_preload_content,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers)
|
|
||||||
# Pass a `string` parameter directly in the body to support
|
|
||||||
# other content types than Json when `body` argument is
|
|
||||||
# provided in serialized form
|
|
||||||
elif isinstance(body, str) or isinstance(body, bytes):
|
|
||||||
request_body = body
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method, url,
|
|
||||||
body=request_body,
|
|
||||||
preload_content=_preload_content,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers)
|
|
||||||
else:
|
|
||||||
# Cannot generate the request from given parameters
|
|
||||||
msg = """Cannot prepare a request message for provided
|
|
||||||
arguments. Please check that your arguments match
|
|
||||||
declared content type."""
|
|
||||||
raise ApiException(status=0, reason=msg)
|
|
||||||
# For `GET`, `HEAD`
|
|
||||||
else:
|
|
||||||
r = self.pool_manager.request(method, url,
|
|
||||||
fields={},
|
|
||||||
preload_content=_preload_content,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers)
|
|
||||||
except urllib3.exceptions.SSLError as e:
|
|
||||||
msg = "{0}\n{1}".format(type(e).__name__, str(e))
|
|
||||||
raise ApiException(status=0, reason=msg)
|
|
||||||
|
|
||||||
if _preload_content:
|
|
||||||
r = RESTResponse(r)
|
|
||||||
|
|
||||||
# log response body
|
|
||||||
logger.debug("response body: %s", r.data)
|
|
||||||
|
|
||||||
if not 200 <= r.status <= 299:
|
|
||||||
if r.status == 400:
|
|
||||||
raise BadRequestException(http_resp=r)
|
|
||||||
|
|
||||||
if r.status == 401:
|
|
||||||
raise UnauthorizedException(http_resp=r)
|
|
||||||
|
|
||||||
if r.status == 403:
|
|
||||||
raise ForbiddenException(http_resp=r)
|
|
||||||
|
|
||||||
if r.status == 404:
|
|
||||||
raise NotFoundException(http_resp=r)
|
|
||||||
|
|
||||||
if 500 <= r.status <= 599:
|
|
||||||
raise ServiceException(http_resp=r)
|
|
||||||
|
|
||||||
raise ApiException(http_resp=r)
|
|
||||||
|
|
||||||
return r
|
|
||||||
|
|
||||||
def get_request(self, url, headers=None, query_params=None, _preload_content=True,
|
|
||||||
_request_timeout=None):
|
|
||||||
return self.request("GET", url,
|
|
||||||
headers=headers,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
query_params=query_params)
|
|
||||||
|
|
||||||
def head_request(self, url, headers=None, query_params=None, _preload_content=True,
|
|
||||||
_request_timeout=None):
|
|
||||||
return self.request("HEAD", url,
|
|
||||||
headers=headers,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
query_params=query_params)
|
|
||||||
|
|
||||||
def options_request(self, url, headers=None, query_params=None, post_params=None,
|
|
||||||
body=None, _preload_content=True, _request_timeout=None):
|
|
||||||
return self.request("OPTIONS", url,
|
|
||||||
headers=headers,
|
|
||||||
query_params=query_params,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
|
|
||||||
def delete_request(self, url, headers=None, query_params=None, body=None,
|
|
||||||
_preload_content=True, _request_timeout=None):
|
|
||||||
return self.request("DELETE", url,
|
|
||||||
headers=headers,
|
|
||||||
query_params=query_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
|
|
||||||
def post_request(self, url, headers=None, query_params=None, post_params=None,
|
|
||||||
body=None, _preload_content=True, _request_timeout=None):
|
|
||||||
return self.request("POST", url,
|
|
||||||
headers=headers,
|
|
||||||
query_params=query_params,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
|
|
||||||
def put_request(self, url, headers=None, query_params=None, post_params=None,
|
|
||||||
body=None, _preload_content=True, _request_timeout=None):
|
|
||||||
return self.request("PUT", url,
|
|
||||||
headers=headers,
|
|
||||||
query_params=query_params,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
|
|
||||||
def patch_request(self, url, headers=None, query_params=None, post_params=None,
|
|
||||||
body=None, _preload_content=True, _request_timeout=None):
|
|
||||||
return self.request("PATCH", url,
|
|
||||||
headers=headers,
|
|
||||||
query_params=query_params,
|
|
||||||
post_params=post_params,
|
|
||||||
_preload_content=_preload_content,
|
|
||||||
_request_timeout=_request_timeout,
|
|
||||||
body=body)
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
[tool.poetry]
|
|
||||||
name = "openapi_client"
|
|
||||||
version = "1.0.0"
|
|
||||||
description = "boardmate_api API"
|
|
||||||
authors = ["OpenAPI Generator Community <team@openapitools.org>"]
|
|
||||||
license = "NoLicense"
|
|
||||||
readme = "README.md"
|
|
||||||
repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID"
|
|
||||||
keywords = ["OpenAPI", "OpenAPI-Generator", "boardmate_api API"]
|
|
||||||
include = ["openapi_client/py.typed"]
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
|
||||||
python = "^3.7"
|
|
||||||
|
|
||||||
urllib3 = ">= 1.25.3"
|
|
||||||
python-dateutil = ">=2.8.2"
|
|
||||||
pydantic = "^1.10.5, <2"
|
|
||||||
aenum = ">=3.1.11"
|
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
|
||||||
pytest = ">=7.2.1"
|
|
||||||
tox = ">=3.9.0"
|
|
||||||
flake8 = ">=4.0.0"
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["setuptools"]
|
|
||||||
build-backend = "setuptools.build_meta"
|
|
||||||
|
|
||||||
[tool.pylint.'MESSAGES CONTROL']
|
|
||||||
extension-pkg-whitelist = "pydantic"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
python_dateutil >= 2.5.3
|
|
||||||
setuptools >= 21.0.0
|
|
||||||
urllib3 >= 1.25.3, < 2.1.0
|
|
||||||
pydantic >= 1.10.5, < 2
|
|
||||||
aenum >= 3.1.11
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[flake8]
|
|
||||||
max-line-length=99
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
from setuptools import setup, find_packages # noqa: H301
|
|
||||||
|
|
||||||
# To install the library, run the following
|
|
||||||
#
|
|
||||||
# python setup.py install
|
|
||||||
#
|
|
||||||
# prerequisite: setuptools
|
|
||||||
# http://pypi.python.org/pypi/setuptools
|
|
||||||
NAME = "openapi-client"
|
|
||||||
VERSION = "1.0.0"
|
|
||||||
PYTHON_REQUIRES = ">=3.7"
|
|
||||||
REQUIRES = [
|
|
||||||
"urllib3 >= 1.25.3, < 2.1.0",
|
|
||||||
"python-dateutil",
|
|
||||||
"pydantic >= 1.10.5, < 2",
|
|
||||||
"aenum"
|
|
||||||
]
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name=NAME,
|
|
||||||
version=VERSION,
|
|
||||||
description="boardmate_api API",
|
|
||||||
author="OpenAPI Generator community",
|
|
||||||
author_email="team@openapitools.org",
|
|
||||||
url="",
|
|
||||||
keywords=["OpenAPI", "OpenAPI-Generator", "boardmate_api API"],
|
|
||||||
install_requires=REQUIRES,
|
|
||||||
packages=find_packages(exclude=["test", "tests"]),
|
|
||||||
include_package_data=True,
|
|
||||||
long_description_content_type='text/markdown',
|
|
||||||
long_description="""\
|
|
||||||
boardmate_api API
|
|
||||||
""", # noqa: E501
|
|
||||||
package_data={"openapi_client": ["py.typed"]},
|
|
||||||
)
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
pytest~=7.1.3
|
|
||||||
pytest-cov>=2.8.1
|
|
||||||
pytest-randomly>=3.12.0
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import unittest
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from openapi_client.models.client_dto import ClientDto # noqa: E501
|
|
||||||
|
|
||||||
class TestClientDto(unittest.TestCase):
|
|
||||||
"""ClientDto unit test stubs"""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def make_instance(self, include_optional) -> ClientDto:
|
|
||||||
"""Test ClientDto
|
|
||||||
include_option is a boolean, when False only required
|
|
||||||
params are included, when True both required and
|
|
||||||
optional params are included """
|
|
||||||
# uncomment below to create an instance of `ClientDto`
|
|
||||||
"""
|
|
||||||
model = ClientDto() # noqa: E501
|
|
||||||
if include_optional:
|
|
||||||
return ClientDto(
|
|
||||||
name = '',
|
|
||||||
username = '',
|
|
||||||
key = ''
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return ClientDto(
|
|
||||||
)
|
|
||||||
"""
|
|
||||||
|
|
||||||
def testClientDto(self):
|
|
||||||
"""Test ClientDto"""
|
|
||||||
# inst_req_only = self.make_instance(include_optional=False)
|
|
||||||
# inst_req_and_optional = self.make_instance(include_optional=True)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import unittest
|
|
||||||
|
|
||||||
from openapi_client.api.default_api import DefaultApi # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
class TestDefaultApi(unittest.TestCase):
|
|
||||||
"""DefaultApi unit test stubs"""
|
|
||||||
|
|
||||||
def setUp(self) -> None:
|
|
||||||
self.api = DefaultApi() # noqa: E501
|
|
||||||
|
|
||||||
def tearDown(self) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def test_create(self) -> None:
|
|
||||||
"""Test case for create
|
|
||||||
|
|
||||||
POST client/create # noqa: E501
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
|
|
||||||
"""
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
boardmate_api API
|
|
||||||
|
|
||||||
The version of the OpenAPI document: 1.0.0
|
|
||||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
||||||
|
|
||||||
Do not edit the class manually.
|
|
||||||
""" # noqa: E501
|
|
||||||
|
|
||||||
|
|
||||||
import unittest
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from openapi_client.models.response_body_string import ResponseBodyString # noqa: E501
|
|
||||||
|
|
||||||
class TestResponseBodyString(unittest.TestCase):
|
|
||||||
"""ResponseBodyString unit test stubs"""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def tearDown(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def make_instance(self, include_optional) -> ResponseBodyString:
|
|
||||||
"""Test ResponseBodyString
|
|
||||||
include_option is a boolean, when False only required
|
|
||||||
params are included, when True both required and
|
|
||||||
optional params are included """
|
|
||||||
# uncomment below to create an instance of `ResponseBodyString`
|
|
||||||
"""
|
|
||||||
model = ResponseBodyString() # noqa: E501
|
|
||||||
if include_optional:
|
|
||||||
return ResponseBodyString(
|
|
||||||
data = '',
|
|
||||||
message = '',
|
|
||||||
success = True
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return ResponseBodyString(
|
|
||||||
)
|
|
||||||
"""
|
|
||||||
|
|
||||||
def testResponseBodyString(self):
|
|
||||||
"""Test ResponseBodyString"""
|
|
||||||
# inst_req_only = self.make_instance(include_optional=False)
|
|
||||||
# inst_req_and_optional = self.make_instance(include_optional=True)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
unittest.main()
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[tox]
|
|
||||||
envlist = py3
|
|
||||||
|
|
||||||
[testenv]
|
|
||||||
deps=-r{toxinidir}/requirements.txt
|
|
||||||
-r{toxinidir}/test-requirements.txt
|
|
||||||
|
|
||||||
commands=
|
|
||||||
pytest --cov=openapi_client
|
|
||||||
@@ -10,6 +10,8 @@ paths:
|
|||||||
post:
|
post:
|
||||||
summary: "POST client/create"
|
summary: "POST client/create"
|
||||||
operationId: "create"
|
operationId: "create"
|
||||||
|
tags:
|
||||||
|
- Client
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
|
|||||||
124
api-customer/api-resources/game-endpoint.yaml
Normal file
124
api-customer/api-resources/game-endpoint.yaml
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
openapi: "3.1.0"
|
||||||
|
info:
|
||||||
|
title: "boardmate_api API"
|
||||||
|
description: "boardmate_api API"
|
||||||
|
version: "1.0.0"
|
||||||
|
servers:
|
||||||
|
- url: "https://boardmate_api"
|
||||||
|
paths:
|
||||||
|
/games/{id}:
|
||||||
|
get:
|
||||||
|
summary: "GET games/{id}"
|
||||||
|
operationId: "retrieveGames"
|
||||||
|
tags:
|
||||||
|
- Game
|
||||||
|
parameters:
|
||||||
|
- name: "id"
|
||||||
|
in: "path"
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: "string"
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: "OK"
|
||||||
|
content:
|
||||||
|
'*/*':
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ResponseBodyGameDto"
|
||||||
|
/create:
|
||||||
|
post:
|
||||||
|
summary: "POST create"
|
||||||
|
operationId: "CreateParty"
|
||||||
|
tags:
|
||||||
|
- Game
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/GameDto"
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: "OK"
|
||||||
|
content:
|
||||||
|
'*/*':
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ResponseBodyString"
|
||||||
|
/moves/add/{gameId}:
|
||||||
|
post:
|
||||||
|
summary: "POST moves/add/{gameId}"
|
||||||
|
operationId: "AddMove"
|
||||||
|
tags:
|
||||||
|
- Game
|
||||||
|
parameters:
|
||||||
|
- name: "gameId"
|
||||||
|
in: "path"
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: "string"
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/MoveDto"
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: "OK"
|
||||||
|
content:
|
||||||
|
'*/*':
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ResponseBodyString"
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
|
||||||
|
ResponseBodyGameDto:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
data:
|
||||||
|
type: "object"
|
||||||
|
nullable: true
|
||||||
|
message:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
success:
|
||||||
|
type: "boolean"
|
||||||
|
nullable: false
|
||||||
|
|
||||||
|
ResponseBodyString:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
data:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
message:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
success:
|
||||||
|
type: "boolean"
|
||||||
|
nullable: false
|
||||||
|
|
||||||
|
GameDto:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
whiteName:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
blackName:
|
||||||
|
type: "string"
|
||||||
|
nullable: true
|
||||||
|
timeValue:
|
||||||
|
type: "integer"
|
||||||
|
format: "int32"
|
||||||
|
nullable: true
|
||||||
|
increment:
|
||||||
|
type: "integer"
|
||||||
|
format: "int32"
|
||||||
|
nullable: true
|
||||||
|
|
||||||
|
MoveDto:
|
||||||
|
type: "object"
|
||||||
|
properties:
|
||||||
|
notation:
|
||||||
|
type: "string"
|
||||||
|
nullable: false
|
||||||
@@ -1,13 +1,17 @@
|
|||||||
import os
|
import os
|
||||||
import uuid
|
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
from pydantic import StrictStr
|
||||||
|
|
||||||
from src.controllers.mqtt_forwarder import MQTTForwarder
|
from src.controllers.mqtt_forwarder import MQTTForwarder
|
||||||
from src.services.mqtt_service import MQTTService
|
from src.services.mqtt_service import MQTTService
|
||||||
from openapi_client import ApiClient, Configuration
|
from board_mate.client import ClientApi, ApiClient, Configuration
|
||||||
from openapi_client.api.default_api import DefaultApi # Remplace DefaultApi par le nom de ton endpoint
|
from board_mate.client.models import ClientDto
|
||||||
|
from board_mate.client.exceptions import ApiException
|
||||||
|
|
||||||
client_id = "1"
|
client_id = "1"
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
@@ -41,24 +45,26 @@ if __name__ == '__main__':
|
|||||||
forwarder = MQTTForwarder(client_id, local_broker, api_broker)
|
forwarder = MQTTForwarder(client_id, local_broker, api_broker)
|
||||||
forwarder.start(f"/customer/telemetry/#", f"/board-mate/{client_id}/telemetry")
|
forwarder.start(f"/customer/telemetry/#", f"/board-mate/{client_id}/telemetry")
|
||||||
|
|
||||||
# main.py
|
"""config = Configuration(
|
||||||
|
host="https://192.168.15.120:8000",
|
||||||
|
|
||||||
# 1️⃣ Configurer la connexion à l'API
|
|
||||||
config = Configuration(
|
|
||||||
host="https://api.monservice.com", # URL de ton API
|
|
||||||
api_key={"Authorization": "Bearer TON_TOKEN"} # Ton token Bearer si nécessaire
|
|
||||||
)
|
)
|
||||||
|
config.verify_ssl = False
|
||||||
|
|
||||||
# 2️⃣ Créer le client et appeler l'API
|
with ApiClient(config) as api_client:
|
||||||
with ApiClient(config) as client:
|
client_api = ClientApi(api_client)
|
||||||
api_instance = DefaultApi(client) # Remplace par UsersApi, PetsApi, etc. selon ton endpoint
|
|
||||||
|
new_client = ClientDto(
|
||||||
|
name=StrictStr("Alice Example"),
|
||||||
|
username=StrictStr("alice123"),
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Appel de l'endpoint GET (méthode générée automatiquement)
|
# 5. Call the endpoint
|
||||||
response = api_instance.get_users() # Remplace par la méthode générée correspondant à ton endpoint
|
response = client_api.create(client_dto=new_client)
|
||||||
print("Réponse de l'API :", response)
|
print("Success:", response.success)
|
||||||
except Exception as e:
|
print("Message:", response.message)
|
||||||
print("Erreur lors de la requête :", e)
|
print("Data:", response.data)
|
||||||
|
except ApiException as e:
|
||||||
|
print(f"Exception when calling ClientApi->create: {e}")"""
|
||||||
|
|
||||||
app.run(host="0.0.0.0", port=5000, debug=False)
|
app.run(host="0.0.0.0", port=5000, debug=True)
|
||||||
|
|||||||
@@ -9,4 +9,8 @@ requests
|
|||||||
python-dotenv
|
python-dotenv
|
||||||
pyyaml
|
pyyaml
|
||||||
aenum
|
aenum
|
||||||
openapi-client
|
python-dotenv
|
||||||
|
|
||||||
|
file:./api-resources/auth-components
|
||||||
|
file:./api-resources/client-components
|
||||||
|
file:./api-resources/game-components
|
||||||
|
|||||||
Reference in New Issue
Block a user