Skip to main content

portal to use various api data service

Project description

Asklora Portal

Shared utilities and helper classes used in Asklora projects

Contents

  1. Clients for external services (MarketData, Broker, PriceData, DAMECAClient, DAMFBClient) and their supporting classes (DAM, pydantic models for xml serialising and de-serialising)
  2. Helper classes (SingletonMeta, ExtendedEnum, PGPHelper)
  3. Helper functions (deep_get, get_file_size, get_file_sha1)

Information on specific sections

Broker, PriceData and MarketData client

required .env config when importing these

  • BROKER_API_URL=brokerurl
  • MARKET_API_URL=market url
  • BROKER_KEY=key
  • BROKER_SECRET=secret

usage

from asklora import Broker

broker = Broker()
broker.create_account(...)

or you can use our Portal class to get the specific model

import asklora

portal = asklora.Portal()

rest = portal.get_broker_client() # get a REST client for trade, user, position , order
marketrest = portal.get_market_client() # get a REST client for market data
eventclient = portal.get_event_client() # get an event client for trade, user, position, order

PriceData (for IEX)

required .env config

  • IEX_API_URL
  • IEX_TOKEN

usage

from asklora import PriceData

price_data = PriceData()
price_data.get_lastestPrice("MSFT")

DAMECAClient and DAMFBClient

required .env config

  • DAM_URL
  • DAM_CSID

usage

For these clients, you can find the Pydantic models needed by some of the class methods in the models and enums module.

for example, in the DAMECAClient, in the generate_application_payload method, the first argument accepts DAMApplicationPayload model that will automatically processed to xml the API endpoint needs.

examples

  • DAMECAClient

    from asklora import DAMECAClient, PGPHelper
    from asklora.models import DAMApplicationPayload
    
    client = DAMECAClient()
    
    # Build payload
    payload = DAMApplicationPayload(
        user_id=56,
        first_name="Jane",
        last_name="Smith",
        ...
    )
    
    # Needed for encryption
    pgp_helper = PGPHelper(
        private_key_path=...,
        public_key_path=...,
        remote_public_key_path=...,
    )
    
    # Send the request
    client.create_account(payload, pgp_helper=pgp_helper)
    
  • DAMFBClient

    from asklora import DAMFBClient, PGPHelper
    from asklora.models import InstructionSet, InternalCashTransfer, CancelTransaction
    
    client = DAMFBClient()
    
    instruction_set = InstructionSet(
        instructions=[
            InternalCashTransfer(
               id=4,
               source="U199516",
               destination="U34516",
               amount=1000,
               currency="USD",
            ),
            CancelTransaction(
               id=5,
               ib_instr_id="3",
               reason="Wrong destination",
            ),
        ]
    )
    pgp_helper = PGPHelper(
        private_key_path=...,
        public_key_path=...,
        remote_public_key_path=...,
    )
    
    client.create_instruction(instruction_set, pgp_helper=pgp_helper)
    
    # if needed, you can also send xml directly
    payload = """<?xml version="1.0" encoding="UTF-8"?>
    <instruction_set
      xmlns="http://www.interactivebrokers.com/fbfb_instruction_set"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.interactivebrokers.com/fbfb_instruction_set fbfb_instruction_set.xsd "
      creation_date="2019-01-11" id="2450" version="1">
      <close_account id="2450">
          <client_ib_acct_id>U1234567</client_ib_acct_id>
          <close_reason> No longer needed </close_reason>
      </close_account>
    </instruction_set>"""
    
    client.create_instruction(payload, pgp_helper=pgp_helper)
    
  • Both

    You can also initialise one or both of the classes above like this:

    from asklora import IBClient
    
    eca_client = IBClient.get_ECA_client()
    fb_client = IBClient.get_FB_client()
    

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

asklora_portal-1.1.10.tar.gz (28.1 kB view details)

Uploaded Source

Built Distribution

asklora_portal-1.1.10-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file asklora_portal-1.1.10.tar.gz.

File metadata

  • Download URL: asklora_portal-1.1.10.tar.gz
  • Upload date:
  • Size: 28.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.9 Darwin/22.5.0

File hashes

Hashes for asklora_portal-1.1.10.tar.gz
Algorithm Hash digest
SHA256 d07c5f6a4aeaa890f0f9dc6ce605b71ac70d4b150a94aa4721c5c87927417e91
MD5 59ce8189d1ccfa8a853a2599389af5c6
BLAKE2b-256 770f88b2f17cb8b8ab9c6d5dba1f9f1c37c17b2dafa169470b4725b6c4abe764

See more details on using hashes here.

File details

Details for the file asklora_portal-1.1.10-py3-none-any.whl.

File metadata

  • Download URL: asklora_portal-1.1.10-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.9 Darwin/22.5.0

File hashes

Hashes for asklora_portal-1.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 ff7c152f784766a3755e46a4582b162d9c06209b0738e53056ec6e834cfa84b0
MD5 0cf523d35b5a6e4bab158d1581fcb1f6
BLAKE2b-256 573e0b82a3d7bfe4cd481b3d0786a0c0c3037b4cae34ec1f1591f78ecd416e32

See more details on using hashes here.

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