2 #include "nlib_include.h"
6 enum NPlayerStatus_NORD{
8 NPlayerStatus_GETPLAYERSTATUS,
14 NPlayerStatus_OPEN_TIME,
15 NPlayerStatus_START_TIME,
20 NPlayerStatus_PROVIDER,
21 NPlayerStatus_DEFAULT_COMMUNITY,
22 NPlayerStatus_IS_OWNER,
23 NPlayerStatus_END_TIME,
24 NPlayerStatus_NICOLIVE_API,
26 NPlayerStatus_IS_PREMIUM,
27 NPlayerStatus_USER_ID,
28 NPlayerStatus_USER_DOMEIN,
29 NPlayerStatus_BASE_TIME
32 enum NicoLiveHeartBeat_NORD{
33 NicoLiveHeartBeat_ROOT,
34 NicoLiveHeartBeat_HEARTBEAT,
35 NicoLiveHeartBeat_WATCHCOUNT,
36 NicoLiveHeartBeat_COMMENTCOUNT,
37 NicoLiveHeartBeat_IS_RESTRICT,
38 NicoLiveHeartBeat_TICKET
43 StreamInfo_GETPLAYERSTATUS,
44 StreamInfo_REQUEST_ID,
45 StreamInfo_STREAMINFO,
47 StreamInfo_DESCRIPTION,
48 StreamInfo_PROVIDER_TYPE,
49 StreamInfo_DEFAULT_COMMUNITY,
50 StreamInfo_COMMUNITYINFO,
56 enum NicoLivePublishStatus_NORD{
58 NicoLivePublish_PUBLISHSTATUS,
59 NicoLivePublish_NICOLIVE_API,
60 NicoLivePublish_STREAM,
61 NicoLivePublish_ERROR,
62 NicoLivePublish_TOKEN,
69 #define StrCpyArray(buf,pszData,nLength) StrCpy(buf,sizeof(buf) / sizeof(buf[0]),pszData,nLength)
71 static INLINE NLIB_RESULT StrCpy(LPTSTR buf,UINT_PTR buflen,LPCTSTR pszData,UINT_PTR nLength);
74 ///UTF8
\95Ï
\8a·
\93à
\95\94\8aÖ
\90\94
76 static INLINE VOID ToUTF8(LPSTR buf,LPCTSTR input,INT_PTR nLength,INT_PTR maxLength);
79 static INLINE NLIB_RESULT convToResultCode(LPCTSTR pszData,UINT nLength){
81 NLIB_RESULT rslt = NLIB_ERR_CODE_NOTSET;
83 if(_tcsncmp(pszData,TEXT("invalid_lv"),nLength) == 0){
85 rslt = NLIB_ERR_GETPLAYERSTATUS_INVALID_LV;
87 }else if(_tcsncmp(pszData,TEXT("invalid_thread"),nLength) == 0){
89 rslt = NLIB_ERR_GETPLAYERSTATUS_INVALID_THREAD;
91 }else if( _tcsncmp(pszData,TEXT("notfound"),nLength) == 0){
93 rslt = NLIB_ERR_GETPLAYERSTATUS_NOTFOUND;
95 }else if(_tcsncmp(pszData,TEXT("notlogin"),nLength) == 0){
97 rslt = NLIB_ERR_GETPLAYERSTATUS_NOTLOGIN;
99 }else if(_tcsncmp(pszData,TEXT("not_permitted"),nLength) == 0){
101 rslt = NLIB_ERR_GETPLAYERSTATUS_NOT_PERMITTED;
103 }else if(_tcsncmp(pszData,TEXT("maintenance"),nLength) == 0){
105 rslt = NLIB_ERR_GETPLAYERSTATUS_MAINTENANCE;
107 }else if(_tcsncmp(pszData,TEXT("closed"),nLength) == 0){
109 rslt = NLIB_ERR_GETPLAYERSTATUS_CLOSED;
111 } else if(_tcsncmp(pszData,TEXT("unknown"),nLength) == 0){
113 rslt = NLIB_ERR_GETPLAYERSTATUS_UNKNOWN;
115 }else if(_tcsncmp(pszData,TEXT("unknown_error"),nLength) == 0){
117 rslt = NLIB_ERR_GETPLAYERSTATUS_UNKNOWN_ERROR;
119 } else if(_tcsncmp(pszData,TEXT("server_error"),nLength) == 0){
121 rslt = NLIB_ERR_GETPLAYERSTATUS_SERVER_ERROR;
124 } else if(_tcsncmp(pszData,TEXT("DELETED"),nLength) == 0){
126 rslt = NLIB_ERR_GETPLAYERSTATUS_DELETED;
128 } else if(_tcsncmp(pszData,TEXT("full"),nLength) == 0){
130 rslt = NLIB_ERR_GETPLAYERSTATUS_FULL;
132 } else if(_tcsncmp(pszData,TEXT("permission_denied"),nLength) == 0){
134 rslt = NLIB_ERR_GETPLAYERSTATUS_PERMISSION_DENIED;
136 }else if(_tcsncmp(pszData,TEXT("require_accept_print_timeshift_ticket"),nLength) == 0) {
138 rslt = NLIB_ERR_GETPLAYERSTATUS_REQUIRE_ACCEPT_PRINT_TIMESHIFT_TICKET;
141 }else if(_tcsncmp(pszData,TEXT("access_locked"),nLength) == 0) {
143 rslt = NLIB_ERR_GETPLAYERSTATUS_ACCESS_LOCKED;
146 }else if(_tcsncmp(pszData,TEXT("tsarchive"),nLength) == 0){
148 rslt = NLIB_ERR_GETPLAYERSTATUS_TSARCHIVE;
150 } else if(_tcsncmp(pszData,TEXT("usertimeshift"),nLength) == 0){
152 rslt = NLIB_ERR_GETPLAYERSTATUS_USERTIMESHIFT;
154 } else if(_tcsncmp(pszData,TEXT("require_community_member"),nLength) == 0){
156 rslt = NLIB_ERR_GETPLAYERSTATUS_REQUIRE_COMMUNITY_MEMBER;
158 } else if(_tcsncmp(pszData,TEXT("comingsoon"),nLength) == 0){
160 rslt = NLIB_ERR_GETPLAYERSTATUS_COMINGSOON;
162 }else if(_tcsncmp(pszData,TEXT("noauth"),nLength) == 0){
164 rslt = NLIB_ERR_GETPLAYERSTATUS_NOAUTH;
166 } else if(_tcsncmp(pszData,TEXT("block_now_count_overflow"),nLength) == 0){
168 rslt = NLIB_ERR_GETPLAYERSTATUS_BLOCK_NOW_COUNT_OVERFLOW;
171 std::wstring errmessage(TEXT("
\8c©
\8am
\94F
\82Ì
\83v
\83\8c\83C
\83\84\81[
\83X
\83e
\81[
\83^
\83X
\83G
\83\89\81[:"));
172 errmessage.append(pszData,nLength);
173 rslt = NLIB_ERR_GETPLAYERSTATUS_UNDEFINED;
174 throw nlib::Exception(errmessage.c_str(),__LINE__,TEXT(__FILE__),TEXT(__FILE__));
186 extern void NPlayerStatus_ElementStartHandler(void *userData,const XML_Char *pszName,const XML_Char *atts[]){
188 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
189 NicoLivePlayerStatus_P ps = (NicoLivePlayerStatus_P)userDataContainer->userData;
193 enum NPlayerStatus_NORD element = NPlayerStatus_ROOT;
195 switch (userDataContainer->nord){
198 case (MAKENORD(NPlayerStatus_ROOT)):
201 if(_tcscmp(pszName,TEXT("getplayerstatus")) == 0){
207 for(index = 0;atts[index] != NULL;index += 2){
209 if(_tcscmp(atts[index],TEXT("status")) == 0 && _tcscmp(atts[index + 1],TEXT("ok")) == 0){
212 userDataContainer->errcode = NLIB_ERR_OK;
215 }else if(_tcscmp(atts[index],TEXT("status")) == 0 && _tcscmp(atts[index + 1],TEXT("ok")) != 0){
217 userDataContainer->errcode = NLIB_ERR_PLAYERSTATUS_ERROR;
223 element = NPlayerStatus_GETPLAYERSTATUS;
230 } else if(_tcscmp(pszName,TEXT("nicolive_api")) == 0){
232 element = NPlayerStatus_NICOLIVE_API;
237 //getplayerstatus or // NPlayerStatus_NICOLIVE_API
238 case (MAKENORD(NPlayerStatus_GETPLAYERSTATUS)):
239 case (MAKENORD(NPlayerStatus_NICOLIVE_API)):
245 if(_tcscmp(pszName,TEXT("ms"))== 0){
247 element = NPlayerStatus_MS;
251 } else if(_tcscmp(pszName,TEXT("stream"))== 0){
253 element = NPlayerStatus_STREAM;
257 }else if(_tcscmp(pszName,TEXT("user"))== 0){
259 element = NPlayerStatus_USER;
261 } else if(_tcscmp(pszName,TEXT("error"))== 0){
263 element = NPlayerStatus_ERROR;
269 case (MAKENORD1(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_MS)):
273 if(_tcscmp(pszName,TEXT("addr")) == 0){
275 element = NPlayerStatus_ADDR;
278 } else if(_tcscmp(pszName,TEXT("port")) == 0){
280 element = NPlayerStatus_PORT;
283 } else if(_tcscmp(pszName,TEXT("thread")) == 0){
286 element = NPlayerStatus_THREAD;
292 //getplayerstatus/stream
293 case (MAKENORD1(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM)):
294 if(_tcscmp(pszName,TEXT("open_time")) == 0){
296 element = NPlayerStatus_OPEN_TIME;
299 } else if(_tcscmp(pszName,TEXT("start_time")) == 0){
301 element = NPlayerStatus_START_TIME;
303 } else if(_tcscmp(pszName,TEXT("base_time")) == 0){
305 element = NPlayerStatus_BASE_TIME;
307 } else if(_tcscmp(pszName,TEXT("id")) == 0){
309 element = NPlayerStatus_ID;
311 } else if(_tcscmp(pszName,TEXT("title")) == 0){
313 element = NPlayerStatus_TITLE;
314 }else if(_tcscmp(pszName,TEXT("provider_type")) == 0){
316 element = NPlayerStatus_PROVIDER;
318 } else if(_tcscmp(pszName,TEXT("default_community")) == 0){
320 element = NPlayerStatus_DEFAULT_COMMUNITY;
322 } else if(_tcscmp(pszName,TEXT("is_owner")) == 0){
324 element = NPlayerStatus_IS_OWNER;
326 } else if(_tcscmp(pszName,TEXT("end_time")) == 0){
328 element = NPlayerStatus_END_TIME;
335 case (MAKENORD1(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_USER)):
338 if(_tcscmp(pszName,TEXT("is_premium")) == 0){
340 element = NPlayerStatus_IS_PREMIUM;
342 } else if(_tcscmp(pszName,TEXT("user_id")) == 0){
344 element = NPlayerStatus_USER_ID;
346 } else if(_tcscmp(pszName,TEXT("userDomain")) == 0){
348 element = NPlayerStatus_USER_DOMEIN;
353 case (MAKENORD1(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_ERROR)):
354 case MAKENORD1(NPlayerStatus_NICOLIVE_API,NPlayerStatus_ERROR):
356 if(_tcscmp(pszName,TEXT("code")) == 0){
358 element = NPlayerStatus_CODE;
371 userDataContainer->nord = MAKENORD1(userDataContainer->nord,element);
378 void NPlayerStatus_CharacterDataHandler(void *userData,const XML_Char *pszData,int nLength){
380 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
381 NicoLivePlayerStatus_P ps = (NicoLivePlayerStatus_P)userDataContainer->userData;
384 switch(userDataContainer->nord){
386 //getplayerstatus/ms/addr
387 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_MS,NPlayerStatus_ADDR):
392 userDataContainer->errcode = StrCpyArray(ps->ms.addr,pszData,nLength);
397 //getplayerstatus/ms/port
398 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_MS,NPlayerStatus_PORT):
403 userDataContainer->errcode = StrCpyArray(ps->ms.port,pszData,nLength);
410 //getplayerstatus/ms/thread
411 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_MS,NPlayerStatus_THREAD):
413 //ps->ms.thread = wtoin(pszData,nLength);
414 strToIntN(ps->ms.thread,pszData,nLength);
419 //getplayerstatus/stream/open_time
420 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_OPEN_TIME):
422 //ps->stream.open_time = wtoin(pszData,nLength);
423 strToIntN(ps->stream.open_time,pszData,nLength);
428 //getplayerstatus/stream/start_time
429 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_START_TIME):
431 //ps->stream.start_time = wtoin(pszData,nLength);
432 strToIntN(ps->stream.start_time,pszData,nLength);
433 //_tcscpy(start_time,elementValue);
437 //getplayerstatus/stream/base_time
438 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_BASE_TIME):
440 strToIntN(ps->stream.base_time,pszData,nLength);
443 #ifdef PLAYERSTATUS_GET_TITLE
444 //getplayerstatus/stream/title
445 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_TITLE):
447 StrCpy(ps->stream.title,ARRAY_LENGTH(ps->stream.title),pszData,nLength);
453 //getplayerstatus/stream/id
454 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_ID):
457 userDataContainer->errcode = StrCpyArray(ps->stream.id,pszData,nLength);
463 //getplayerstatus/user/is_premium
464 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_USER,NPlayerStatus_IS_PREMIUM):
467 strToIntN(ps->user.is_premium,pszData,nLength);
471 //getplayerstatus/user/is_premium
472 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_USER,NPlayerStatus_USER_ID):
475 userDataContainer->errcode = StrCpyArray(ps->user.user_id,pszData,nLength);
479 //getplayerstatus/user/userDomein
480 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_USER,NPlayerStatus_USER_DOMEIN):
482 userDataContainer->errcode = StrCpyArray(ps->user.userDomain,pszData,nLength);
486 //getplayerstatus/stream/provider
487 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_PROVIDER):
489 if(_tcsncmp(pszData,TEXT("community"),nLength) == 0){
491 ps->stream.provider_type = COMMUNITY_PROVIDER_TYPE;
493 } else if(_tcsncmp(pszData,TEXT("channel"),nLength) == 0){
495 ps->stream.provider_type = CHANNEL_PROVIDER_TYPE;
497 }else if(_tcsncmp(pszData,TEXT("official"),nLength) == 0){
499 ps->stream.provider_type = OFFICIAL_PROVIDER_TYPE;
505 //getplayerstatus/stream/default_community
506 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_DEFAULT_COMMUNITY):
509 userDataContainer->errcode = StrCpyArray(ps->stream.default_community,pszData,nLength);
513 //getplayerstatus/stream/is_owner
514 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_IS_OWNER):
516 //ps->stream.is_owner = wtoin(pszData,nLength);
517 strToIntN(ps->stream.is_owner,pszData,nLength);
521 //getplayerstatus/stream/end_time
522 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_STREAM,NPlayerStatus_END_TIME):
524 //ps->stream.end_time = wtoin(pszData,nLength);
525 strToIntN(ps->stream.end_time,pszData,nLength);
529 //getplayerstatus/error/code
530 case MAKENORD2(NPlayerStatus_GETPLAYERSTATUS,NPlayerStatus_ERROR,NPlayerStatus_CODE):
531 case MAKENORD2(NPlayerStatus_NICOLIVE_API,NPlayerStatus_ERROR,NPlayerStatus_CODE):
535 userDataContainer->errcode = convToResultCode(pszData,nLength);
549 extern void NPlayerStatus_ElementEndHandler(void *userData,const XML_Char *pszName){
552 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
553 userDataContainer->nord = UPNORD(userDataContainer->nord);
561 void NicoLiveHeartBeat_ElementStartHandler(void *userData,const XML_Char *pszName,const XML_Char *atts[]){
563 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
564 NicoLiveHeartBeatContainer_P hbc = (NicoLiveHeartBeatContainer_P)userDataContainer->userData;
567 enum NicoLiveHeartBeat_NORD element = NicoLiveHeartBeat_ROOT;
569 switch (userDataContainer->nord){
572 case (MAKENORD(NicoLiveHeartBeat_ROOT)):
575 if(_tcscmp(pszName,TEXT("heartbeat")) == 0){
580 for(index = 0;atts[index] != NULL;index += 2){
582 if(_tcscmp(atts[index],TEXT("status")) == 0 && _tcscmp(atts[index + 1],TEXT("ok")) == 0){
585 userDataContainer->errcode = NLIB_ERR_OK;
588 }else if(_tcscmp(atts[index],TEXT("status")) == 0 && _tcscmp(atts[index + 1],TEXT("ok")) != 0){
590 userDataContainer->errcode = NLIB_ERR_HEARTBEAT_ERROR;
591 }else if(_tcscmp(atts[index],TEXT("time")) == 0){
593 hbc->heartBeat.time = wcstoul(atts[index + 1],NULL,0);
600 element = NicoLiveHeartBeat_HEARTBEAT;
608 case MAKENORD(NicoLiveHeartBeat_HEARTBEAT):
610 if(_tcscmp(pszName,TEXT("watchCount")) == 0){
612 element = NicoLiveHeartBeat_WATCHCOUNT;
614 } else if(_tcscmp(pszName,TEXT("commentCount")) == 0){
616 element = NicoLiveHeartBeat_COMMENTCOUNT;
618 } else if(_tcscmp(pszName,TEXT("is_restrict")) == 0){
620 element = NicoLiveHeartBeat_IS_RESTRICT;
622 } else if(_tcscmp(pszName,TEXT("ticket")) == 0){
624 element = NicoLiveHeartBeat_TICKET;
636 userDataContainer->nord = MAKENORD1(userDataContainer->nord,element);
643 void NicoLiveHeartBeat_CharacterDataHandler(void *userData,const XML_Char *pszData,int nLength){
646 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
647 NicoLiveHeartBeatContainer_P hbc = (NicoLiveHeartBeatContainer_P)userDataContainer->userData;
650 switch(userDataContainer->nord){
652 //heartbeat/watchCount
653 case MAKENORD1(NicoLiveHeartBeat_HEARTBEAT,NicoLiveHeartBeat_WATCHCOUNT):
655 strToIntN(hbc->heartBeat.watchCount,pszData,nLength);
659 //heartbeat/commentCount
660 case MAKENORD1(NicoLiveHeartBeat_HEARTBEAT,NicoLiveHeartBeat_COMMENTCOUNT):
662 strToIntN(hbc->heartBeat.commentCount,pszData,nLength);
666 //heartbeat/is_restrict
667 case MAKENORD1(NicoLiveHeartBeat_HEARTBEAT,NicoLiveHeartBeat_IS_RESTRICT):
669 extendMalloc(hbc->is_restrictBuff,LPTSTR,hbc->is_restrictSize,(INT_PTR)sizeof(TCHAR) * nLength);
671 wcsncpy(hbc->is_restrictBuff,pszData,nLength);
673 hbc->is_restrictBuff[nLength] = L'\0';
678 case MAKENORD1(NicoLiveHeartBeat_HEARTBEAT,NicoLiveHeartBeat_TICKET):
680 extendMalloc(hbc->ticketBuff,LPTSTR,hbc->ticketSize,(INT_PTR)sizeof(TCHAR) * nLength);
682 wcsncpy(hbc->ticketBuff,pszData,nLength);
684 hbc->ticketBuff[nLength] = L'\0';
694 void NicoLiveHeartBeat_ElementEndHandler(void *userData,const XML_Char *pszName){
696 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
697 userDataContainer->nord = UPNORD(userDataContainer->nord);
705 static INLINE VOID ToUTF8(LPSTR buf,LPCTSTR input,INT_PTR nLength,INT_PTR maxLength){
708 if(WideCharToMultiByte(CP_UTF8,0,input,nLength,(LPSTR)NULL,0,(LPCSTR)NULL,(LPBOOL)NULL) > maxLength){
714 buf[WideCharToMultiByte(CP_UTF8,0,input,nLength,buf,maxLength,(LPCSTR)NULL,(LPBOOL)NULL)] = '\0';
721 static INLINE NLIB_RESULT StrCpy(LPTSTR buf,UINT_PTR buflen,LPCTSTR pszData,UINT_PTR nLength){
723 if(nLength >= buflen){
724 return NLIB_ERR_BUFFER_TOOLITTLE;
727 wcsncpy(buf,pszData,nLength);
728 buf[nLength] = L'\0';
741 void NPublishStatus_ElementStartHandler(void *userData,const XML_Char *pszName,const XML_Char *atts[]){
742 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
743 NicoLivePublishStatus_P ps = (NicoLivePublishStatus_P)userDataContainer->userData;
745 enum NicoLivePublishStatus_NORD element = NicoLivePublish_ROOT;
747 switch (userDataContainer->nord){
750 case (MAKENORD(NicoLivePublish_ROOT)):
753 if(_tcscmp(pszName,TEXT("getpublishstatus")) == 0){
759 for(index = 0;atts[index] != NULL;index += 2){
761 if(_tcscmp(atts[index],TEXT("status")) == 0 && _tcscmp(atts[index + 1],TEXT("ok")) == 0){
764 userDataContainer->errcode = NLIB_ERR_OK;
767 }else if(_tcscmp(atts[index],TEXT("status")) == 0 && _tcscmp(atts[index + 1],TEXT("ok")) != 0){
769 userDataContainer->errcode = NLIB_ERR_PUBLISHSTATUS_ERROR;
775 element = NicoLivePublish_PUBLISHSTATUS;
782 } else if(_tcscmp(pszName,TEXT("nicolive_api")) == 0){
784 element = NicoLivePublish_NICOLIVE_API;
790 case (MAKENORD(NicoLivePublish_PUBLISHSTATUS)):
791 case (MAKENORD(NicoLivePublish_NICOLIVE_API)):
793 if(_tcscmp(pszName,TEXT("stream"))== 0){
795 element = NicoLivePublish_STREAM;
799 }else if(_tcscmp(pszName,TEXT("error"))== 0){
801 element = NicoLivePublish_ERROR;
805 case (MAKENORD1(NicoLivePublish_PUBLISHSTATUS,NicoLivePublish_STREAM)):
807 if(_tcscmp(pszName,TEXT("token")) == 0){
809 element = NicoLivePublish_TOKEN;
815 case (MAKENORD1(NicoLivePublish_PUBLISHSTATUS,NicoLivePublish_ERROR)):
816 case (MAKENORD1(NicoLivePublish_NICOLIVE_API,NicoLivePublish_ERROR)):
818 if(_tcscmp(pszName,TEXT("code"))==0){
820 element = NicoLivePublish_CODE;
834 userDataContainer->nord = MAKENORD1(userDataContainer->nord,element);
839 void NPublishStatus_CharacterDataHandler(void *userData,const XML_Char *pszData,int nLength){
840 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
841 NicoLivePublishStatus_P ps = (NicoLivePublishStatus_P)userDataContainer->userData;
844 switch(userDataContainer->nord){
846 case (MAKENORD2(NicoLivePublish_PUBLISHSTATUS,NicoLivePublish_STREAM,NicoLivePublish_TOKEN)):
848 if(nLength < ARRAY_LENGTH(ps->token)){
849 _tcsncpy(ps->token,pszData,nLength);
852 userDataContainer->errcode = NLIB_ERR_BUFFER_TOOLITTLE;
858 case MAKENORD2(NicoLivePublish_PUBLISHSTATUS,NicoLivePublish_ERROR,NicoLivePublish_CODE):
859 case MAKENORD2(NicoLivePublish_NICOLIVE_API,NicoLivePublish_ERROR,NicoLivePublish_CODE):
861 userDataContainer->errcode = convToResultCode(pszData,nLength);
873 void NPublishStatus_ElementEndHandler(void *userData,const XML_Char *pszName){
874 UserDataContainer_P userDataContainer = (UserDataContainer_P)userData;
875 NicoLivePublishStatus_P ps = (NicoLivePublishStatus_P)userDataContainer->userData;
878 userDataContainer->nord = UPNORD(userDataContainer->nord);