<cfinclude template="config.cfm">

<cfset flickr = createobject("component", "CFlickr.Flickr")>
<cfset flickr.init(apikey, secret)>

<cfinclude template="header.cfm">
<h1>Example 7 - Flickr API Explorer</h1>

<cfparam name="url.method" default="">
<cfset ri = flickr.getReflectionInterface()>

<cfif len(url.method)>

	<cfset method = ri.getMethodInfo(url.method)>

	<cfoutput>
	<h3>Method - #method.getName()#</h3>
	
	<p>
	<strong>Description</strong>: #method.getDescription()#<br />
	<strong>Needs Signing</strong>: #yesnoformat(method.getNeedsSigning())#<br />
	<strong>Needs Login</strong>: #yesnoformat(method.getNeedsLogin())#<br />
	</p>
	
	
	<p>
	<cfset args = method.getArguments()>
	<strong>Arguments</strong><br />
	<cfloop from="1" to="#arraylen(args)#" index="i">
	<div>
		<strong>#args[i].name#</strong> (<cfif args[i].optional>Optional<cfelse>Required</cfif>) <br />
		<div style="margin-left:25px;">#args[i].description#</div>
	</div>
	</cfloop>
	</p>

	<p>
	<strong>Example Response</strong><br />
	<cfif len(method.getResponse())>
		<pre>#htmleditformat(method.getResponse())#</pre>
	<cfelse>
		This method has no specific response - It returns an empty sucess response if it completes without error. 
	</cfif>
	</p>
	
	<p>
	<cfset err = method.getErrors()>
	<strong>Errors</strong><br />
	<cfloop from="1" to="#arraylen(err)#" index="i">
	<div>
		<strong>#err[i].code#:</strong> #err[i].message# <br />
		<div style="margin-left:25px;">#err[i].description#</div>
	</div>
	</cfloop>
	</p>

	</cfoutput>

<cfelse>

	<cfset methods = ri.getMethods()>
	<cfoutput>
		<cfset title = "">
		<cfloop from="1" to="#arraylen(methods)#" index="i">
			<cfset method = listlast(methods[i], ".")>
			<cfset group = replace(listrest(methods[i], "."), "." & method, "")>
			<cfif title NEQ group>
				<h3>#group#</h3>
				<cfset title = group>
			</cfif>
			<li><a href="?method=#methods[i]#">#methods[i]#</a></li>
		</cfloop>
	</cfoutput>

</cfif>