/*
* Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences.
*
* This file is part of Duckling project.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package cn.vlabs.umt.oauth.client.response;
import org.codehaus.jettison.json.JSONException;
import cn.vlabs.umt.oauth.common.OAuth;
import cn.vlabs.umt.oauth.common.error.OAuthError;
import cn.vlabs.umt.oauth.common.exception.OAuthProblemException;
import cn.vlabs.umt.oauth.common.token.BasicOAuthToken;
import cn.vlabs.umt.oauth.common.token.OAuthToken;
import cn.vlabs.umt.oauth.common.utils.JSONUtils;
/**
*
*
*
*/
public class OAuthJSONAccessTokenResponse extends OAuthAccessTokenResponse {
public OAuthJSONAccessTokenResponse() {
}
@Override
public String getAccessToken() {
return getParam(OAuth.OAUTH_ACCESS_TOKEN);
}
@Override
public Long getExpiresIn() {
String value = getParam(OAuth.OAUTH_EXPIRES_IN);
return value == null? null: Long.valueOf(value);
}
public String getScope() {
return getParam(OAuth.OAUTH_SCOPE);
}
public OAuthToken getOAuthToken() {
return new BasicOAuthToken(getAccessToken(), getExpiresIn(), getRefreshToken(), getScope());
}
public String getRefreshToken() {
return getParam(OAuth.OAUTH_REFRESH_TOKEN);
}
protected void setBody(String body) throws OAuthProblemException {
try {
this.body = body;
parameters = JSONUtils.parseJSON(body);
} catch (JSONException e) {
throw OAuthProblemException.error(OAuthError.CodeResponse.UNSUPPORTED_RESPONSE_TYPE,
"Invalid response! Response body is not " + OAuth.ContentType.JSON + " encoded;body="+body);
}
}
protected void setContentType(String contentType) {
this.contentType = contentType;
}
protected void setResponseCode(int code) {
this.responseCode = code;
}
}