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("&lt;img src='"+data+"'&gt;")
		})	
	
})

}) </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.