147 lines
5.2 KiB
C++
147 lines
5.2 KiB
C++
|
|
#if 0
|
|
#include <http/main.hpp>
|
|
#include <common/string.hpp>
|
|
#include <common/console.hpp>
|
|
#include <common/openfile.hpp>
|
|
#include <common/filemap.hpp>
|
|
#include <common/pview.hpp>
|
|
#include <common/profile.hpp>
|
|
#include <socket/hostent.hpp>
|
|
#include <socket/servent.hpp>
|
|
#include <socket/intsaddr.hpp>
|
|
#include <socket/socket.hpp>
|
|
|
|
HINSTANCE Main::smhInstance=0;
|
|
HINSTANCE Main::smhPrevInstance=0;
|
|
int Main::smnCmdShow=0;
|
|
|
|
WORD open(const String &ticker);
|
|
void writeLines(Block<String> &stringBlock);
|
|
void saveLines(Block<String> &stringBlock,const String &saveName);
|
|
DWORD symbolLoad(String fundType,Block<String> &symbolStrings);
|
|
|
|
Console winConsole;
|
|
|
|
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
|
{
|
|
Block<String> itemStrings;
|
|
String statusString;
|
|
int itemIndex;
|
|
|
|
symbolLoad(String("NASDAQ"),itemStrings);
|
|
for(itemIndex=0;itemIndex<itemStrings.size();itemIndex++)
|
|
{
|
|
String tickerString(itemStrings[itemIndex].betweenString(';',0));
|
|
::sprintf(statusString,"%s %d of %d",(LPSTR)tickerString,itemIndex+1,itemStrings.size());
|
|
winConsole.writeLine(statusString);
|
|
open(tickerString);
|
|
}
|
|
symbolLoad(String("NYSE"),itemStrings);
|
|
for(itemIndex=0;itemIndex<itemStrings.size();itemIndex++)
|
|
{
|
|
String tickerString(itemStrings[itemIndex].betweenString(';',0));
|
|
::sprintf(statusString,"%s %d of %d",(LPSTR)tickerString,itemIndex+1,itemStrings.size());
|
|
winConsole.writeLine(statusString);
|
|
open(tickerString);
|
|
}
|
|
symbolLoad(String("AMEX"),itemStrings);
|
|
for(itemIndex=0;itemIndex<itemStrings.size();itemIndex++)
|
|
{
|
|
String tickerString(itemStrings[itemIndex].betweenString(';',0));
|
|
::sprintf(statusString,"%s %d of %d",(LPSTR)tickerString,itemIndex+1,itemStrings.size());
|
|
winConsole.writeLine(statusString);
|
|
open(tickerString);
|
|
}
|
|
symbolLoad(String("MUTUAL"),itemStrings);
|
|
for(itemIndex=0;itemIndex<itemStrings.size();itemIndex++)
|
|
{
|
|
String tickerString(itemStrings[itemIndex].betweenString(';',0));
|
|
::sprintf(statusString,"%s %d of %d",(LPSTR)tickerString,itemIndex+1,itemStrings.size());
|
|
winConsole.writeLine(statusString);
|
|
open(tickerString);
|
|
}
|
|
winConsole.writeLine("Finished.");
|
|
winConsole.read();
|
|
return FALSE;
|
|
}
|
|
|
|
WORD open(const String &tickerString)
|
|
{
|
|
String hostName;
|
|
String getRequest;
|
|
HostEnt hostEntry;
|
|
ServEnt serverEntry;
|
|
WSASystem wsaSystem;
|
|
Socket httpControl;
|
|
INETSocketAddress internetSocketAddress;
|
|
Profile iniProfile("QUOTE.INI","UNSET");
|
|
|
|
iniProfile.readProfileString(String("SERVER"),String("HOSTNAME"),hostName);
|
|
iniProfile.readProfileString(String("SERVER"),String("REQUEST"),getRequest);
|
|
getRequest.removeTokens(String('"'));
|
|
winConsole.writeLine(String("trying ")+hostName+String("..."));
|
|
if(!wsaSystem.isInitialized()){winConsole.writeLine("WINSOCK initialization failure.");return FALSE;}
|
|
InternetAddress internetAddress(hostName);
|
|
if(!internetAddress.isZero()){if(!hostEntry.hostByAddress(internetAddress)){return FALSE;}}
|
|
else if(!hostEntry.hostByName(hostName)){return FALSE;}
|
|
if(!internetAddress.isZero()){if(!hostEntry.hostByAddress(internetAddress)){winConsole.writeLine(String("no DNS entry for ")+hostName);return FALSE;}}
|
|
else if(!hostEntry.hostByName(hostName)){winConsole.writeLine(String("no DNS entry for ")+hostName);return FALSE;}
|
|
winConsole.writeLine(String("connect...")+String("'")+hostEntry.hostName()+String("' (")+(String)(hostEntry.addresses())[0]+String(")"));
|
|
internetSocketAddress.internetAddress((hostEntry.addresses())[0]);
|
|
if(serverEntry.serviceByName("http","tcp"))
|
|
{
|
|
if(!httpControl.openSocket()){winConsole.writeLine("unable to create socket.");return FALSE;}
|
|
internetSocketAddress.family(PF_INET);
|
|
internetSocketAddress.port(serverEntry.port());
|
|
}
|
|
else
|
|
{
|
|
if(!httpControl.openSocket()){winConsole.writeLine("unable to create socket.");return FALSE;}
|
|
internetSocketAddress.family(PF_INET);
|
|
internetSocketAddress.port(htons(80));
|
|
}
|
|
if(!httpControl.connect(internetSocketAddress)){winConsole.writeLine("unable to connect to http daemon");return FALSE;}
|
|
httpControl.getSocketName(internetSocketAddress);
|
|
Block<String> receiveStrings;
|
|
getRequest+=tickerString;
|
|
winConsole.writeLine(getRequest);
|
|
getRequest+="\n";
|
|
httpControl.send(getRequest);
|
|
httpControl.receivePage(receiveStrings);
|
|
// writeLines(receiveStrings);
|
|
saveLines(receiveStrings,tickerString+String(".HTM"));
|
|
return httpControl.isConnected();
|
|
}
|
|
|
|
void writeLines(Block<String> &stringBlock)
|
|
{
|
|
for(short itemIndex=0;itemIndex<stringBlock.size();itemIndex++)
|
|
winConsole.writeLine(stringBlock[itemIndex]);
|
|
}
|
|
|
|
void saveLines(Block<String> &stringBlock,const String &saveName)
|
|
{
|
|
FileHandle saveFile(saveName,FileHandle::Write,FileHandle::ShareNone,FileHandle::Overwrite);
|
|
|
|
for(short itemIndex=0;itemIndex<stringBlock.size();itemIndex++)
|
|
{
|
|
saveFile.write(stringBlock[itemIndex]);
|
|
saveFile.write(String("\n"));
|
|
}
|
|
}
|
|
|
|
DWORD symbolLoad(String fundType,Block<String> &symbolStrings)
|
|
{
|
|
String lineString;
|
|
if(fundType.isNull())return FALSE;
|
|
fundType+=String(".txt");
|
|
symbolStrings.remove();
|
|
FileHandle readFile(fundType,FileHandle::Read,FileHandle::ShareRead,FileHandle::Open);
|
|
if(!readFile.isOkay())return FALSE;
|
|
FileMap readMap(readFile);
|
|
PureViewOfFile readView(readMap);
|
|
while(readView.getLine(lineString))symbolStrings.insert(&lineString);
|
|
return symbolStrings.size();
|
|
}
|
|
#endif
|