Files
Work/http/HOLD.CPP
2024-08-07 09:16:27 -04:00

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