Skip to main content

Pyhton3 api client for metax

Project description

Leviathan Metax python3 API v2.0

API

module structure

metax/
├── api.py
├── db
│    ├── __main__.py
│    ├── __init__.py
│    ├── friends.py
│    ├── get.py
│    ├── delete.py
│    ├── keys.py
│    ├── listener.py
│    ├── copy.py
│    ├── metax_base.py
│    ├── metax_info.py
│    ├── pair.py
│    ├── peers.py
│    ├── save.py
│    ├── send_to.py
│    ├── share.py
│    └── update.py
│
├── __main__.py
├── __init__.py
├── errors.py
├── request.py
├── requirements.txt
└── types.py

Methods

  • is valid uuid - metax.db.metax_base:Base::is_valid_uuid
  • validate - metax.db.metax_base:Base::validate
  • copy - metax.db.copy:Copy::copy
  • delete - metax.db.delete:Delete::delete
  • add friend - metax.db.friends:Friends::add_friend
  • get friend list - metax.db.copy:Friends::get_friends_list
  • get - metax.db.get:Get::get
  • get user keys - metax.db.keys:Keys::get_user_keys
  • get user public key - metax.db.keys:Keys::get_user_public_key
  • regenerate user key - metax.db.keys:Keys::regenerate_user_key
  • regiseter listeners - metax.db.listeners:Listeners::register_listener
  • unregister listeners - metax.db.listeners:Listeners::unregister_listener
  • listeners - metax.db.listeners:Listeners::listeners
  • set metax info - metax.db.metax_info:MetaxInfo::set_metax_info
  • get metax info - metax.db.metax_info:MetaxInfo::get_metax_info
  • dump user info - metax.db.metax_info:MetaxInfo::dump_user_info
  • start_pairing - metax.db.pair:Pair::start_pairing
  • cancel_pairing - metax.db.pair:Pair::cancel_pairing
  • get pairing peers - metax.db.pair:Pair::get_pairing_peers
  • peers - metax.db.peers:Peers::peers
  • reconnect_to_peers - metax.db.peers:Peers::reconnect_to_peers
  • save - metax.db.save:Save:save
  • send to - metax.db.send_to:SendTo::send_to
  • share - metax.db.share.Share::share
  • accept_share - metax.db.share.Share::accept_share
  • update - metax.db.update:Update::update
  • metax - metax.api.metax - metax::Metax
  • crud - metax.api.crud - metax::CRUD

Statements

  • NODE - metax.types.NODE
  • FORM - metax.types.FORM
  • EXPIRE - metax.types.EXPIRE
  • ENCRYPT - metax.types.ENCRYPT
  • ENCRYPTED - metax.types.ENCRYPTED
  • NO_ENCRYPTED - metax.types.NO_ENCRYPTED
  • SECURE - metax.types.SECURE
  • NO_SECURE - metax.types.NO_SECURE
  • GET - metax.types.GET
  • POST - metax.types.POST
  • UPDATE - metax.types.UPDATE
  • DELETE - metax.types.DELETE
  • ANY - metax.types.ANY

Return Types


  1. Event - metax.db.listeners:Event:
    1. Statements:
      1. type - str - event type
      2. target - str - file listener uuid in other events is a none
      3. event - str - raw event received from server
    2. Methods:
      1. This Class Without any method

  1. Response - metax.request:Response:
    1. Statements:
      1. status - int - Status code of request
      2. data - byte - response from server
      3. as_string - str - unicode decoded data response from server
      4. success - bool - return true if request is success
      5. raw - get - resuqest/response data
    2. Methods:
      1. json - return dict object of response content
      2. text - return the string object od response content

Usage


is_valid_uuid:

from metax.db.metax_base import Base # all other reqest types extend Base class methods and statements
from metax.types import NO_SECURE

base = Base('localhost', 8001, NO_SECURE)

uuid  = "066177b7-58ef-4371-8784-6af2fe3802c0"  # valid uuid
uuid2 = "066177b7-58ef-4371-8784-6aaf2fe3802c0" # length of last segment is large than must

print( base.is_valid_uuid(uuid) ) # true
print( base.is_valid_uuid(uuid2) ) # false

validate:

from metax.db.metax_base import Base # all other reqest types extend Base class methods and statements
from metax.types import NO_SECURE

base = Base('localhost', 8001, NO_SECURE)

resp1  = "{\"uuid\":\"066177b7-58ef-4371-8784-6af2fe3802c0\"}"  # valid response
resp2  = "{\"error\":\"Getting file failed\"}" # invalid response

print( base.is_valid_uuid(resp1) ) # Nothing
print( base.is_valid_uuid(resp2) ) # Error type` metax.errors.GettingFileFiledError

copy:

from metax.db.copy import Copy
from metax.types import NO_SECURE

base = Copy('localhost', 8001, NO_SECURE)

uuid  = "066177b7-58ef-4371-8784-6af2fe3802c0"  # valid uuid

print( base.copy(uuid) ) # return a new uuid or error

delete:

from metax.db.delete import Delete
from metax.types import NO_SECURE

base = Delete('localhost', 8001, NO_SECURE)

uuid  = "066177b7-58ef-4371-8784-6af2fe3802c0"  # valid uuid

print( base.delete(uuid) ) # return deleted uuid or error

add friend:

from metax.db.friends import Friends
from metax.types import NO_SECURE

base = Friends('localhost', 8001, NO_SECURE)

friend_key = "PUBLIC_RSA_KEY"

print( base.add_friend(friend_key) )

get friend list:

from metax.db.friends import Friends
from metax.types import NO_SECURE

base = Friends('localhost', 8001, NO_SECURE)

print( base.get_friends_list() )

get:

from metax.db.get import Get
from metax.types import NO_SECURE

base = Get('localhost', 8001, NO_SECURE)

uuid  = "066177b7-58ef-4371-8784-6af2fe3802c0"  # valid uuid

print( base.get(uuid) )

get user key:

from metax.db.keys import Keys
from metax.types import NO_SECURE

base = Keys('localhost', 8001, NO_SECURE)

print( base.get_user_keys() )

get user public key:

from metax.db.keys import Keys
from metax.types import NO_SECURE

base = Keys('localhost', 8001, NO_SECURE)

print( base.get_user_public_key() )

regenerate user key:

from metax.db.keys import Keys
from metax.types import NO_SECURE

base = Keys('localhost', 8001, NO_SECURE)

print( base.regenerate_user_key() )

regiseter listeners:

from metax.db.listeners import Listeners
from metax.types import NO_SECURE

def cb(event):
	print(event.type)

base = Listeners('localhost', 8001, NO_SECURE)

uuid  = "066177b7-58ef-4371-8784-6af2fe3802c0"

print( base.register_listener(uuid, cb) )

set metax info:

from metax.db.metax_info import MetaxInfo
from metax.types import NO_SECURE

base = MetaxInfo('localhost', 8001, NO_SECURE)

uuid  = "066177b7-58ef-4371-8784-6af2fe3802c0"

print( base.set_metax_info(uuid) )

get metax info:

from metax.db.metax_info import MetaxInfo
from metax.types import NO_SECURE

base = MetaxInfo('localhost', 8001, NO_SECURE)

print( base.get_metax_info() )

dump user info:

from metax.db.metax_info import MetaxInfo
from metax.types import NO_SECURE

base = MetaxInfo('localhost', 8001, NO_SECURE)

print( base.dump_user_info() )

start pairing:

from metax.db.pair import Pair
from metax.types import NO_SECURE

base = Pair('localhost', 8001, NO_SECURE)

print( base.start_pairing(timeout=5) )

cancel pairing:

from metax.db.pair import Pair
from metax.types import NO_SECURE

base = Pair('localhost', 8001, NO_SECURE)

print( base.cancel_pairing() )

get pairing peers:

from metax.db.pair import Pair
from metax.types import NO_SECURE

base = Pair('localhost', 8001, NO_SECURE)

print( base.get_pairing_peers() )

peers:

from metax.db.peers import Peers
from metax.types import NO_SECURE

base = Peers('localhost', 8001, NO_SECURE)

print( base.peers() )

reconnect to peers:

from metax.db.peers import Peers
from metax.types import NO_SECURE

base = Peers('localhost', 8001, NO_SECURE)

print( base.reconnect_to_peers() )

save:

from metax.db.save import Save
from metax.types import NO_SECURE

base = Save('localhost', 8001, NO_SECURE)

print( base.save("data ot nothing to create empty file") )

send to:

from metax.db.send_to import SendTo
from metax.types import NO_SECURE

base = SendTo('localhost', 8001, NO_SECURE)

print( base.send_to("PUBLIC_KEY", "DATA TO SEND") )

share:

from metax.db.share import Share
from metax.types import NO_SECURE

base = Share('localhost', 8001, NO_SECURE)

print( base.send_to("UUID", "PUBLIC_KEY") )

accept share:

from metax.db.share import Share
from metax.types import NO_SECURE

base = Share('localhost', 8001, NO_SECURE)

print( base.accept_share("UUID", "PUBLIC_KEY", "IV") )

update:

from metax.db.update import Update
from metax.types import NO_SECURE

base = Update('localhost', 8001, NO_SECURE)

print( base.update("UUID", "New Content") )

Metax:

from metax import Metax
from metax.types import NO_SECURE

base = Metax('localhost', 8001, NO_SECURE)

print( base.save("Data") ) # new file uuid
print( base.update("UUID", "New Content").success)
print( base.get("UUID") ) # resposne

# Metax class Extend all classes for request to metax web api

CRUD:

from metax import CRUD
from metax.types import NO_SECURE

base = CRUD('localhost', 8001, NO_SECURE)

print( base.save("Data") ) # new file uuid
print( base.update("UUID", "New Content").success)
print( base.get("UUID") ) # resposne
print( base.delete("UUID") ) # resposne

# CRUD class extends only (C)reate (R)ead (D)elete (U)pdate requests to metax web api

Requirements

  1. Python 3.7+
  2. Pip Packages
    1. requests
    2. websocket-client
    3. commands to install all in ubuntu:
      1. sudo apt install python3 python3-dev python3-pip
      2. python3 -m pip install requirements.txt # or
      3. python3 -m pip install requests websocket-client==0.37.0

Other

Definition 'headers'


Copy

class Copy(Base):
	def __init__(self, *args, **kwargs):...

	def copy(self, uuid:str, **query_params:dict) -> Response:...

Delete

class Delete(Base):
	def __init__(self, *args, **kwargs):...

	def delete(self, uuid:str, **query_params:dict) -> Response:...

Friends

class Friends(Base):
	def __init__(self, *args, **kwargs):...

	def add_friend(self, key:str, username:str, **query_params:dict) -> Response:...

	def get_friends_list(self, **query_params:dict) -> Response:...

Get

class Get(Base):
	def __init__(self, *args, **kwargs):...

	def get(self, uuid:str, **query_params:dict) -> Response:...

Keys

class Keys(Base):
	def __init__(self, *args, **kwargs):...

	def get_user_keys(self, **query_params:dict) -> Response:...

	def get_user_public_key(self, **query_params:dict) -> Response:...

	def regenerate_user_key(self, **query_params:dict) -> Response:...

Listeners

class Listener(Base):
	__listeners = []
	any_event = lambda *a, **k:...

	def __init__(self, *args, **kwargs):...

	def listeners(self) -> list:...

	def register_listener(self, uuid:str, callback:callable, type_:str=ANY,  **query_params:dict) -> Response:...

	def unregister_listener(self, uuid:str, **query_params:dict) -> Response:...

	def init_registers(self, *args:list, **kwargs:dict) -> None:

	def event(self, response:self) -> None:...

	def on_ws_message(self, socket:WebSocketApp, message:str) -> None:...

Base

class Base:
	def __init__(self, host:str, port:int, secure:bool=False):...

	def validate(self, response:Response) -> None:...

	def is_valid_uuid(self, uuid:str) -> bool:...

Metax Info

class MetaxInfo(Base):
	def __init__(self, *args:list, **kwargs:dict) :...

	def set_metax_info(self, uuid:str, **query_params:dict) -> Response:...

	def get_metax_info(self, **query_params:dict) -> Response:...

	def dump_user_info(self, **query_params:dict) -> Response:...

Pair

class Pair(Base):
	def __init__(self, *args, **kwargs):...

	def start_pairing(self, timeout:int, **query_params:dict) -> Response:...

	def cancel_pairing(self, **query_params:dict) -> Response:...

	def get_pairing_peers(self, **query_params:dict) -> Response:...

Peers

class Peers(Base):
	def __init__(self, *args, **kwargs):...

	def peers(self, **query_params:dict) -> Response:...

	def reconnect_to_peers(self, **query_params:dict) -> Response:...

Save

class Save(Base):
	def __init__(self, *args, **kwargs):...

	def save(self, data:str='', type:str=NODE, **query_params:dict) -> Response:...

SendTo

class SendTo(Base):
	def __init__(self, *args, **kwargs):...

	def send_to(self, key:str, data:str, **query_params:dict) -> Response:...

Share

class Share(Base):
	def __init__(self, *args, **kwargs):...

	def share(self, uuid:str, key:str, **query_params:dict) -> Response:...

	def accept_share(self, uuid:str, key:str, iv:str, **query_params:dict) -> Response:...

Update

class Update(Base):
	def __init__(self, *args, **kwargs):...

	def update(self, uuid:str, data:str, type:str=NODE, **query_params:dict) -> Response:...

Project details


Download files

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

Source Distribution

metax_api-0.3.tar.gz (11.2 kB view hashes)

Uploaded Source

Built Distribution

metax_api-0.3-py3-none-any.whl (15.4 kB view hashes)

Uploaded Python 3

Supported by

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