Created
February 12, 2010 15:58
-
-
Save efleming969/302681 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package sudo.samples.resources | |
import org.restlet.resource.{Get, Post} | |
import com.mongodb.gridfs.GridFS | |
import sudo.restly.core.{GridFSRepresentation, RestlyResource} | |
import org.restlet.ext.fileupload.RestletFileUpload | |
import org.apache.commons.fileupload.disk.DiskFileItemFactory | |
import scala.collection.JavaConversions._ | |
import com.mongodb.{BasicDBObject, BasicDBObjectBuilder} | |
import org.restlet.representation.{Variant, Representation} | |
import org.restlet.data.MediaType | |
class FilesResource extends RestlyResource { | |
override def doInit() { | |
super.doInit | |
getVariants.add(new Variant(MediaType.TEXT_PLAIN)) | |
getVariants.add(new Variant(MediaType.MULTIPART_FORM_DATA)) | |
} | |
override def get(variant:Variant) = { | |
getLogger.info("get a list of files") | |
val gfs = new GridFS(mongo) | |
getJsonRepresentation(gfs.getFileList) | |
} | |
override def post(entity:Representation, variant:Variant) = { | |
getLogger.info("create a new file") | |
getLogger.info(variant.getMediaType.toString) | |
val basicDBObject = new BasicDBObject | |
variant.getMediaType match { | |
case MediaType.TEXT_PLAIN => | |
val factory = new DiskFileItemFactory() | |
val fileUpload = new RestletFileUpload(factory) | |
val items = fileUpload.parseRequest(getRequest) | |
for(fi <- items) { | |
if(!fi.isFormField) { | |
val gfs = new GridFS(mongo) | |
val gfsFile = gfs.createFile(fi.getInputStream, fi.getName) | |
gfsFile.save | |
getLogger.info("file created: "+fi.getName) | |
basicDBObject.put("file", fi.getName) | |
basicDBObject.put("name", fi.getName) | |
basicDBObject.put("width", "0") | |
basicDBObject.put("height", "0") | |
basicDBObject.put("type", fi.getContentType) | |
basicDBObject.put("size", fi.getSize) | |
} | |
} | |
case _ => | |
basicDBObject.put("message", "no file added") | |
} | |
getHtmlRepresentation(<textarea>{ basicDBObject.toString }</textarea>) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment