Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

asklora-portal

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

asklora-portal

portal to use various api data service

  • 1.1.13
  • PyPI
  • Socket score

Maintainers
2

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()
    

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc