Last week I blogged my first set of examples from RIAUnleashed. Today I thought I'd share a few more. Specifically - these examples are both HTML/jQuery based and do not make use of Flex at all.
The first thing I thought I'd point out is that you don't need to use the CFaaS CFCs as webservices. The documentation seems to imply this. However, when I tested CFaaS with simple HTTP requests, everything worked fine. I guess I shouldn't be surprised but again, the docs had led me to believe otherwise. I worked up a few simple demos, but here is one that demonstrates one way you could use CFaaS in a non-Flex context.
<cfset u = "cfremoteuser1">
<cfset p = "password">
<cfhttp method="post" url="http://127.0.0.1/CFIDE/services/upload.cfc?returnformat=json" result="result">
<cfhttpparam type="file" name="upload" file="/Users/ray/Documents/ColdFusion/ColdSpring_Reference.pdf">
<cfhttpparam type="formField" name="serviceusername" value="#u#">
<cfhttpparam type="formField" name="servicepassword" value="#p#">
<cfhttpparam type="formField" name="method" value="uploadForm">
</cfhttp>
<cfset res = deserializeJSON(result.filecontent)>
<cfdump var="#res#">
<cfhttp method="post" url="http://127.0.0.1/CFIDE/services/pdf.cfc?returnformat=json" result="result">
<cfhttpparam type="formField" name="serviceusername" value="#u#">
<cfhttpparam type="formField" name="servicepassword" value="#p#">
<cfhttpparam type="formField" name="method" value="extractImage">
<cfhttpparam type="formField" name="source" value="#res[1].value#">
</cfhttp>
<cfdump var="#deserializeJSON(result.filecontent)#">
This example begins by first uploading a PDF to the Upload CFC. This CFC provides support for uploading files to the CFaaS system. It stores it and returns a URL containing a dynamic link to your file. Here is the output of the first dump:
Now that we have a pointer to the file we can use it with the PDF service. In this case I run the extractImage method. The result is a list of image URLs for each and every image from the PDF:
Pretty simple, right? While I can't imagine why you would use ColdFusion to post to another ColdFusion server to use CFaaS, you could if you wanted to. Mainly I imagine this example being useful if translated to another language, like PHP. (Just take the number of lines of code above and multiple by 4.)
For my second example, I did something a bit fancier. I used Aptana Studio to create a new HTML-based AIR application. This example makes use of the Image service and converts an image (specified by a URL) to grayscale:
Ok, not exactly rocket science, but not something you can easily do in HTML (as far as I know - I do know that CSS does some cool filtering so it may actually support this!). The code behind this is relatively simple:
<html>
<head>
<script src="lib/jquery/jquery-1.3.2.js"></script>
<script>
$(document).ready(function() {
$("#doit").click(function() {
$("#result").html("Working...")
var source = $("#imageurl").val()
source = $.trim(source)
$.getJSON("http://127.0.0.1/CFIDE/services/image.cfc?returnformat=json",
{method:"grayscale",serviceusername:"cfremoteuser1",
servicepassword:"password", source:source},function(data,status) {
$("#result").html("<img src='"+data+"'>")
})
})
})
</script>
<style>
body {
padding: 5px;
background-color: #33ff33;
font-family:"MS Sans Serif", Geneva, sans-serif;
}
</style>
</head>
<body>
<h1>jQuery CFaaS Demo</h1>
<p>
Enter an Image URL: <input type="text" id="imageurl"> <input type="button" id="doit" value="Make It Gray" >
</p>
<div id="result"></div>
</body>
</html>
As you can see, I simply bind to the doit button. When run, I execute a getJSON against a ColdFusion server, passing in all the information the method needs to work.
All in all - pretty fun to write. I'm still not sure where I'd use CFaaS yet in production, but the more I dig into it, the more impressed I get.