2 #include "nlib_include.h"
6 HINTERNET hHttpSession; //HINTERNET
7 HINTERNET hWatchLiveNicoConnect;
8 HINTERNET hNicoVideoConnect;
10 TCHAR appDataPath[_MAX_PATH];
11 TCHAR localAppDataPath[_MAX_PATH];
13 static CRITICAL_SECTION playerStatusParserCs;
17 ///
\83v
\83\8c\83C
\83\84\81[
\83X
\83e
\81[
\83^
\83X
\83p
\81[
\83T
\8f\89\8aú
\89»
19 static INLINE VOID Parser_Initialize();
23 ///
\83v
\83\8c\83C
\83\84\81[
\83X
\83e
\81[
\83^
\83X
\83p
\81[
\83T
\8cã
\8f\88\97\9d
25 static INLINE VOID Parser_Finalize();
27 NLIB_RESULT InitializeNLIB(HINTERNET hInternet){
29 NLIB_RESULT rslt = NLIB_ERR_CODE_NOTSET;
30 hHttpSession = hInternet;
31 if(hHttpSession == NULL){
33 rslt = NLIB_INITALIZE_FAILED_NETWORK;
38 hWatchLiveNicoConnect = WinHttpConnect(hHttpSession,WTEXT(WATCH_LIVE_NICO_VIDEO_DOMEINNAME),INTERNET_DEFAULT_HTTP_PORT,0);
40 if(hHttpSession == NULL){
41 rslt = NLIB_INITALIZE_FAILED_NETWORK;
45 hNicoVideoConnect = WinHttpConnect(hHttpSession,WWW_NICO_VIDEO_DOMEINNAME,INTERNET_DEFAULT_HTTP_PORT,0);
47 //appData
\82Ì
\83p
\83X
\82ð
\83Z
\83b
\83g
48 SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appDataPath);
49 wcscat(appDataPath,L"\\");
51 //localAppData
\82Ì
\83p
\83X
\82ð
\83Z
\83b
\83g
52 SHGetFolderPathW(0,CSIDL_LOCAL_APPDATA,0,SHGFP_TYPE_CURRENT,localAppDataPath);
53 wcscat(localAppDataPath,L"\\");
58 //
\83N
\83b
\83L
\81[
\83\89\83C
\83u
\83\89\83\8a\82ð
\8f\89\8aú
\89»
59 InitializeShareCookie(appDataPath,localAppDataPath);
61 Initialize_NicoLive();
63 //
\83p
\81[
\83T
\82ð
\8f\89\8aú
\89»
75 //
\83v
\83\8c\83C
\83\84\81[
\83X
\83e
\81[
\83^
\83X
\83p
\81[
\83T
\8cã
\8f\88\97\9d
81 //
\83N
\83b
\83L
\81[
\8b¤
\97L
\83\89\83C
\83u
\83\89\83\8a\82Ì
\8cã
\8f\88\97\9d
82 FinalizeShareCookie();
86 //winHttp
\82Ì
\8cã
\8f\88\97\9d
87 //WinHttpCloseHandle(hHttpSession);
89 //winsock
\82Ì
\8cã
\8f\88\97\9d
96 INLINE BOOL ReadHttpBody(HINTERNET hRequest,LPBYTE lpBuffer,DWORD dwBufSize,LPDWORD lpDwSize){
100 DWORD dwTotalSize = 0;
101 DWORD dwTotalSizePrev = 0;
104 WinHttpQueryDataAvailable(hRequest, &dwSize);
106 dwTotalSizePrev = dwTotalSize;
107 dwTotalSize += dwSize;
109 if(dwTotalSize >= dwBufSize){
113 WinHttpReadData(hRequest, lpBuffer + dwTotalSizePrev, dwSize, (LPDWORD)NULL);
120 *lpDwSize= dwTotalSize;
125 static INLINE VOID Parser_Initialize(){
128 xmlParser = XML_ParserCreate((const XML_Char*)NULL);
130 check(xmlParser,TEXT("
\83p
\81[
\83T
\8f\89\8aú
\89»
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½"));
134 InitializeCriticalSection(&playerStatusParserCs);
138 static INLINE VOID Parser_Finalize(){
141 XML_ParserFree(xmlParser);
143 DeleteCriticalSection(&playerStatusParserCs);
148 VOID XMLParse(LPVOID option,LPCSTR body,XML_StartElementHandler startElementEvent,XML_EndElementHandler endElementEvent,XML_CharacterDataHandler characterDataEvent){
150 UserDataContainer userDataContainer;
151 userDataContainer.nord = 0;
152 userDataContainer.userData = option;
155 EnterCriticalSection(&playerStatusParserCs);
158 XML_SetElementHandler(xmlParser,startElementEvent,endElementEvent);
159 XML_SetCharacterDataHandler(xmlParser,characterDataEvent);
160 XML_SetUserData(xmlParser,&userDataContainer);
163 XML_Parse(xmlParser,body,strlen(body),TRUE);
166 XML_ParserReset(xmlParser,(const XML_Char*)NULL);
168 LeaveCriticalSection(&playerStatusParserCs);