public boolean checkEntitlement(String manItemID, String userId) throws Exception { boolean hasEntitlement = false; String url = "/services/UserData?UserId=" + userId; ManResponseBean responseBean = handleGetRequest(url, null); // An XML is returned. To check entitlement you need to parse the XML. // A workaround instead to lower the server load is to search the string // and // see if there is a match with ItemId="manItemID" String result = responseBean.getBody(); if (manItemID != null && result != null && result.length() > 0) { result = result.toLowerCase(); manItemID = manItemID.toLowerCase(); if (result.indexOf("itemid=\"" + manItemID + "\"") > -1) { hasEntitlement = true; } } return hasEntitlement; }
/** * @param sessionID * @param accountID * @param channelID * @param manItemID - can be either a MAN_PACKAGE_ID or a MAN_ITEM_ID. If a MAN_PACKAGE_ID is * specified, a channelID is not required. * @return @throws Exception */ public AuthorizationInfoBean authorize( String sessionID, String accountID, String channelID, String manItemID) throws Exception { String url = "/services/QuerySessionAuthorization?SessionId=" + sessionID + "&ContentAccountId=" + accountID + "&ContentItemId=" + manItemID; if (channelID != null) { url += "&ContentChannelId=" + channelID; } if (DEBUG) System.out.println(url); ManResponseBean response = handleGetRequest(url, null); Document responseXML = parseXMLString(response.getBody()); // SessionId=1234&ContentAccountId=private&ContentChanneldId=sports&ContentItemId=movie300_scene003 if (DEBUG) printXML(responseXML); AuthorizationInfoBean infoBean = mapXMLToBean(responseXML); if (DEBUG) System.out.println(infoBean.getErrorCode()); SubPolicyBean subPolicyBean = infoBean.getSubpolicy(); if (subPolicyBean.getInternalPackage().equals("true")) { String packageID = subPolicyBean.getInternalPackageId(); infoBean = authorize(sessionID, accountID, null, packageID); // InternalPackage="true" InternalPackageId="sportsworx_01" } return infoBean; }
/** * @param crmId * @param userId * @param accountID * @param channelID * @param manItemID * @return @throws Exception */ public AuthorizationInfoBean authorizeByUserId( String userID, String accountID, String channelID, String manItemID) throws Exception { if (checkEntitlement(manItemID, userID)) { AuthorizationInfoBean ai = new AuthorizationInfoBean(); ai.setAuthorized("True"); ai.setErrorCode(ManResponseCodes.RC_ALREADY_AUTHORIZED); ai.setErrorMessage("has already purchased"); return ai; } String url = "/services/Authorize?UserId=" + userID + "&ContentAccountId=" + accountID + "&ContentItemId=" + manItemID; if (channelID != null) { url += "&ContentChannelId=" + channelID; } if (DEBUG) System.out.println(url); ManResponseBean response = handleGetRequest(url, null); AuthorizationInfoBean infoBean = null; if (response.getBody() != null && !response.getBody().equalsIgnoreCase("")) { Document responseXML = parseXMLString(response.getBody()); if (DEBUG) printXML(responseXML); infoBean = mapXMLToBean(responseXML); if (DEBUG) System.out.println(infoBean.getErrorCode()); SubPolicyBean subPolicyBean = infoBean.getSubpolicy(); if (subPolicyBean.getInternalPackage().equals("true")) { String packageID = subPolicyBean.getInternalPackageId(); infoBean = authorize(userID, accountID, null, packageID); } } else { if (response.getStatusCode() != null && (response.getStatusCode().equalsIgnoreCase(ManResponseCodes.RC_NO_ERROR_200) || response.getStatusCode().equalsIgnoreCase(ManResponseCodes.RC_NO_ERROR_0))) { infoBean = new AuthorizationInfoBean(); infoBean.setAuthorized("True"); infoBean.setErrorCode(response.getMAN_ERROR_CODE()); } } return infoBean; }