//import 'dart:html';
//import 'package:http/http.dart';
import 'dart:io';
import 'dart:convert';
import 'clientportalapi.dart';
import 'AccessRight/accessrightmodels.dart';
import 'MarketData/marketdatamodels.dart';
// NOTE: This is SAMPLE test project only. It's just to test simple functionality of ClientPortalApi
// and Price Update throgh sockets, please write your own application base on ideas here.
// DO NOT USE AS IS OR ANY MEANS FOR PRACTICAL APPLICATION.
class Test1
{
ClientPortalApi obj;
String targetAccNo = 'TEST';
String userAccName = 'ADMIN';
String userAccPass = 'pass';
String targetSysId = 'SYS_F';
void OnLogin(LoginRespData data)
{
print('LOGGED IN');
print(jsonEncode(data));
}
void OnLogout()
{
if (obj.IsLoggedIn())
{
obj.accessRight.SessionTokenHeartbeat().whenComplete(() => null);
obj.accessRight.UserLogout().whenComplete(() => null);
}
}
void StartIt()
{
obj = new ClientPortalApi();
var dd = obj.accessRight.UserLogin(userAccName, userAccPass);
dd.then((value) => OnLogin(value));
}
void GetPrice() async
{
if (!obj.IsLoggedIn())
return;
var channels = ['MarketData'];
obj.SubscibeChannels(channels);
obj.marketData.OnPriceResp = OnPriceUpdate;
// offer some lead time connect to socket
await Future.delayed(Duration(seconds: 2));
var prodCodes = ['HSIN1'];
obj.marketData.SubcribePrice(prodCodes);
}
void GetTicker() async
{
if (!obj.IsLoggedIn())
return;
var channels = ['MarketData'];
obj.SubscibeChannels(channels);
obj.marketData.OnTickerResp = OnTickerUpdate;
// offer some lead time connect to socket
await Future.delayed(Duration(seconds: 2));
var prodCodes = ['HSIN1'];
obj.marketData.SubcribeTicker(prodCodes);
}
void OnPriceUpdate(PriceResponse resp)
{
print(jsonEncode(resp));
}
void OnTickerUpdate(TickerResponse resp)
{
print(jsonEncode(resp));
}
}
void main() async
{
var t = Test1();
t.StartIt();
await Future.delayed(Duration(seconds: 2));
// sample to display price, bid/ask/last, OHLC
t.GetPrice();
await Future.delayed(Duration(seconds: 10));
// sample to display Ticker
//t.GetTicker();
//await Future.delayed(Duration(seconds: 10));
// wait for ENTER then logout
// somehow/maybe doesnt work, need to CTRL-C to terminate
//stdin.readLineSync();
t.OnLogout();
}