package com.hupu.games.data;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import com.hupu.games.HuPuApp;
import com.hupu.games.common.HuPuRes;
import com.hupu.games.common.HupuLog;
import com.hupu.games.data.account.BindInfoReq;
import com.hupu.games.data.account.PhoneBindReq;
import com.hupu.games.data.account.PhoneVerfyCodeReq;
import com.hupu.games.data.account.UserBetInfoReq;
import com.hupu.games.data.account.UserWalletResp;
import com.hupu.games.data.game.base.SimpleLiveResp;
import com.hupu.games.data.game.basketball.BasketballGameEntity;
import com.hupu.games.data.game.basketball.BasketballGamesResp;
import com.hupu.games.data.game.basketball.CBABoxScoreResp;
import com.hupu.games.data.game.basketball.NBALiveResp;
import com.hupu.games.data.game.basketball.NbaPlayerInfoReq;
import com.hupu.games.data.game.basketball.NbaPlayersDataReq;
import com.hupu.games.data.game.basketball.NbaTeamPlayerReq;
import com.hupu.games.data.game.basketball.NbaTeamReq;
import com.hupu.games.data.game.basketball.NbaTeamScheduleReq;
import com.hupu.games.data.game.football.FootballCoachInfoReq;
import com.hupu.games.data.game.football.FootballLeagueResp;
import com.hupu.games.data.game.football.FootballPlayerInfoReq;
import com.hupu.games.data.game.football.FootballStatisticResp;
import com.hupu.games.data.game.football.ScoreboardEntity;
import com.hupu.games.data.game.football.SoccerEventsResp;
import com.hupu.games.data.game.football.SoccerOutsReq;
import com.hupu.games.data.game.football.SoccerPlayerReq;
import com.hupu.games.data.game.football.SoccerTeamReq;
import com.hupu.games.data.game.football.SoccerTeamScheduleReq;
import com.hupu.games.data.game.quiz.QuizCommitResp;
import com.hupu.games.data.game.quiz.QuizResp;
import com.hupu.games.data.goldbean.ExchangeGoldBeanEntity;
import com.hupu.games.data.goldbean.GoldDallorRechargeEntity;
import com.hupu.games.data.goldbean.GoldEntity;
import com.hupu.games.data.news.NewsDetailEntity;
import com.hupu.games.data.news.NewsResp;
import com.hupu.games.data.personal.box.BoxBalanceEntity;
import com.hupu.games.data.personal.box.BoxInfoEntity;
import com.hupu.games.data.personal.box.BoxOpenEntity;
import com.hupu.games.data.personal.box.BoxScoreResp;
import com.hupu.games.data.room.GiftRespResultEntity;
import com.hupu.games.data.room.RoomListEntity;
import com.hupu.games.data.task.TaskRewardEntity;
import com.hupu.games.hupudollor.data.HupuDollorBalanceReq;
import com.hupu.games.hupudollor.data.HupuDollorRechargeReq;
import com.hupu.games.hupudollor.data.OrderHupuDollorPacEntity;
public class JsonPaserFactory {
public synchronized static BaseEntity paserObj(String s, int type) {
HupuLog.e("HUPUAPP", "return=="+s);
BaseEntity entity = null;
switch (type) {
//虎扑币相关start
case HuPuRes.REQ_METHOD_GET_HUPUDOLLOR_PACKAGES:
entity =new OrderHupuDollorPacEntity();
break;
case HuPuRes.REQ_METHOD_GET_HUPUDOLLOR_BALANCE:
entity =new HupuDollorBalanceReq();
break;
case HuPuRes.REQ_METHOD_GET_HUPUDOLLOR_RECHARGE:
entity = new HupuDollorRechargeReq();
break;
case HuPuRes.REQ_METHOD_GET_HUPUDOLLOR_RECHARGEBEANS:
entity = new GoldDallorRechargeEntity();
break;
//虎扑币相关end
//礼物相关start
case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_SEND_GIFT:
entity =new GiftRespResultEntity();
break;
case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_ROOMLIST:
entity =new RoomListEntity();
break;
//礼物相关end
case HuPuRes.REQ_METHOD_NBA_GAMES_BY_GID:
entity =new BasketballGameEntity();
break;
case HuPuRes.REQ_METHOD_BASKETBALL_GAMES_BY_DEFAULT:
case HuPuRes.REQ_METHOD_BASKETBALL_GAMES_BY_PRE:
case HuPuRes.REQ_METHOD_BASKETBALL_GAMES_BY_NEXT:
case HuPuRes.REQ_METHOD_NBA_GAMES_BY_DATE:
entity = new BasketballGamesResp(type);
break;
case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_ASC:
case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_DESC:
entity = new NBALiveResp();
if(s.contains("gift_list")){
HupuLog.d("NBA 直播contains giftlist");
}
break;
case HuPuRes.REQ_METHOD_BOX_SCORE:
entity = new BoxScoreResp();
break;
case HuPuRes.REQ_METHOD_CBA_BOX_SCORE:
entity = new CBABoxScoreResp();
break;
case HuPuRes.REQ_METHOD_GET_RECAP:
case HuPuRes.REQ_METHOD_GET_GAME_REPORT:
entity = new Recap();
break;
case HuPuRes.REQ_METHOD_FOLLOW_NBA_GAME:
case HuPuRes.REQ_METHOD_FOLLOW_NBA_GAME_CANCEL:
case HuPuRes.REQ_METHOD_FOLLOW_GAME:
case HuPuRes.REQ_METHOD_FOLLOW_GAME_CANCEL:
entity = new FollowResp();
break;
case HuPuRes.REQ_METHOD_GET_FOLLOW_TEAMS:
entity = new GetFollowTeamsResp();
break;
// case HuPuRes.REQ_METHOD_FOLLOW_TEAM_CANCEL:
// case HuPuRes.REQ_METHOD_FOLLOW_TEAM:
case HuPuRes.REQ_METHOD_SET_FOLLOW_TEAMS:
case HuPuRes.REQ_METHOD_FOLLOW_ONE_TEAM :
case HuPuRes.REQ_METHOD_FOLLOW_ONE_TEAM_CANCEL :
entity = new FollowResp();
break;
case HuPuRes.REQ_METHOD_REDIRECTOR:
entity = new AdressEntity();
break;
case HuPuRes.REQ_METHOD_GET_STANDINGS:
entity = new StandingsResp();
break;
case HuPuRes.REQ_METHOD_GET_NBA_VIDEO:
case HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME:
case HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME_NEXT:
case HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT:
case HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT_NEXT:
case HuPuRes.REQ_METHOD_GET_CBA_VIDEO_GAME:
case HuPuRes.REQ_METHOD_GET_CBA_VIDEO_GAME_NEXT:
// case HuPuRes.REQ_METHOD_GET_CBA_VIDEO_HOT:
// case HuPuRes.REQ_METHOD_GET_CBA_VIDEO_HOT_NEXT:
case HuPuRes.REQ_METHOD_GET_FOOTBALL_VIDEO:
case HuPuRes.REQ_METHOD_GET_FOOTBALL_VIDEO_NEXT:
entity = new VideoResp();
break;
case HuPuRes.REQ_METHOD_GET_NBA_NEWS:
case HuPuRes.REQ_METHOD_GET_NBA_NEWS_NEXT:
case HuPuRes.REQ_METHOD_GET_NBA_NEWS_PRE:
case HuPuRes.REQ_METHOD_GET_CBA_NEWS:
case HuPuRes.REQ_METHOD_GET_CBA_NEWS_NEXT:
case HuPuRes.REQ_METHOD_GET_CBA_NEWS_PRE:
case HuPuRes.REQ_METHOD_GET_FOOTBALL_NEWS:
case HuPuRes.REQ_METHOD_GET_FOOTBALL_NEWS_NEXT:
entity = new NewsResp();
break;
case HuPuRes.REQ_METHOD_GET_NEWS_DETAIL:
entity = new NewsDetailEntity();
break;
case HuPuRes.REQ_METHOD_NBA_CHAT:
case HuPuRes.REQ_METHOD_NBA_CHAT_MORE:
case HuPuRes.REQ_METHOD_NBA_CHAT_NEW:
entity = new ChatResp();
break;
case HuPuRes.REQ_METHOD_SENT_CHAT:
case HuPuRes.REQ_METHOD_EN_SENT_CHAT:
entity = new SendMsgResp();
break;
case HuPuRes.REQ_METHOD_SET_NICK_NAME:
case HuPuRes.REQ_METHOD_GET_NICK_NAME:
entity = new NickNameEntity();
break;
case HuPuRes.REQ_METHOD_RATING_LIST :
entity = new PlayersRatingListResp();
break;
case HuPuRes.REQ_METHOD_RATING_DETAIL :
case HuPuRes.REQ_METHOD_RATING_DETAIL_MORE:
entity =new PlayersRatingByUserListResp ();
break;
case HuPuRes.REQ_METHOD_RATING_LIKE :
entity =new UserLikeEntity ();
break;
case HuPuRes.REQ_METHOD_RATING_RATE :
entity =new UserRatingEntity();
break;
case HuPuRes.REQ_METHOD_FOOTBALL_LEAGUE:
case HuPuRes.REQ_METHOD_FOOTBALL_LEAGUE_NEXT:
case HuPuRes.REQ_METHOD_FOOTBALL_LEAGUE_PREV:
case HuPuRes.REQ_METHOD_FOOTBALL_LEAGUE_REFRESH:
entity =new FootballLeagueResp();
break;
case HuPuRes.REQ_METHOD_USER_INIT:
entity = new InitResp();
break;
case HuPuRes.REQ_METHOD_FOLLOW_LEAGUE:
case HuPuRes.REQ_METHOD_FOLLOW_ALL_TEAM:
entity = new FollowResultEntity();
break;
case HuPuRes.REQ_METHOD_GET_FOOTBALL_STATISTIC:
entity =new FootballStatisticResp();
break;
case HuPuRes.REQ_METHOD_GET_FOOTBALL_EVENTS:
entity =new SoccerEventsResp();
break;
case HuPuRes.REQ_METHOD_GET_FOOTBALL_RANK:
entity = new RanksResp();
break;
case HuPuRes.REQ_METHOD_GET_VERIFY_CODE :
entity =new PhoneVerfyCodeReq();
break;
case HuPuRes.REQ_METHOD_POST_PHONE_BIND:
case HuPuRes.REQ_METHOD_USER_BIND:
case HuPuRes.REQ_METHOD_POST_LOGIN_EMAIL:
entity =new PhoneBindReq();
break;
case HuPuRes.REQ_METHOD_GET_BALANCE:
entity =new BalanceReq();
break;
case HuPuRes.REQ_METHOD_POST_BUY_ITEM:
case HuPuRes.REQ_METHOD_BUY_EMOJI:
entity =new BuyItemEntity();
break;
case HuPuRes.REQ_METHOD_GET_PACKAGES:
entity =new OrderPacEntity();
break;
case HuPuRes.REQ_METHOD_GET_GOLD:
entity =new GoldEntity();
break;
case HuPuRes.REQ_METHOD_GET_EXCHANGEBEANS:
entity =new ExchangeGoldBeanEntity();
break;
case HuPuRes.REQ_METHOD_GET_TOTAL_HONOUR:
entity =new HonourEntity();
break;
case HuPuRes.REQ_METHOD_CHECK_BAG:
entity =new CheckBag();
break;
case HuPuRes.REQ_METHOD_GET_TOTAL_HONOUR_HISTORY:
entity =new MyHonourEntity();
break;
case HuPuRes.REQ_METHOD_GET_TOTAL_MATCH_RANKING:
entity =new SingleHonourEntity();
break;
case HuPuRes.REQ_METHOD_GET_TOTAL_MAY_BUY:
entity =new MayBuyEntity();
break;
case HuPuRes.REQ_METHOD_GET_CONTACTS:
entity=new ContactsEntity();
break;
case HuPuRes.REQ_METHOD_GET_OBTAINSTUFF:
entity=new ObtainEntity();
break;
case HuPuRes.REQ_METHOD_GET_BULLETIN_RANK :
entity =new BulletinRankReq();
break;
case HuPuRes.REQ_METHOD_POST_ORDER :
entity =new ReqSmsEntity();
break;
case HuPuRes.REQ_METHOD_GET_LIVE_ASC:
case HuPuRes.REQ_METHOD_GET_LIVE_DESC:
entity =new SimpleLiveResp();
break;
case HuPuRes.REQ_METHOD_POST_INCREASE:
case HuPuRes.REQ_METHOD_POST_LIGHT:
case HuPuRes.REQ_METHOD_POST_LINK_LIGHT:
case HuPuRes.REQ_METHOD_QUIZ_COMMIT:
case HuPuRes.REQ_METHOD_QUIZ_LIST_COMMIT:
case HuPuRes.REQ_METHOD_QUIZ_COMMIT_INCREASE:
case HuPuRes.REQ_METHOD_POST_REPLY:
case HuPuRes.REQ_METHOD_USER_LOGOUT:
case HuPuRes.REQ_METHOD_USER_UNBIND:
case HuPuRes.REQ_METHOD_POST_EXCHANGE:
case HuPuRes.REQ_METHOD_CAIPIAO_COMMIT:
case HuPuRes.REQ_METHOD_POST_LINK_REPLY:
case HuPuRes.REQ_METHOD_POST_REGISTER_PASSPORT:
entity =new QuizCommitResp();
break;
case HuPuRes.REQ_METHOD_GET_WALLET_BALANCE:
entity = new UserWalletResp();
break;
case HuPuRes.REQ_METHOD_GET_RECHARGEMETHOD:
entity = new RechargeMethodReq();
break;
case HuPuRes.REQ_METHOD_QUIZ_LIST:
entity =new QuizResp();
break;
case HuPuRes.REQ_METHOD_MY_QUIZ_MORE_LIST:
case HuPuRes.REQ_METHOD_MY_QUIZ_LIST:
entity = new MyQuizResp();
break;
case HuPuRes.REQ_METHOD_GET_GUESS_RANK:
entity =new GuessTopResp();
break;
case HuPuRes.REQ_METHOD_TAKE_PRIZE:
entity =new CommitExchangeReq();
break;
case HuPuRes.REQ_METHOD_GET_BETINFO:
entity =new UserBetInfoReq();
break;
case HuPuRes.REQ_METHOD_GET_TASKREWARD:
entity =new TaskRewardEntity();
break;
case HuPuRes.REQ_METHOD_GET_MY_PRIZE:
entity =new MyPrizeResp();
break;
case HuPuRes.REQ_METHOD_GET_EXCHANGE_LIST:
entity =new ExchangeResp();
break;
case HuPuRes.REQ_METHOD_GET_DOLE:
entity =new QuizCommitResp();
break;
case HuPuRes.REQ_METHOD_GET_BOX_COUNT:
entity =new BoxInfoEntity();
break;
case HuPuRes.REQ_METHOD_GET_BOX_OPEN:
entity =new BoxOpenEntity();
break;
case HuPuRes.REQ_METHOD_GET_RECHARGE:
case HuPuRes.REQ_METHOD_GET_CAIPIAO_RECHARGE:
entity =new RechargeReq();
break;
case HuPuRes.REQ_METHOD_GET_REPLY:
case HuPuRes.REQ_METHOD_GET_MORE_REPLY:
case HuPuRes.REQ_METHOD_GET_LINK_REPLY:
case HuPuRes.REQ_METHOD_GET_MORE_LINK_REPLY:
entity = new ReplyRespEntity();
break;
case HuPuRes.REQ_METHOD_BET_COINS:
entity = new BitCoinReq();
break;
case HuPuRes.REQ_METHOD_GET_SIDEBAR:
entity = new SidebarEntity();
break;
case HuPuRes.REQ_METHOD_GET_USERBOX:
entity = new UserBoxEntity();
break;
case HuPuRes.REQ_METHOD_SET_NOTIFY:
entity =new SendMsgResp();
break;
case HuPuRes.REQ_METHOD_GET_BOX_BALANCE:
entity =new BoxBalanceEntity();
break;
case HuPuRes.REQ_METHOD_GET_NBA_TEAM_PROGRAM:
entity =new NbaTeamReq();
break;
case HuPuRes.REQ_METHOD_GET_NBA_TEAM_FULL_PROGRAM:
entity =new NbaTeamScheduleReq();
break;
case HuPuRes.REQ_METHOD_GET_NBA_TEAM_ROSTER:
entity = new NbaTeamPlayerReq();
break;
case HuPuRes.REQ_METHOD_GET_NBA_PLAYER_DATA:
entity =new NbaPlayersDataReq();
break;
case HuPuRes.REQ_METHOD_GET_NBA_PLAYER_INFO:
entity =new NbaPlayerInfoReq();
break;
case HuPuRes.REQ_METHOD_CBA_GAME_BY_GID:
entity =new BasketballGameEntity();
break;
case HuPuRes.REQ_METHOD_FOOTBALL_GAME_BY_GID:
entity =new ScoreboardEntity();
break;
case HuPuRes.REQ_METHOD_MY_CAIPIAO_LIST:
case HuPuRes.REQ_METHOD_MY_CAIPIAO_MORE_LIST:
entity = new MyCaipiaoResp();
break;
case HuPuRes.REQ_METHOD_GET_ROSTER:
entity = new TeamLineupResp();
break;
case HuPuRes.REQ_METHOD_GET_SOCCER_TEAM_PROGRAM:
entity=new SoccerTeamReq();
break;
case HuPuRes.REQ_METHOD_GET_SOCCER_TEAM_ROSTER:
entity =new SoccerPlayerReq();
break;
case HuPuRes.REQ_METHOD_GET_FOOTBALL_PLAYERINFO:
entity = new FootballPlayerInfoReq();
break;
case HuPuRes.REQ_METHOD_GET_FOOTBALL_COACHINFO:
entity = new FootballCoachInfoReq();
break;
case HuPuRes.REQ_METHOD_GET_GOMMENT_INFO:
entity = new CommentInfoEntity();
break;
case HuPuRes.REQ_METHOD_GET_FOOTBALL_OUTS:
entity =new SoccerOutsReq();
break;
case HuPuRes.REQ_METHOD_GET_SOCCER_TEAM_FULL_PROGRAM:
entity =new SoccerTeamScheduleReq();
break;
case HuPuRes.REQ_METHOD_GET_WEIXIN_RECHARGE:
entity = new WeixinPayReq();
break;
case HuPuRes.REQ_METHOD_USER_BIND_INFO:
entity = new BindInfoReq();
break;
case HuPuRes.REQ_METHOD_USER_REDDOT:
entity = new RedDotEntity();
break;
}
if (entity != null)
try {
if (type == HuPuRes.REQ_METHOD_REDIRECTOR) {
((AdressEntity) entity).paser(s);
} else {
JSONObject jsonObject = new JSONObject(s);
switch (type) {
case HuPuRes.REQ_METHOD_GET_FOLLOW_TEAMS:
entity.paser(jsonObject);
break;
case HuPuRes.REQ_METHOD_GET_WEIXIN_RECHARGE:
entity.paser(jsonObject);
break;
case HuPuRes.REQ_METHOD_GET_PLAY_LIVE_ROOMLIST:
entity.paser(jsonObject);
break;
default:
//错误信息
entity.err = isErr(jsonObject);
if (entity.err == null) {
if (!isNull(jsonObject))// 非空的数据解析
entity.paser(jsonObject);
}
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return entity;
}
private static String isErr(JSONObject jsonObject) {
// 错误ID及错误说明(当其存在,result值无效)
jsonObject = jsonObject.optJSONObject("error");
if(jsonObject!=null)
return jsonObject.optString("text", "");
return null;
}
private static boolean isNull(JSONObject jsonObject) {
String ss = jsonObject.optString(BaseEntity.KEY_RESULT, null);
if (ss == null)
return true;
if (ss.equals("{}") || ss.equals("[]"))
return true;
return false;
}
public static BaseEntity paserObj(HttpEntity en, int type) {
if (HuPuApp.isDebugMode&& en!= null)
HupuLog.e("papa", "return=="+en.toString());
BaseEntity entity = null;
if(en!=null)
{
try {
// Value dynamic = MessagePack.unpack(EntityUtils.toByteArray(en));
// entity= paserObj(dynamic.toString(), type);
entity= paserObj(EntityUtils.toString(en), type);
// Log.e("papa", "return=="+dynamic.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
return entity;
}
}