/**
* Copyright 2014 Daum Kakao Corp.
*
* Redistribution and modification in source or binary forms are not permitted without specific prior written permission.
*
* 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 com.kakao;
import android.os.Bundle;
import com.kakao.helper.ServerProtocol;
/*
* Param Name Param Type 필수 설명
* permission enum x A : 전체 공개 F : 친구 공개. default A.
* shareable Boolean x 친구 공개시 포스팅 공유 허용 여부 default false.
* android_exec_param String X 안드로이드 custom url에 붙일 파라미터. kakao[appkey]://kakaostory + "?" + ${android_exec_param}
* ios_exec_param String X 아이폰 custom url에 붙일 파라미터. kakao[appkey]://kakaostory + "?" + ${ios_exec_param}
* android_market_param String X 안드로이드 마켓 custom url에 붙일 파라미터. 개발자 싸이트에 등록한 안드로이드 마켓 url + "?" + ${android_market_param}
* ios_market_param String X 아이폰 마켓 custom url에 붙일 파라미터. 개발자 싸이트에 등록한 아이폰 마켓 url + "?" + ${ios_market_param}
*/
/**
* 스토리 포스트시 필요한 정보를 구성하는 기본 Builder이다.
* 공개범위, 공유여부, 앱연결시 추가 param. <br/>
* @author MJ
*/
public abstract class BasicKakaoStoryPostParamBuilder {
/**
* 스토리 포스트시 공개 범위
*/
public enum PERMISSION {
/**
* 전체 공개
*/
PUBLIC("A"),
/**
* 친구 공개
*/
FRIENDS("F"),
/**
* 나만 보기
*/
ONLY_ME("M");
private final String value;
PERMISSION(String value) {
this.value = value;
}
}
private PERMISSION permission;
private Boolean shareable;
private String androidExecuteParam;
private String iosExecuteParam;
private String androidMarketParam;
private String iosMarketParam;
/**
* 기본으로 전체공개로 파마미터 빌더를 생성한다.
*/
protected BasicKakaoStoryPostParamBuilder() {
}
/**
* 기본은 전체공개인데 포스팅할 스토리의 공개 여부를 변경하고 싶을 때 설정한다.
* @param permission 공개 종류. {@link com.kakao.BasicKakaoStoryPostParamBuilder.PERMISSION#PUBLIC}, {@link com.kakao.BasicKakaoStoryPostParamBuilder.PERMISSION#FRIENDS} 또는 {@link com.kakao.BasicKakaoStoryPostParamBuilder.PERMISSION#ONLY_ME}
* @return 계속해서 앱 연결 설정할 수 있는 빌더를 반환한다.
*/
public BasicKakaoStoryPostParamBuilder setPermission(final PERMISSION permission) {
this.permission = permission;
return this;
}
/**
* 친구 공개 포스팅에 대해 공유 여부를 설정한다.
* @param shareable 공유 가능하게 하려면 true, 공유 불가능하게 하려면 false
* @return 계속해서 앱 연결 설정할 수 있는 빌더를 반환한다.
*/
public BasicKakaoStoryPostParamBuilder setShareable(final boolean shareable) {
this.shareable = shareable;
return this;
}
/**
* Android 앱연결 링크에 추가할 파라미터 설정한다.
* 기본적으로는 kakao[appkey]://kakaostory로 연결되나 그 뒤에 파라미터를 붙이고 싶을 때 사용한다.
* @param androidExecuteParam 추가할 파라미터
* @return 계속해서 앱 연결 설정할 수 있는 빌더를 반환한다.
*/
public BasicKakaoStoryPostParamBuilder setAndroidExecuteParam(final String androidExecuteParam) {
this.androidExecuteParam = androidExecuteParam;
return this;
}
/**
* iOS 앱연결 링크에 추가할 파라미터 설정한다.
* 기본적으로는 kakao[appkey]://kakaostory로 연결되나 그 뒤에 파라미터를 붙이고 싶을 때 사용한다.
* @param iosExecuteParam 추가할 파라미터
* @return 계속해서 앱 연결 설정할 수 있는 빌더를 반환한다.
*/
public BasicKakaoStoryPostParamBuilder setIOSExecuteParam(final String iosExecuteParam) {
this.iosExecuteParam = iosExecuteParam;
return this;
}
/**
* Android 앱연결 링크 클릭시 해당앱이 설치되지 않았을 때 호출되는 마켓 url에 추가할 파라미터 설정한다.
* 기본적으로는 개발자 싸이트에 등록한 안드로이드 마켓 url로 연결되나 그 뒤에 파라미터를 붙이고 싶을 때 사용한다.
* 개발자 싸이트에 등록한 안드로이드 마켓 url + "?" + ${android_market_param}
* @param androidMarketParam 추가할 파라미터
* @return 계속해서 앱 연결 설정할 수 있는 빌더를 반환한다.
*/
public BasicKakaoStoryPostParamBuilder setAndroidMarketParam(final String androidMarketParam) {
this.androidMarketParam = androidMarketParam;
return this;
}
/**
* iOS 앱연결 링크 클릭시 해당앱이 설치되지 않았을 때 호출되는 마켓 url에 추가할 파라미터 설정한다.
* 기본적으로는 개발자 싸이트에 등록한 iPhone 마켓 url로 연결되나 그 뒤에 파라미터를 붙이고 싶을 때 사용한다.
* 개발자 싸이트에 등록한 iPhone 마켓 url + "?" + ${ios_market_param}
* @param iosMarketParam 추가할 파라미터
* @return 계속해서 앱 연결 설정할 수 있는 빌더를 반환한다.
*/
public BasicKakaoStoryPostParamBuilder setIOSMarketParam(final String iosMarketParam) {
this.iosMarketParam = iosMarketParam;
return this;
}
/**
* 지금까지 추가된 설정을 Bundle로 만들어준다.
* @return 스토리 포스트 설정을 Bundle로 반환
*/
public Bundle build() throws KakaoParameterException {
final Bundle parameters = new Bundle();
if(permission != null)
parameters.putString(ServerProtocol.PERMISSION_KEY, permission.value);
if(shareable != null)
parameters.putBoolean(ServerProtocol.ENABLE_SHARE_KEY, shareable);
if(androidExecuteParam != null)
parameters.putString(ServerProtocol.ANDROID_EXEC_PARAM_KEY, androidExecuteParam);
if(iosExecuteParam != null)
parameters.putString(ServerProtocol.IOS_EXEC_PARAM_KEY, iosExecuteParam);
if(androidMarketParam != null)
parameters.putString(ServerProtocol.ANDROID_MARKET_PARAM_KEY, androidMarketParam);
if(iosMarketParam != null)
parameters.putString(ServerProtocol.IOS_MARKET_PARAM_KEY, iosMarketParam);
return parameters;
}
}