84 lines
2.8 KiB
Java
84 lines
2.8 KiB
Java
/* Copyright (c) 2007 Google Inc.
|
|
*
|
|
* 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 sample.gbase.cmdline;
|
|
|
|
import com.google.gdata.client.Service;
|
|
import com.google.gdata.client.Service.GDataRequest;
|
|
import com.google.gdata.data.media.MediaFileSource;
|
|
import com.google.gdata.data.media.MediaSource;
|
|
import com.google.gdata.util.ContentType;
|
|
|
|
import java.io.File;
|
|
import java.net.URL;
|
|
|
|
/**
|
|
* Inserts a new media attachment to a Google Base item, by using
|
|
* a media binary POST. See
|
|
* {@link com.google.api.gbase.client.GoogleBaseService#insert(URL, Class, MediaSource)}
|
|
* for an easier way to do a media binary POST, or look at
|
|
* {@link com.google.api.gbase.client.GoogleBaseService#insert(URL, com.google.gdata.data.BaseEntry)}
|
|
* for an easier way to insert an attachment together with the media entry (meta-data) describing it.
|
|
* This command is called from {@link CustomerTool}.
|
|
*/
|
|
class InsertMediaCommand extends Command {
|
|
|
|
private String itemMediaUrl;
|
|
private String attachmentFile;
|
|
private String attachmentMimeType;
|
|
private String caption;
|
|
|
|
@Override
|
|
public void execute() throws Exception {
|
|
MediaFileSource media = new MediaFileSource(new File(attachmentFile), attachmentMimeType);
|
|
|
|
Service service = createService();
|
|
Service.GDataRequest request = service.createRequest(GDataRequest.RequestType.INSERT,
|
|
new URL(itemMediaUrl), new ContentType(attachmentMimeType));
|
|
|
|
if (caption != null) {
|
|
request.setHeader("Slug", caption);
|
|
}
|
|
|
|
MediaSource.Output.writeTo(media, request.getRequestStream());
|
|
|
|
// Send the request (HTTP POST)
|
|
request.execute();
|
|
|
|
// Save the response
|
|
outputRawResponse(request);
|
|
}
|
|
|
|
/** Set the url of the media feed for the item to insert the attachment into. */
|
|
public void setItemMediaUrl(String itemMediaUrl) {
|
|
this.itemMediaUrl = itemMediaUrl;
|
|
}
|
|
|
|
/** Sets the path to the file on the disk containing the attachment to upload. */
|
|
public void setAttachmentFile(String attachmentFile) {
|
|
this.attachmentFile = attachmentFile;
|
|
}
|
|
|
|
/** Sets the mime-type of the attachment. */
|
|
public void setAttachmentMimeType(String attachmentMimeType) {
|
|
this.attachmentMimeType = attachmentMimeType;
|
|
}
|
|
|
|
/** Sets the caption (title) of the attachment. */
|
|
public void setCaption(String caption) {
|
|
this.caption = caption;
|
|
}
|
|
}
|