/*-----------------------------------------------------------------------------
* Copyright Kyte corporation 2008
*
* 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.kyte.api.service;
import com.kyte.api.model.Media;
import com.kyte.api.model.ModelFactory;
import com.kyte.api.rest.KyteSession;
import com.kyte.api.util.ApiUtil;
import com.kyte.api.util.StructHelper;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import static com.kyte.api.rest.KyteInvoker.*;
/*--- BEGIN CUSTOM IMPORTS ---*/
import com.kyte.api.model.Media;
import com.kyte.api.util.InputStreamPartSource;
import java.io.InputStream;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
/*--- END CUSTOM IMPORTS ---*/
/**
* MediaService resource
*
*/
public class MediaService
{
public static final String PARAM_AUX_PARAMS = "auxParams";
public static final String PARAM_HEIGHT = "height";
public static final String PARAM_MEDIA = "media";
public static final String PARAM_MEDIA_ID = "mediaId";
public static final String PARAM_MEDIA_TYPE = "mediaType";
public static final String PARAM_WIDTH = "width";
/**
* Default constructor
*/
public MediaService()
{
}
/**
* @return URI string that locates this service on server
*/
public String getUri()
{
return "mediaService";
}
public String createMedia(KyteSession session, Object media, Object mediaType, Map auxParams)
{
Map<String, Object> _params = new HashMap<String, Object>();
_params.put(PARAM_MEDIA, media);
_params.put(PARAM_MEDIA_TYPE, mediaType);
_params.put(PARAM_AUX_PARAMS, auxParams);
Object _obj = session.invoke(getUri(), "createMedia", _params);
return (String) _obj;
}
public String getMediaThumbUrl(KyteSession session, int mediaId, int width, int height)
{
Map<String, Object> _params = new HashMap<String, Object>();
_params.put(PARAM_MEDIA_ID, mediaId);
_params.put(PARAM_WIDTH, width);
_params.put(PARAM_HEIGHT, height);
Object _obj = session.invoke(getUri(), "getMediaThumbUrl", _params);
return (String) _obj;
}
/*--- BEGIN CUSTOM CODE ---*/
public static final String FILE_PART_NAME = "media";
public String createMedia(KyteSession session, Object media, Object mediaType)
{
return createMedia(session, media, mediaType, null);
}
public Media createMedia(KyteSession session, InputStream inputStream, long dataSize, String mediaType)
{
String url = "/system/mediaService.createMedia";
PostMethod method = new PostMethod(url);
FilePart filePart = new FilePart(FILE_PART_NAME, new InputStreamPartSource(inputStream, dataSize, UUID.randomUUID().toString()));
Map<String, Object> params = new HashMap<String, Object>();
params.put(PARAM_MEDIA_TYPE, mediaType);
Object result=session.invoke(method, filePart, params);
Media media=null;
if (result instanceof Media){
media = (Media) result;
}else if (result instanceof String){
Map<String, Object> attrMap= new HashMap<String, Object>();
attrMap.put(Media.ATTRIBUTE_URI, (String)result);
media= new Media(attrMap);
}else{
throw new RuntimeException("Unexpected Result From Server: "+media);
}
return media.fetchMetaData(session);
}
/*--- END CUSTOM CODE ---*/
} // end MediaService.java
|