All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dounine.clouddisk360.parser.deserializer.authtoken.AuthTokenResponseHandle Maven / Gradle / Ivy

package com.dounine.clouddisk360.parser.deserializer.authtoken;

import com.dounine.clouddisk360.parser.AuthTokenParser;
import com.dounine.clouddisk360.parser.UserInfoParser;
import com.dounine.clouddisk360.parser.deserializer.BaseResponseHandle;
import com.dounine.clouddisk360.parser.deserializer.login.Login;
import com.dounine.clouddisk360.parser.deserializer.user.info.UserInfo;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.cookie.Cookie;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.List;
import java.util.Optional;

public class AuthTokenResponseHandle extends BaseResponseHandle
		implements ResponseHandler {
	
	private static final Logger LOGGER = LoggerFactory.getLogger(AuthTokenResponseHandle.class);

	public AuthTokenResponseHandle(AuthTokenParser parse) {
		super(parse);
	}

	@Override
	public AuthToken handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
		List cookies = parse.getHttpClientContext().getCookieStore().getCookies();
		cookies.stream().filter(c -> c.getName().equals(AuthTokenConst.COOKIE_NAME));
		Optional authCookieOptionsal = cookies.stream().filter(c -> c.getName().equals(AuthTokenConst.COOKIE_NAME)).findFirst();
		AuthToken authToken = null;
		if(authCookieOptionsal.isPresent()){
			authToken = this.desializer(authCookieOptionsal.get().getValue());
			saveCookie();
		}
		if(null==parse.getHttpClientContext().getAttribute(AuthTokenConst.LOGIN_USER_INFO)){
			parse.setBianaryFilename("user/userInfo.txt");
			Login loginUser = parse.readObjForDisk(Login.class);
			if(null==loginUser||(null!=loginUser&& StringUtils.isBlank(loginUser.getQid()))){
				UserInfoParser userInfoParser = new UserInfoParser(parse.getLoginUserToken());//用户信息解析器
				UserInfo userInfo = userInfoParser.parse();
				if(0==userInfo.getErrno()){
					loginUser = new Login();
					loginUser.setQid(userInfo.getQid());
					loginUser.setErrno(userInfo.getErrno());
					loginUser.setCddmsg(userInfo.getCddmsg());
					loginUser.setErrmsg(userInfo.getErrmsg());
					loginUser.setLoginEmail(userInfo.getLogin_email());
					loginUser.setUserName(userInfo.getUserName());
					loginUser.setImageUrl(userInfo.getImg_url());
					loginUser.setCrumb(userInfo.getCrumb());
					loginUser.setNickName(userInfo.getNickname());
					loginUser.setType(userInfo.getType());
					parse.writeObjToDisk(loginUser);
				}else{
					LOGGER.error("在authToken中初始化云盘信息失败");
				}
			}
			parse.getHttpClientContext().setAttribute(AuthTokenConst.LOGIN_USER_INFO, loginUser);
		}
		return authToken;
	}

	public String disassemblyResult(String result) {
		return String.format("{\"token\":\"%s\"}", result);
	}

	@Override
	public void saveCookie() {
		parse.getCookieStoreUT().writeCookieStoreToDisk(parse.getHttpClientContext().getCookieStore(),
				AuthTokenConst.TOKEN_NAME, true);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy