///
typedef struct nicovideoauth_t *NicoVideoAuth_P;
+
+
+
+typedef struct {
+ LPCWSTR deleted;
+ LPCWSTR first_retrieve;
+ LPCWSTR group_type;
+ LPCWSTR last_res_body;
+ LPCWSTR length_seconds;
+ LPCWSTR mylist_counter;
+ LPCWSTR num_res;
+ LPCWSTR thumbnail_url;
+ LPCWSTR title;
+ LPCWSTR update_time;
+ LPCWSTR video_id;
+ LPCWSTR view_counter;
+ LPCWSTR watch_id;
+}NicoItemData,*NicoItemData_P;
+
+///
+///\83j\83R\83j\83R\93®\89æ\82¨\8bC\82É\93ü\82è\93®\89æ
+///
+typedef struct {
+ LPCWSTR create_time;
+ LPCWSTR description;
+
+
+
+ NicoItemData itemData;
+ LPCWSTR item_id;
+ LPCWSTR item_type;
+ LPCWSTR update_time;
+ LPCWSTR watch;
+
+
+}NicoMyListItem,*NicoMyListItem_P;
+
///
///\83j\83R\83j\83R\90¶\95ú\91\97\83C\83x\83\93\83g\83n\83\93\83h\83\89
///
typedef NLIB_RESULT (*NicoRecvCallBack)(NICOLIVE_EVENT eventType,NicoLiveStream_P pNicoLiveStream,LPVOID option,NICOLIVE_PARAM param1,NICOLIVE_PARAM param2);
-
+///
+///\83j\83R\83j\83R\83}\83C\83\8a\83X\83g\83C\83x\83\93\83g\83n\83\93\83h\83\89
+///
+typedef NLIB_RESULT (*NicoMyListCallBack)(LPVOID option,NicoMyListItem_P pVideo);
////////////////////////////////////////////////////////////////////////////////////////////////////
///
- ///\83j\83R\83j\83R\93®\89æ\83}\83C\83\8a\83X\83g\83I\83u\83W\83F\83N\83g\93®\93I\90¶\90¬
- ///
- NLIB_DECLSPEC NicoMyList_P NicoMyList_new();
-
- ///
- ///\93®\93I\82É\90¶\90¬\82µ\82½\83j\83R\83j\83R\93®\89æ\83}\83C\83\8a\83X\83g\83I\83u\83W\83F\83N\83g\82ð\94j\8aü
+ ///\82Æ\82è\82 \82¦\82¸\83}\83C\83\8a\83X\83g\88ê\97\97\8eæ\93¾
///
- NLIB_DECLSPEC VOID NicoMyList_delete(NicoMyList_P* self);
+ NLIB_DECLSPEC NLIB_RESULT NicoMyList_getDefList(NicoVideoAuth_P pAuth,NicoMyListCallBack callback);
<None Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
+ <ClCompile Include="nlib_common.c" />
+ <ClCompile Include="nlib_myList.c" />
<ClCompile Include="nlib_nicoLive.c" />
<ClCompile Include="nlib_memoryManager.c" />
<ClCompile Include="nlib_nicoVideoAuth.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="nlib.h" />
+ <ClInclude Include="nlib_common.h" />
<ClInclude Include="nlib_cookieManager.h" />
<ClInclude Include="nlib_cstlManager.h" />
<ClInclude Include="nlib_define.h" />
<ClInclude Include="nlib_include.h" />
<ClInclude Include="nlib_memoryManager.h" />
+ <ClInclude Include="nlib_myList.h" />
<ClInclude Include="nlib_nicoLive.h" />
<ClInclude Include="nlib_nicoVideoAuth.h" />
<ClInclude Include="nlib_sqliteManager.h" />
--- /dev/null
+#include "nlib_include.h"
+
+static WSADATA wsaData; //wsadata
+HINTERNET hHttpSession; //HINTERNET
+
+WCHAR appDataPath[_MAX_PATH];
+WCHAR localAppDataPath[_MAX_PATH];
+
+NLIB_RESULT InitializeNLIB(){
+
+ int err;
+ int count = 0;
+
+ //WSAData\82ð\8f\89\8aú\89»
+ while((err = WSAStartup(MAKEWORD(2,0),&wsaData)) == WSASYSNOTREADY){
+
+ count++;
+ if(count >= 5)break;
+ Sleep(500);
+
+
+
+ }
+
+ if(err != ERROR_SUCCESS){
+
+ return NLIB_INITALIZE_FAILED_NETWORK;
+ }
+
+
+ //http\83n\83\93\83h\83\8b\82Ì\8dì\90¬
+ hHttpSession = WinHttpOpen(USER_AGENT,WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,(LPCWSTR)WINHTTP_NO_PROXY_NAME,(LPCWSTR)WINHTTP_NO_PROXY_BYPASS,0);
+
+ if(hHttpSession == NULL){
+
+ return NLIB_INITALIZE_FAILED_NETWORK;
+
+ }
+
+
+
+ //appData\82Ì\83p\83X\82ð\83Z\83b\83g
+ SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appDataPath);
+ wcscat(appDataPath,L"\\");
+
+ //localAppData\82Ì\83p\83X\82ð\83Z\83b\83g
+ SHGetFolderPathW(0,CSIDL_LOCAL_APPDATA,0,SHGFP_TYPE_CURRENT,localAppDataPath);
+ wcscat(localAppDataPath,L"\\");
+
+
+
+ //gFreeList\82ð\8f\89\8aú\89»
+ freeList_Initialize(gFreeList);
+
+ //\83N\83b\83L\81[\83\89\83C\83u\83\89\83\8a\82ð\8f\89\8aú\89»
+ InitializeShareCookie(appDataPath,localAppDataPath);
+
+ Initialize_NicoLive();
+
+
+ return NLIB_ERR_OK;
+}
+
+VOID FinalizeNLIB(){
+
+ Finalize_NicoLive();
+
+
+ //\83N\83b\83L\81[\8b¤\97L\83\89\83C\83u\83\89\83\8a\82Ì\8cã\8f\88\97\9d
+ FinalizeShareCookie();
+
+ //\83t\83\8a\81[\83\8a\83X\83g\82Ì\8cã\8f\88\97\9d
+ freeList_Finalize(gFreeList);
+
+ //winHttp\82Ì\8cã\8f\88\97\9d
+ WinHttpCloseHandle(hHttpSession);
+
+ //winsock\82Ì\8cã\8f\88\97\9d
+ WSACleanup();
+
+ return;
+}
+
+
+INLINE BOOL ReadHttpBody(HINTERNET hRequest,LPBYTE lpBuffer,DWORD dwBufSize,LPDWORD lpDwSize){
+
+
+ DWORD dwSize;
+ DWORD dwTotalSize = 0;
+ DWORD dwTotalSizePrev = 0;
+
+ for (;;) {
+ WinHttpQueryDataAvailable(hRequest, &dwSize);
+ if (dwSize > 0) {
+ dwTotalSizePrev = dwTotalSize;
+ dwTotalSize += dwSize;
+
+ if(dwTotalSize >= dwBufSize){
+ return FALSE;
+ }
+
+ WinHttpReadData(hRequest, lpBuffer + dwTotalSizePrev, dwSize, (LPDWORD)NULL);
+
+ }
+ else
+ break;
+ }
+
+ *lpDwSize= dwTotalSize;
+
+ return TRUE;
+
+}
\ No newline at end of file
--- /dev/null
+#pragma once
+
+
+#define NICO_VIDEO_DOMEINNAME "nicovideo.jp"
+#define WWW_NICO_VIDEO_DOMEINNAME L"www." WTEXT(NICO_VIDEO_DOMEINNAME)
+#define LIVE_NICO_VIDEO_DOMEINNAME "live.nicovideo.jp"
+#define WATCH_LIVE_NICO_VIDEO_DOMEINNAME "watch.live.nicovideo.jp"
+#define NLIB_VERTION 0001
+#define USER_AGENT WTEXT("nlib/") WTEXT(TOSTR(NLIB_VERTION)) WTEXT(" (qwerty ") WTEXT(__DATE__) WTEXT(")")
+
+///
+///http\83Z\83b\83V\83\87\83\93\83n\83\93\83h\83\8b
+///
+extern HINTERNET hHttpSession; //HINTERNET
+
+
+///
+///appData\83t\83H\83\8b\83_
+///
+extern WCHAR appDataPath[];
+
+
+///
+///localAppDAta\83t\83H\83\8b\83_
+///
+extern WCHAR localAppDataPath[];
+
+
+///
+///http\83{\83f\83B\93Ç\8eæ
+///
+extern INLINE BOOL ReadHttpBody(HINTERNET hRequest,LPBYTE lpBuffer,DWORD dwBufSize,LPDWORD lpDwSize);
\ No newline at end of file
#include "nlib_nicoVideoAuth.h"
//#include "nlib_cstlManager.h"
//#include "nlib_cookieManager.h"
+#include "nlib_mylist.h"
+#include "nlib_common.h"
#include "nlib_xmlHandler.h"
#include "nlib_memoryManager.h"
#include "nlib_sqliteManager.h"
--- /dev/null
+#include "nlib_include.h"
+
+
+///
+///\83}\83C\83\8a\83X\83g\88ê\97\97\8eæ\93¾\8b¤\92Ê\8f\88\97\9d
+///
+static NLIB_RESULT NicoMyList_getList(NicoVideoAuth_P pAuth,LPCWSTR objectName,NicoMyListCallBack callback);
+
+///
+///\82Æ\82è\82 \82¦\82¸\83}\83C\83\8a\83X\83g\88ê\97\97\8eæ\93¾
+///
+NLIB_RESULT NicoMyList_getDefList(NicoVideoAuth_P pAuth,NicoMyListCallBack callback){
+
+ NLIB_RESULT rslt = NLIB_ERR_OK;
+
+ rslt = NicoMyList_getList(pAuth,L"api/deflist/list",callback);
+
+
+
+end:
+
+
+ return rslt;
+}
+
+
+
+//
+//\83v\83\89\83C\83x\81[\83g\8aÖ\90\94
+//
+
+static NLIB_RESULT NicoMyList_getList(NicoVideoAuth_P pAuth,LPCWSTR objectName,NicoMyListCallBack callback){
+
+ //\95Ï\90\94\90é\8c¾\81A\8f\89\8aú\89»
+ NLIB_RESULT rslt = NLIB_ERR_OK;
+ HINTERNET hNicoVideoSession = NULL;
+ HINTERNET hGetMyList = NULL;
+ WCHAR sendBuffer[LENGTH_512] = {L"Cookie: "};
+ DWORD statusCode;
+ DWORD statusCodeSize = sizeof(statusCode);
+ DWORD readSize;
+ LPSTR readBuffer = NULL;
+
+
+
+ wcscat(sendBuffer,pAuth->userSession);
+ hNicoVideoSession = WinHttpConnect(hHttpSession,WWW_NICO_VIDEO_DOMEINNAME,INTERNET_DEFAULT_HTTP_PORT,0);
+
+ hGetMyList = WinHttpOpenRequest(hNicoVideoSession,L"GET",objectName,L"1.1",(LPCWSTR)WINHTTP_NO_REFERER,(LPCWSTR*)WINHTTP_DEFAULT_ACCEPT_TYPES,0);
+
+
+ if(WinHttpSendRequest(hGetMyList,sendBuffer,-1,WINHTTP_NO_REQUEST_DATA,0,0,0) == FALSE){
+
+ rslt = NLIB_ERR_FAILED_NETWORK;
+ goto end;
+
+ }
+
+ readBuffer = (LPSTR)malloc(LENGTH_65536 * 30);
+
+ if(WinHttpReceiveResponse(hGetMyList,NULL) == FALSE){
+
+ rslt = NLIB_ERR_FAILED_NETWORK;
+ goto end;
+
+ }
+
+
+ if (WinHttpQueryHeaders(hGetMyList,WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER,WINHTTP_HEADER_NAME_BY_INDEX,&statusCode,&statusCodeSize,WINHTTP_NO_HEADER_INDEX) == FALSE){
+ rslt = NLIB_GETPLAYERSTATUS_FAILED_CONNECT;
+ goto end;
+ }
+
+ if (HTTP_STATUS_OK != statusCode){
+ rslt = NLIB_GETPLAYERSTATUS_FAILED_CONNECT;
+ goto end;
+ }
+
+ if(ReadHttpBody(hGetMyList,(LPBYTE)readBuffer,CHUNKMEMORY_MAXSIZE,&readSize) == FALSE){
+
+ rslt = NLIB_GETPLAYERSTATUS_FAILED_CONNECT;
+ goto end;
+
+ }
+
+
+end:
+ free(readBuffer);
+ WinHttpCloseHandle(hNicoVideoSession);
+ WinHttpCloseHandle(hGetMyList);
+
+ return rslt;
+}
+
--- /dev/null
+#pragma once
+
+extern BOOL Initialize_NicoMyList();
+
+
+extern BOOL Finalize_NicoMyList();
\ No newline at end of file
#include "nlib_include.h"
-WCHAR appDataPath[_MAX_PATH];
-WCHAR localAppDataPath[_MAX_PATH];
+
//NlibProperty nlibProperty;
-static WSADATA wsaData; //wsadata
-static HINTERNET hHttpSession; //HINTERNET
+
static XML_Parser xmlParser;
static CRITICAL_SECTION playerStatusParserCs;
static INLINE NLIB_RESULT GetNicoLiveHistory(NicoLiveStream_P self,HINTERNET hConnect);
-///
-///http\83{\83f\83B\93Ç\8eæ
-///
-static INLINE BOOL ReadHttpBody(HINTERNET hRequest,LPBYTE lpBuffer,DWORD dwBufSize,LPDWORD lpDwSize);
+
///
///
static INLINE SOCKET GetConectedSocket(LPCWSTR nordName,LPCWSTR port,int socktype,int addr_famiry,int protocol);
+BOOL Initialize_NicoLive(){
-NLIB_RESULT InitializeNLIB(){
-
- int err;
- int count = 0;
-
- //WSAData\82ð\8f\89\8aú\89»
- while((err = WSAStartup(MAKEWORD(2,0),&wsaData)) == WSASYSNOTREADY){
-
- count++;
- if(count >= 5)break;
- Sleep(500);
-
-
-
- }
-
- if(err != ERROR_SUCCESS){
-
- return NLIB_INITALIZE_FAILED_NETWORK;
- }
-
-
- //http\83n\83\93\83h\83\8b\82Ì\8dì\90¬
- hHttpSession = WinHttpOpen(USER_AGENT,WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,(LPCWSTR)WINHTTP_NO_PROXY_NAME,(LPCWSTR)WINHTTP_NO_PROXY_BYPASS,0);
-
- if(hHttpSession == NULL){
-
- return NLIB_INITALIZE_FAILED_NETWORK;
-
- }
-
-
-
- //appData\82Ì\83p\83X\82ð\83Z\83b\83g
- SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appDataPath);
- wcscat(appDataPath,L"\\");
-
- //localAppData\82Ì\83p\83X\82ð\83Z\83b\83g
- SHGetFolderPathW(0,CSIDL_LOCAL_APPDATA,0,SHGFP_TYPE_CURRENT,localAppDataPath);
- wcscat(localAppDataPath,L"\\");
-
- //nlibProperty\82ð\8f\89\8aú\89»
- //nLibProperty_Initialize(nlibProperty);
- //gFreeList\82ð\8f\89\8aú\89»
- freeList_Initialize(gFreeList);
-
- //\83N\83b\83L\81[\83\89\83C\83u\83\89\83\8a\82ð\8f\89\8aú\89»
- InitializeShareCookie(appDataPath,localAppDataPath);
//\83p\81[\83T\82ð\8f\89\8aú\89»
Parser_Initialize();
InitializeCriticalSection(&heartBeatCs);
- return NLIB_ERR_OK;
+ return TRUE;
+
+
+
}
-VOID FinalizeNLIB(){
+
+extern BOOL Finalize_NicoLive(){
+
DeleteCriticalSection(&heartBeatCs);
Parser_Finalize();
- //\83N\83b\83L\81[\8b¤\97L\83\89\83C\83u\83\89\83\8a\82Ì\8cã\8f\88\97\9d
- FinalizeShareCookie();
- //\83t\83\8a\81[\83\8a\83X\83g\82Ì\8cã\8f\88\97\9d
- freeList_Finalize(gFreeList);
- //winHttp\82Ì\8cã\8f\88\97\9d
- WinHttpCloseHandle(hHttpSession);
- //winsock\82Ì\8cã\8f\88\97\9d
- WSACleanup();
- return;
+
}
+
NicoLiveStream_P NicoLiveStream_new(){
//\90¶\90¬&\8f\89\8aú\89»
NicoLiveStream_P self = (NicoLiveStream_P)calloc(1,sizeof(NicoLiveStream));
if(WinHttpSendRequest(hGetPlayerStatusRequest,sendBuffer,-1,WINHTTP_NO_REQUEST_DATA,0,0,0) == FALSE){
- rslt = NLIB_GETPLAYERSTATUS_FAILED_CONNECT;
+ rslt = NLIB_ERR_FAILED_NETWORK;
goto connectend;
}
}
-static INLINE BOOL ReadHttpBody(HINTERNET hRequest,LPBYTE lpBuffer,DWORD dwBufSize,LPDWORD lpDwSize){
-
-
- DWORD dwSize;
- DWORD dwTotalSize = 0;
- DWORD dwTotalSizePrev = 0;
- for (;;) {
- WinHttpQueryDataAvailable(hRequest, &dwSize);
- if (dwSize > 0) {
- dwTotalSizePrev = dwTotalSize;
- dwTotalSize += dwSize;
-
- if(dwTotalSize >= dwBufSize){
- return FALSE;
- }
-
- WinHttpReadData(hRequest, lpBuffer + dwTotalSizePrev, dwSize, (LPDWORD)NULL);
-
- }
- else
- break;
- }
-
- *lpDwSize= dwTotalSize;
-
- return TRUE;
-
-}
static INLINE VOID Parser_Initialize(){
}NicoLiveStream;
+extern BOOL Initialize_NicoLive();
+
+
+extern BOOL Finalize_NicoLive();
//\8f\89\8aú\89»\81E\8cã\8f\88\97\9d\83}\83N\83\8d\92è\8b`
/////////////////////////////////////////////////////////////////////////////////////
-#define NICO_VIDEO_DOMEINNAME "nicovideo.jp"
-#define LIVE_NICO_VIDEO_DOMEINNAME "live.nicovideo.jp"
-#define WATCH_LIVE_NICO_VIDEO_DOMEINNAME "watch.live.nicovideo.jp"
-#define NLIB_VERTION 0001
-#define USER_AGENT WTEXT("nlib/") WTEXT(TOSTR(NLIB_VERTION)) WTEXT(" (qwerty ") WTEXT(__DATE__) WTEXT(")")
+
//extern NlibProperty nlibProperty;
-///
-///appData\83t\83H\83\8b\83_
-///
-extern WCHAR appDataPath[];
-
-
-///
-///localAppDAta\83t\83H\83\8b\83_
-///
-extern WCHAR localAppDataPath[];
\ No newline at end of file
nl = NicoLiveStream_new();
nva = NicoVideoAuth_new();
//np = NlibProperty_ref();
+
+ NicoVideoAuth_getNicoVideoAuth(nva,BT_GOOGLE_CHROME);
return nl != NULL ? 0 : 1;
}
return 0;
}
+NLIB_RESULT myListCallBack(LPVOID option,NicoMyListItem_P pVideo){
+
+
+
+
+ return NLIB_ERR_OK;
+}
+
void nicoLive_connect(void) {
dumpline();
SetResFrom(1000);
//SetHeartBeatMsec(5000);
- SetKeapALiveMsec(5000);
- NicoVideoAuth_getNicoVideoAuth(nva,BT_GOOGLE_CHROME);
+ //SetKeapALiveMsec(5000);
+ SetKeapALiveFlag(FALSE);
+
//CU_ASSERT_EQUAL(NicoLiveStream_connect(nl,nva,L"lv66406941",callback,NULL), NLIB_ERR_OK);
WCHAR housoubuf[LENGTH_1024];
std::wcin.getline(housoubuf,sizeof(housoubuf) / sizeof(housoubuf[0]));
}
+void nicoLive_mylist(void) {
+
+
+
+ CU_ASSERT_EQUAL(NicoMyList_getDefList(nva,myListCallBack), NLIB_ERR_OK);
+
+
+}
+
static CU_TestInfo nlive_test[] = {
- { "\90Ú\91±", nicoLive_connect },
-
+ //{ "\90Ú\91±", nicoLive_connect },
+ {"\83}\83C\83\8a\83X\83g",nicoLive_mylist},
CU_TEST_INFO_NULL,
};
#include <Wininet.h>
#include <Iepmapi.h>
-#include <qwerty\sqlite\sqliteManager.h>
+#include <sqliteManger\sqliteManager.h>
#include <qwerty\qwerty_common.h>
#include <qwerty\windebuger.h>
<IncludePath>$(SolutionDir)include\qwerty\cookie;$(SolutionDir);$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <IncludePath>$(SolutionDir)include\qwerty\cookie;$(IncludePath)</IncludePath>
+ <IncludePath>$(SolutionDir)include\qwerty\cookie;$(SolutionDir);$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>