<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Adam.Kahtava.com / AdamDotCom &#187; Services</title>
	<atom:link href="http://adam.kahtava.com/journal/category/services/feed/" rel="self" type="application/rss+xml" />
	<link>http://adam.kahtava.com/journal</link>
	<description>A software development blog</description>
	<pubDate>Thu, 15 Jul 2010 17:00:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Same Origin Policy: JSONP vs The document.domain Property</title>
		<link>http://adam.kahtava.com/journal/2010/03/18/the-same-origin-policy-jsonp-vs-the-documentdomain-property/</link>
		<comments>http://adam.kahtava.com/journal/2010/03/18/the-same-origin-policy-jsonp-vs-the-documentdomain-property/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 17:00:26 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[ADC Services]]></category>

		<category><![CDATA[ADC Website]]></category>

		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Services]]></category>

		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=2441</guid>
		<description><![CDATA[The Same Origin Policy ensures that the client-side code (JavaScript) running on a website originated from that website. This prevents website http://kahtava.com from accessing resources (via client-side code) on website http://malicious-password-sniffers.com or website http://adam.kahtava.com from executing resources from http://kahtava.com - note that the sub-domains differ, one being kahtava.com, the other being adam.kahtava.com 
In most cases [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Same_origin_policy">The Same Origin Policy</a> ensures that the client-side code (JavaScript) running on a website originated from <em>that</em> website. This prevents website <em>http://kahtava.com</em> from accessing resources (via client-side code) on website <em>http://malicious-password-sniffers.com</em> or website <em>http://adam.kahtava.com</em> from executing resources from <em>http://kahtava.com</em> - note that the sub-domains differ, one being kahtava.com, the other being <em>adam</em>.kahtava.com </p>
<p>In most cases The Same Origin Policy is desirable. It helps to prevent malicious code that could potentially reveal sensitive information from being run on arbitrary website. However, the same origin policy also makes it difficult to share resources within a common root domain, or run external widgets on your site (like displaying <a href="http://adam.kahtava.com/journal/2010/02/24/the-project-badge-show-the-world-your-github-and-google-code-projects-on-your-blog/">The Project Badge</a> within your site). There are a couple ways to circumvent The Same Origin Policy, but I focus on JSONP and the <code>document.domain</code> property in this post.</p>
<h3>Ways to circumvent the Same Origin Policy</h3>
<ol>
<li><a href="http://en.wikipedia.org/wiki/JSON#JSONP">JSONP</a></li>
<li>Modifying the <code><a href="https://developer.mozilla.org/en/DOM/document.domain">document.domain</a></code> property</li>
<li>Creating a <a href="http://developer.yahoo.com/javascript/howto-proxy.html">server side web proxy</a></li>
</ol>
<h4>JSONP (JSON with padding)</h4>
<p><strong>How it works:</strong> JSONP dynamically creates a script element in the head of your HTML document which then requests data from outside your domain. <em>JSONP exploits a loophole in the Same Origin Policy that allows JavaScript from an external sites to be run within your site (much like how web analytic tracking works).</em> The JSON response, when returned, is executed within your browser at which time the JavaScript can manipulate your HTML page / DOM.</p>
<p><strong>An Example Using JSONP with jQuery:</strong></p>
<div class="syntax_hilite">
<div id="javascript-3">
<div class="javascript"><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; $.<span style="color: #006600;">getJSON</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'http://adam.kahtava.com/services/open-source/projects.json?project-host:username=github:adamdotcom&amp;callback=?'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>data<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>data<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p>
<em>Note the <code>callback=?</code> at the end of the URI, in jQuery this indicates a JSONP call.</em></p>
<p><strong>Pros</strong></p>
<ul>
<li>Lets us make external calls to any endpoint that supports JSONP</li>
<li>Lets us make external calls from HTTP to HTTPS</li>
<li>Supported by all major browsers</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>A bit more complex upfront, but most server side technologies support JSONP, browsers are natively supporting JSON, and JavaScript libraries like jQuery continue to abstract away most of the complexity.</li>
</ul>
<h4>The <code>document.domain</code> property</h4>
<p><strong>How it works:</strong> the <code>document.domain</code> property contains the domain of the server from which the page was loaded. For example, the domain for <em>http://adam.kahtava.com/</em> would be <em>adam.kahtava.com</em> whereas the domain for <em>http://kahtava.com</em> would be <em>kahtava.com</em>. The Same Origin Policy restricts resource access from <em>kahtava.com</em> to <em>adam.kahtava.com</em> unless we set the <code>document.domain</code> property to the root domain (in this case I'd want it set to <em>kahtava.com</em> to share resources with <em>http://adam.kahtava.com</em>).</p>
<p><strong>An Example using the <code>document.domain</code> property:</strong></p>
<div class="syntax_hilite">
<div id="javascript-4">
<div class="javascript"><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; document.<span style="color: #006600;">domain</span> = <span style="color: #3366CC;">'kahtava.com'</span>;<br />
&nbsp; $.<span style="color: #006600;">get</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'http://adam.kahtava.com/contact-me/'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>data<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>data<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p><strong>Pros</strong></p>
<ul>
<li>An easy way to access resources within our root domains</li>
<li>Supported by all major browsers</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Prevents us from making external calls outside a root domain</li>
<li>Prevents us from switching between HTTP and HTTPS</li>
<li>Kind of a hack - technically, the document.domain property is supposed to be a read only property, but most browsers also provide set access</li>
</ul>
<p>JSONP vs <code>document.domain</code> isn't a cut and dry comparison. JSONP lets anyone consume and share data, whereas overriding the <code>document.domain</code> lets you share resources within a common root domain. In simple cases where your only concern is sharing data within a single domain (exclusively on HTTP or exclusively on HTTPS), then overriding the domain works well, but in cases where you want to share or consume external data that may be passed over HTTP or HTTPS you'd probably want to stick with JSONP.</p>
<p><a href="http://adam.kahtava.com/journal/2010/02/24/the-project-badge-show-the-world-your-github-and-google-code-projects-on-your-blog/">The Project Badge</a> makes use of JSONP so it can work on your website. Most of <a href="http://adam.kahtava.com/publicly-available-web-services/">my publicly available web services</a> also make use of JSONP through a WCF <a href="http://code.google.com/p/adamdotcom-services/source/browse/trunk/AdamDotCom.Common.Service/Source/Common/Infrastructure/JSONP/JSONPBehavior.cs">JSONPBehavior</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2010/03/18/the-same-origin-policy-jsonp-vs-the-documentdomain-property/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Project Badge: Show The World Your GitHub and Google Code Projects On Your Blog</title>
		<link>http://adam.kahtava.com/journal/2010/02/24/the-project-badge-show-the-world-your-github-and-google-code-projects-on-your-blog/</link>
		<comments>http://adam.kahtava.com/journal/2010/02/24/the-project-badge-show-the-world-your-github-and-google-code-projects-on-your-blog/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 17:00:10 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[ADC Services]]></category>

		<category><![CDATA[ADC Website]]></category>

		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Services]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=2298</guid>
		<description><![CDATA[ 
The Project Badge displays your GitHub and Google Code projects in a badge that can be displayed on your site. This widget was built on the data being returned from my Open Source Service. 
View this post outside your RSS reader to see it in action or view it here.
The source for the Project [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://adam.kahtava.com/etcetera/open-source-project-badge/" style="border-width: 0px; width: 320px; height: 370px; margin-left: 15px; float: left;"> </iframe></p>
<p>The Project Badge displays your GitHub and Google Code projects in a badge that can be displayed on your site. This widget was built on the data being returned from my <a href="http://adam.kahtava.com/journal/2010/02/11/introducing-my-open-source-projects-service-grab-your-project-details-from-github-or-google-code/">Open Source Service</a>. </p>
<p><em>View this post outside your RSS reader to see it in action or view it <a href="http://adam.kahtava.com/etcetera/open-source-project-badge/">here</a>.</em></p>
<p>The source for the Project Badge can be found <a href="http://github.com/AdamDotCom/project-badge/">here</a> and the source for the accompanying service can be found <a href="http://code.google.com/p/adamdotcom-services/source/browse/trunk#trunk/AdamDotCom.OpenSource.Service/Source/Service">here</a>. A list of all my publicly available web services can be found <a href="http://adam.kahtava.com/publicly-available-web-services/">here</a>.</p>
<div style="clear:both;"></div>
<h3>Using The Project Badge On Your Website or Blog</h3>
<p><strong>1. Add The Asset References</strong></p>
<p>Add the following asset references, and a reference to jQuery (if you don't have one already).</p>
<div class="syntax_hilite">
<div id="html-8">
<div class="html"><span style="color: #009900;"><a href="http://december.com/html/4/element/link.html"><span style="color: #000000; font-weight: bold;">&lt;link</span></a> <span style="color: #000066;">rel</span>=<span style="color: #ff0000;">"stylesheet"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/css"</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"http://github.com/AdamDotCom/project-badge/raw/master/project-badge.css"</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://github.com/AdamDotCom/project-badge/raw/master/projectBadge.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</div>
</div>
<p></p>
<p><strong>2. Configure Your Accounts</strong></p>
<p>Set your project accounts (it's OK if you only use one host) then optionally set the appropriate filters - in my case <a href="http://code.google.com/u/adam.kahtava.com/">my Google Code projects</a> were prefixed with <em>adamdotcom</em> and I had duplicate projects on both GitHub and Google Code. By specifying <em>remove:adamdotcom,remove:duplicate-items</em> in my filters I filter out the duplicates and removed <em>adamdotcom</em> from the project name.</p>
<div class="syntax_hilite">
<div id="javascript-9">
<div class="javascript">&lt;script type=<span style="color: #3366CC;">"text/javascript"</span>&gt;<br />
&nbsp; projectBadge.<span style="color: #006600;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; gitHub: <span style="color: #3366CC;">'AdamDotCom'</span>, <br />
&nbsp; &nbsp; &nbsp; googleCode: <span style="color: #3366CC;">'adam.kahtava.com'</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>,<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; filters: <span style="color: #3366CC;">'remove:adamdotcom,duplicate-items,-,empty-items'</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;<br />
&lt;/script&gt;</div>
</div>
</div>
<p></p>
<p><strong>3. Add The Widget Hook</strong><br />
Add an element to your site or blog with the id of <code>project-badge</code>.</p>
<div class="syntax_hilite">
<div id="html-10">
<div class="html"><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"project-badge"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
&nbsp; Loading...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</div>
</div>
<p></p>
<p><strong>That's it!</strong><br />
If you have any issues, use the <a href="http://adam.kahtava.com/etcetera/open-source-project-badge/">the working example</a> as a reference, or send me a message.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2010/02/24/the-project-badge-show-the-world-your-github-and-google-code-projects-on-your-blog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing my Open Source Projects Service: Grab Your Project Details From GitHub or Google Code</title>
		<link>http://adam.kahtava.com/journal/2010/02/11/introducing-my-open-source-projects-service-grab-your-project-details-from-github-or-google-code/</link>
		<comments>http://adam.kahtava.com/journal/2010/02/11/introducing-my-open-source-projects-service-grab-your-project-details-from-github-or-google-code/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 16:00:55 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ADC Services]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[RESTful]]></category>

		<category><![CDATA[Services]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=2278</guid>
		<description><![CDATA[Say hello to the newest member of my service family; the Open Source Project Service. This service lets me (and you too my friends) grab our project details from either Google Code, or GitHub.
How it works
If you have a project on GitHub or Google Code, you can retrieve your project details.
Single project host retrieval URI:
http://adam.kahtava.com/services/open-source/projects/{project-host}.{xml&#124;json}?user={username}
Multiple [...]]]></description>
			<content:encoded><![CDATA[<p>Say <em>hello</em> to the newest member of <a href="http://adam.kahtava.com/journal/category/open-source/adc-services/">my service family</a>; <em>the Open Source Project Service</em>. This service lets me (and you too my friends) grab our project details from either <a href="http://code.google.com/u/adam.kahtava.com/">Google Code</a>, or <a href="http://github.com/AdamDotCom">GitHub</a>.</p>
<h3>How it works</h3>
<p>If you have a project on GitHub or Google Code, you can retrieve your project details.</p>
<p>Single project host retrieval URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/open-source/projects/<em>{project-host}</em>.<em>{xml|json}</em>?user=<em>{username}</em></span></p>
<p>Multiple project host retrieval URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/open-source/projects.<em>{xml|json}</em>?project-host:username=<em>{project-host1:username1,<span style="text-decoration: underline;"><em>project-host2:username2<span style="text-decoration: underline;"><em>}</em></span></em></span></em></span></p>
<p><strong>Example</strong>, requesting projects from Google Code in XML format:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/open-source/projects/googlecode.xml?user=adam.kahtava.com">http://adam.kahtava.com/services/open-source/projects/googlecode.xml?user=adam.kahtava.com</a></p>
<p style="padding-left: 30px;">Response:</p>
<div class="syntax_hilite">
<div id="xml-14">
<div class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Projects</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://adam.kahtava.com/services/open-source"</span> xmlns:<span style="color: #000066;">i</span>=<span style="color: #ff0000;">"http://www.w3.org/2001/XMLSchema-instance"</span><span style="font-weight: bold; color: black;">&gt;</span></span><br />
&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Project<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Description<span style="font-weight: bold; color: black;">&gt;</span></span></span>The site source in use on Adam.Kahtava.com / AdamDotCom.com (http://adam.kahtava.com/)<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Description<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LastMessage<span style="font-weight: bold; color: black;">&gt;</span></span></span>More code coverage on controllers required!! :)<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LastMessage<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LastModified<span style="font-weight: bold; color: black;">&gt;</span></span></span>2010-02-26<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LastModified<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Name<span style="font-weight: bold; color: black;">&gt;</span></span></span>website<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Name<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Url<span style="font-weight: bold; color: black;">&gt;</span></span></span>http://code.google.com/p/adamdotcom-website<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Url<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Project<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; ...<br />
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Projects<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</div>
</div>
<p>
<strong>Example</strong>, requesting projects from GitHub in JSON format:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/open-source/projects/github.json?user=adamdotcom">http://adam.kahtava.com/services/open-source/projects/github.json?user=adamdotcom</a></p>
<p style="padding-left: 30px;">Response:</p>
<div class="syntax_hilite">
<div id="javascript-15">
<div class="javascript"><span style="color: #66cc66;">&#91;</span><br />
&nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #3366CC;">"Description"</span>:<span style="color: #3366CC;">"A collection of my etcetera, so forth, and so on. Contains a PowerShell script for Twitter, a programming exercise in Ruby, a programming exercise for Google done in JavaScript."</span>,<br />
&nbsp; &nbsp; <span style="color: #3366CC;">"LastMessage"</span>:<span style="color: #3366CC;">"Bing-bing, changing filenames"</span>,<br />
&nbsp; &nbsp; <span style="color: #3366CC;">"LastModified"</span>:<span style="color: #3366CC;">"2009-06-08"</span>,<br />
&nbsp; &nbsp; <span style="color: #3366CC;">"Name"</span>:<span style="color: #3366CC;">"scripts"</span>,<br />
&nbsp; &nbsp; <span style="color: #3366CC;">"Url"</span>:<span style="color: #3366CC;">"http:<span style="color: #000099; font-weight: bold;">\/</span><span style="color: #000099; font-weight: bold;">\/</span>github.com<span style="color: #000099; font-weight: bold;">\/</span>AdamDotCom<span style="color: #000099; font-weight: bold;">\/</span>scripts"</span><br />
&nbsp; <span style="color: #66cc66;">&#125;</span>,<br />
&nbsp; ...<br />
<span style="color: #66cc66;">&#93;</span></div>
</div>
</div>
<p>
<strong>Example</strong>, requesting projects from both GitHub and Google Code in a single request in XML form:</p>
<p>Request: <a href="http://adam.kahtava.com/services/open-source/projects.xml?project-host:username=github:adamdotcom,googlecode:adam.kahtava.com">http://adam.kahtava.com/services/open-source/projects.xml?project-host:username=github:adamdotcom,googlecode:adam.kahtava.com</a></p>
<p>Response:</p>
<div class="syntax_hilite">
<div id="xml-16">
<div class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Projects</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://adam.kahtava.com/services/open-source"</span> xmlns:<span style="color: #000066;">i</span>=<span style="color: #ff0000;">"http://www.w3.org/2001/XMLSchema-instance"</span><span style="font-weight: bold; color: black;">&gt;</span></span><br />
&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Project<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Description<span style="font-weight: bold; color: black;">&gt;</span></span></span>Displays your public source code repositories from Google Code and GitHub.<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Description<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LastMessage<span style="font-weight: bold; color: black;">&gt;</span></span></span>Added http://code.google.com/p/adamdotcom-services/ link<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LastMessage<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LastModified<span style="font-weight: bold; color: black;">&gt;</span></span></span>2010-02-23<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LastModified<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Name<span style="font-weight: bold; color: black;">&gt;</span></span></span>project badge<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Name<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Url<span style="font-weight: bold; color: black;">&gt;</span></span></span>http://github.com/AdamDotCom/project-badge<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Url<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Project<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; ...<br />
&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Project<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Description<span style="font-weight: bold; color: black;">&gt;</span></span></span>The site source in use on Adam.Kahtava.com / AdamDotCom.com (http://adam.kahtava.com/)<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Description<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LastMessage<span style="font-weight: bold; color: black;">&gt;</span></span></span>More code coverage on controllers required!! :)<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LastMessage<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LastModified<span style="font-weight: bold; color: black;">&gt;</span></span></span>2010-02-26<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LastModified<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Name<span style="font-weight: bold; color: black;">&gt;</span></span></span>website<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Name<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;Url<span style="font-weight: bold; color: black;">&gt;</span></span></span>http://code.google.com/p/adamdotcom-website<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Url<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Project<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; ...<br />
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/Projects<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</div>
</div>
<p></p>
<h3>And Now What?</h3>
<p>View my sidebar widget that uses this service to display the latest updates from my source code repositories <a href="http://adam.kahtava.com/journal/2010/02/24/the-project-badge-show-the-world-your-github-and-google-code-projects-on-your-blog/">here</a>. </p>
<p>Contribute, view, or download this openly available source code <a href="http://code.google.com/p/adamdotcom-services/source/browse/trunk#trunk/AdamDotCom.OpenSource.Service/Source/Service">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2010/02/11/introducing-my-open-source-projects-service-grab-your-project-details-from-github-or-google-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RESTful Web Services: What Are They?</title>
		<link>http://adam.kahtava.com/journal/2009/12/04/restful-web-services-what-are-they/</link>
		<comments>http://adam.kahtava.com/journal/2009/12/04/restful-web-services-what-are-they/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 16:00:35 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[ASP.NET MVC]]></category>

		<category><![CDATA[RESTful]]></category>

		<category><![CDATA[Services]]></category>

		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=2004</guid>
		<description><![CDATA[RESTful web services are all the rage these days, and for good reason. Many web based MVC frameworks depend on REST. Here's a crash course on what RESTful web services are and aren't.
REST stands for Representational state transfer. REST is not an architecture, instead it's a set of design criteria. RESTfulness and RESTful web service [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services">RESTful web services</a> are all the rage these days, and for good reason. Many <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Implementations_of_MVC_as_web-based_frameworks">web based MVC frameworks</a> depend on REST. <strong>Here's a crash course on what RESTful web services are and aren't.</strong></p>
<p><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> stands for Representational state transfer. REST is not an architecture, instead it's a set of design criteria. RESTfulness and RESTful web service try to make use of the full gambit of <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP Methods</a> (GET, PUT, POST, DELETE, OPTIONS, and HEAD), and try to expose every resource or operation in a meaningful <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI</a> / URL. RESTful web services are intuitive, and work similar to the way the human web works (meaningful semantic data is returned to the client, resources link to other resources, <a href="http://en.wikipedia.org/wiki/Microformat">microformats</a> are employed, and so on).</p>
<p><strong>Qualities associated with RESTfulness:</strong></p>
<ul>
<li>RESTful is the the way the human web works - where the data returned by services can be easily understood by humans (or robots) and usually contain links to other resources</li>
<li>RESTful web services use varying response formats. Common formats include: XHTML pages, XHTML microformats, JSON, XML, ad-hoc HTML, JavaScript, or build your own</li>
<li>RESTful web services depend on meaningful URIs. These URIs can contain scoping information, but shouldn't contain query requests. <em>For example: when searching for 'kumquat' on Google you're redirected to <span style="text-decoration: underline;">http://www.google.com/search?q=kumquat</span> where your search query is present in the URI. Whereas a URI like <span style="font-style: normal;"><span style="text-decoration: underline;">http://www.google.com/search/kumquat/</span></span> specifies the search parameters within the URI - this is not recommended as it implies some predictability, search results are unpredictable</em></li>
<li>RESTful web services also use query variables as inputs to algorithms</li>
<li>RESTful web services expose a URI for every piece of data the client may want to operate on</li>
<li>RESTful web services make use of HTTP methods (GET, PUT, POST, DELETE, OPTIONS, and HEAD)</li>
<li>RESTful web services don't keep the state on the server (that's the client's job), they don't like cookies, and don't like sessions</li>
<li>RESTful web services make use of <a href="http://en.wikipedia.org/wiki/List_of_HTTP_headers">HTTP Headers</a></li>
</ul>
<p><strong>Examples of RESTful web services:</strong></p>
<ul>
<li> <a href="http://en.wikipedia.org/wiki/Amazon_S3">Amazon S3</a></li>
<li> <a href="http://developer.yahoo.com/everything.html">Most of Yahoo!'s web services</a></li>
<li> The Atom protocol</li>
</ul>
<p><strong>Qualities that are <span style="text-decoration: underline;">not</span> RESTful:</strong></p>
<ul>
<li>Most SOAP or other RPC-Style Architectures where XML messages are placed in the <a href="http://en.wikipedia.org/wiki/HTTP_body_data">HTTP Body</a></li>
<li>Frameworks that depend heavily on overloaded POSTs and XML (See <a class="site-tit1" rel="nofollow" href="http://www.devarticles.com/c/a/Web-Services/Safety-Idempotence-and-the-ResourceOriented-Architecture/">Safety, Idempotence, and the Resource-Oriented Architecture</a> for more information)</li>
<li>Most big corporate web service frameworks are not RESTful. Some frameworks like WCF try to provide REST like functionality on top of a SOAP based API, but these add-ons can be obtuse and unRESTful.</li>
</ul>
<p><strong>Examples of unRESTful web services:</strong></p>
<ul>
<li><a href="http://www.flickr.com/services/api/request.xmlrpc.html">The XML-RPC Flickr API</a></li>
<li><a href="http://www.flickr.com/services/api/request.soap.html">The SOAP Flickr API</a></li>
<li><a href="http://www.flickr.com/services/api/request.rest.html">The REST Flickr API</a> - although the name implis REST, this API is designed more like an XML-RPC</li>
<li><a href="http://delicious.com/help/api">The delicious API</a></li>
</ul>
<p>The growing popularity of web based MVC frameworks is providing a welcomed push towards RESTfulness and the simplicity that it brings, because working with the grain of the web (REST) makes life simpler and more semantically meaningful too. If you want to learn more about RESTful web services then check out <a href="http://www.amazon.com/dp/0596529260/">Restful Web Services</a> by Leonard Richardson and Sam Ruby.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2009/12/04/restful-web-services-what-are-they/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing my Whois Service: Customize Your Site Content Based On Referrals, Location, and More</title>
		<link>http://adam.kahtava.com/journal/2009/09/30/introducing-my-whois-service-customize-your-site-content-based-on-referrals-location-and-more/</link>
		<comments>http://adam.kahtava.com/journal/2009/09/30/introducing-my-whois-service-customize-your-site-content-based-on-referrals-location-and-more/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 16:00:31 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ADC Services]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[RESTful]]></category>

		<category><![CDATA[Services]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=1892</guid>
		<description><![CDATA[Services-services-services! Enough already! Today I introduce my Whois and Enhanced Whois Web Service.
The Enhanced Whois web service lets me know where my visitor are geographically located, provides filtering capabilities, and can act on referrals. This will allow me (or you) to personalize site greetings, hide my email address (or content) based on the visitor, and provide a [...]]]></description>
			<content:encoded><![CDATA[<p>Services-services-services! Enough already! Today I introduce my Whois and Enhanced Whois Web Service.</p>
<p>The Enhanced Whois web service lets me know where my visitor are geographically located, provides filtering capabilities, and can act on referrals. This will allow me (or you) to personalize site greetings, hide my email address (or content) based on the visitor, and provide a unique personal experience. Alternately I can use this service as a classic <a href="http://en.wikipedia.org/wiki/WHOIS">Whois</a> service.</p>
<h3>How it works.</h3>
<p>We're not anonymous on the internet and IP addresses are what uniquely defines your internet existence. <a href="http://en.wikipedia.org/wiki/WHOIS">Whois</a> services let us determine the registrant of internet resources.</p>
<p>Using my Whois service you can:</p>
<p><strong>View your enhanced whois record.</strong></p>
<p>By the visitor's IP address (your IP) URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/whois/enhanced.<em>{xml|json}</em></span></p>
<p>Example:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/whois/enhanced.xml">http://adam.kahtava.com/services/whois/enhanced.xml</a></p>
<p style="padding-left: 30px;"><a href="http://adam.kahtava.com/services/resume/linkedin/adam-kahtava.xml"></a>Response (using my IP):</p>
<pre style="padding-left: 30px;">&lt;WhoisEnhancedRecord xmlns="http://adam.kahtava.com/services/whois" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;City&gt;Calgary&lt;/City&gt;
  &lt;Country&gt;Canada&lt;/Country&gt;
  &lt;FilterMatches i:nil="true"/&gt;
  &lt;FriendlyMatches i:nil="true"/&gt;
  &lt;IsFilterMatch&gt;false&lt;/IsFilterMatch&gt;
  &lt;IsFriendly&gt;false&lt;/IsFriendly&gt;
  &lt;Organization&gt;Shaw Communications Inc.&lt;/Organization&gt;
  &lt;StateProvince&gt;AB&lt;/StateProvince&gt;
&lt;/WhoisEnhancedRecord&gt;</pre>
<p>By the visitor's IP address specifying a referrer, and a filter URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/whois/enhanced.<em>{xml|json}</em>?filters=</span><span style="text-decoration: underline;"><em>{filters,filters,...}</em></span><span style="text-decoration: underline;">&amp;referrer=</span><span style="text-decoration: underline;"><em>{referrer}</em></span></p>
<p>Example:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/whois/enhanced/xml?query=74.125.127.99&amp;filters=CA&amp;referrer=Twitter">http://adam.kahtava.com/services/whois/enhanced/xml?filters=CA&amp;referrer=Twitter</a></p>
<p style="padding-left: 30px;">Response (from an IP owned by Google, with a filter for California, and a referrer of Twitter specified):</p>
<pre style="padding-left: 30px; ">&lt;WhoisEnhancedRecord xmlns="http://adam.kahtava.com/services/whois" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;City&gt;Mountain View&lt;/City&gt;
  &lt;Country&gt;United states&lt;/Country&gt;
  &lt;FilterMatches&gt;
    &lt;string&gt;StateProvince&lt;/string&gt;
  &lt;/FilterMatches&gt;
  &lt;FriendlyMatches&gt;
    &lt;string&gt;<strong>google</strong>&lt;/string&gt;
    &lt;string&gt;<strong>twitter</strong>&lt;/string&gt;
  &lt;/FriendlyMatches&gt;
  &lt;IsFilterMatch&gt;true&lt;/IsFilterMatch&gt;
  &lt;IsFriendly&gt;true&lt;/IsFriendly&gt;
  &lt;Organization&gt;Google Inc.&lt;/Organization&gt;
  &lt;StateProvince&gt;<strong>CA</strong>&lt;/StateProvince&gt;
&lt;/WhoisEnhancedRecord&gt;</pre>
<p><strong>View your classic Whois record.</strong></p>
<p>By the visitor's IP address (your IP) URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/whois.<em>{xml|json}</em></span></p>
<p>Example:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/whois.xml">http://adam.kahtava.com/services/whois.xml</a></p>
<div style="padding-left: 30px;">Response (using my IP):</div>
<pre style="padding-left: 30px;">&lt;WhoisRecord xmlns="http://adam.kahtava.com/services/whois" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;DomainName&gt;68.146.10.100&lt;/DomainName&gt;
  &lt;RegistryData&gt;
  &lt;AbuseContact&gt; ... &lt;/AbuseContact&gt;
  &lt;AdministrativeContact i:nil="true"/&gt;
  &lt;BillingContact i:nil="true"/&gt;
  &lt;CreatedDate&gt;2002-06-03&lt;/CreatedDate&gt;
  &lt;RawText&gt; ... &lt;/RawText&gt;
  &lt;Registrant&gt;
    &lt;Address&gt;Suite 800630 - 3rd Ave. SW&lt;/Address&gt;
    &lt;City&gt;Calgary&lt;/City&gt;
    &lt;Country&gt;CA&lt;/Country&gt;
    &lt;Name&gt;Shaw Communications Inc.&lt;/Name&gt;
    &lt;PostalCode&gt;T2P-4L4&lt;/PostalCode&gt;
    &lt;StateProv&gt;AB&lt;/StateProv&gt;
  &lt;/Registrant&gt;
  ...
&lt;/WhoisRecord&gt;</pre>
<h3>So... why is this useful?</h3>
<p>This is the first step for this site's personalization - if I know where the user came from, where the user is geographically located, and have the capabilities to filter their Whois responses, then I can tailor my content to the user. For example: if someone from Google landed on my site I could mention that I'd love to work there and provide my email address and phone number, similarly if someone from Calgary landed on my site I could provide my <a href="http://www.google.com/calendar/embed?src=kahtava.com_3b7tc69opbskf5cqgjflihhqpk@group.calendar.google.com&amp;gsessionid=KwiJcMzxbmfA1s3H-Nfjbg">public calendar of local events</a>. The possibilities are endless.</p>
<p>This service will be wrapped by a JavaScript widget that will take care of the asynchronous service polling, but that sounds like another post.</p>
<p>Contribute, view, or download the openly available source code <a href="http://code.google.com/p/adamdotcom-services/source/browse/trunk#trunk/AdamDotCom.Whois.Service/Source/Service">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2009/09/30/introducing-my-whois-service-customize-your-site-content-based-on-referrals-location-and-more/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing my LinkedIn Resume Service: View Your Resume</title>
		<link>http://adam.kahtava.com/journal/2009/09/24/introducing-my-linkedin-resume-service-view-your-resume/</link>
		<comments>http://adam.kahtava.com/journal/2009/09/24/introducing-my-linkedin-resume-service-view-your-resume/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 16:00:19 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ADC Services]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[RESTful]]></category>

		<category><![CDATA[Services]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=1880</guid>
		<description><![CDATA[In my last post I mentioned that I was creating a couple web services that would hopefully bring together my online portfolio. Today I introduce my LinkedIn Resume Web Service.
How it works.
If you have a resume on LinkedIn and you've added services@adamdotcom.com as a contact then you can:
View your resume - retrieve your Resume by first [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://adam.kahtava.com/journal/2009/09/15/introducing-my-amazon-web-service-find-your-profile-view-your-wishlist-or-reviews/">last post</a> I mentioned that I was creating a couple web services that would hopefully bring together my online portfolio. Today I introduce my LinkedIn Resume Web Service.</p>
<h3>How it works.</h3>
<p>If you have a resume on <a href="http://www.linkedin.com/profile?viewProfile=&amp;key=9962574">LinkedIn</a> and you've added <em>services@adamdotcom.com</em> as a contact then you can:</p>
<p><strong>View your resume</strong> - retrieve your Resume by first and last name.</p>
<p>By first and last name URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/resume/linkedin/<em>{firstName-lastName}</em>.<em>{xml|json}</em></span></p>
<p>Example:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/resume/linkedin/adam-kahtava.xml">http://adam.kahtava.com/services/resume/linkedin/adam-kahtava.xml</a></p>
<p style="padding-left: 30px;"><a href="http://adam.kahtava.com/services/resume/linkedin/adam-kahtava.xml"></a>Response:</p>
<pre style="padding-left: 30px;">&lt;Resume xmlns="http://adam.kahtava.com/services/resume" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;Educations&gt;
    &lt;Education&gt;
      &lt;Certificate&gt;Computer Programming and Analysis&lt;/Certificate&gt;
      &lt;Institute&gt;Seneca College of Applied Arts and Technology&lt;/Institute&gt;
    &lt;/Education&gt;
    &lt;Education&gt;
      &lt;Certificate&gt;Bachelor of Science (Honours), Computer Science&lt;/Certificate&gt;
      &lt;Institute&gt;Trent University&lt;/Institute&gt;
    &lt;/Education&gt;
  &lt;/Educations&gt;
  &lt;Positions&gt;
    &lt;Position&gt;
      &lt;Company&gt;Corbis ...</pre>
<h3>Wow that was exciting, so now what?</h3>
<p>Well.. Head on over to my <a href="http://adam.kahtava.com/resume/curriculum-vitae/software-developer/">resume</a> page. My resume is being pulled from LinkedIn through this very service.</p>
<p>Contribute, view, or download the openly available source code <a href="http://code.google.com/p/adamdotcom-services/source/browse/trunk#trunk/AdamDotCom.Resume.Service/Source/Service">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2009/09/24/introducing-my-linkedin-resume-service-view-your-resume/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing my Amazon Web Service: Find Your Profile, View Your Wishlist or Reviews</title>
		<link>http://adam.kahtava.com/journal/2009/09/15/introducing-my-amazon-web-service-find-your-profile-view-your-wishlist-or-reviews/</link>
		<comments>http://adam.kahtava.com/journal/2009/09/15/introducing-my-amazon-web-service-find-your-profile-view-your-wishlist-or-reviews/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 16:00:12 +0000</pubDate>
		<dc:creator>Adam Kahtava</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ADC Services]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[RESTful]]></category>

		<category><![CDATA[Services]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://adam.kahtava.com/journal/?p=1822</guid>
		<description><![CDATA[
My online portfolio is increasingly scattered through the internet (reviews and wishlist are on Amazon, source code on github / Google Projects, resume on LinkedIn, and so on). I've been working on a couple services that will eventually pull my portfolio together while keeping a single point of reference, and... I'm sharing these services.
Introducing my [...]]]></description>
			<content:encoded><![CDATA[<div style="padding: 0px 0px 10px 5px; float: right;"><img src="http://awsmedia.s3.amazonaws.com/logo_aws.gif" alt="" /></div>
<p>My online portfolio is increasingly scattered through the internet (<a href="http://www.amazon.com/gp/cdp/member-reviews/A2JM0EQJELFL69/ref=cm_pdp_rev_all?ie=UTF8&amp;sort_by=MostRecentReview">reviews</a> and <a href="http://www.amazon.com/Adam-Kahtava/wishlist/3JU6ASKNUS7B8/ref=cm_pdp_wish_all_itms">wishlist</a> are on Amazon, source code on <a href="http://github.com/adamdotcom">github</a> / Google Projects, resume on <a href="http://www.linkedin.com/pub/adam-kahtava/3/405/466">LinkedIn</a>, and so on). I've been working on a couple services that will eventually pull my portfolio together while keeping a single point of reference, and... I'm sharing these services.</p>
<p>Introducing my Amazon Web Service.</p>
<h3>How it works.</h3>
<p>Basically if you have a Wishlist or a Review list on Amazon you can:</p>
<p><strong>Discover your profile</strong> - retrieve your ListId (for WishLists) or CustomerId (for Reviews):</p>
<p>Discovery URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/amazon/discover/user/</span><em><span style="text-decoration: underline;">{user-name}</span></em><span style="text-decoration: underline;">.</span><em><span style="text-decoration: underline;">{xml|json}</span></em></p>
<p>Example:</p>
<p style="padding-left: 30px; ">Request: <a href="http://adam.kahtava.com/services/amazon/discover/user/adam-kahtava.xml">http://adam.kahtava.com/services/amazon/discover/user/adam-kahtava.xml</a></p>
<p style="padding-left: 30px; ">Response:</p>
<pre style="padding-left: 30px; ">&lt;Profile xmlns="http://adam.kahtava.com/services/amazon" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;CustomerId&gt;A2JM0EQJELFL69&lt;/CustomerId&gt;
  &lt;ListId&gt;3JU6ASKNUS7B8&lt;/ListId&gt;
&lt;/Profile&gt;</pre>
<p><strong>View your Reviews - <span style="font-weight: normal;">retrieve your Reviews by username or Amazon CustomerId.</span></strong></p>
<p>By customerId URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/amazon/reviews/id/<em>{customerId}</em>.<em>{xml|json}</em></span></p>
<p>By username URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/amazon/reviews/user/<em>{user-name}</em>.<em>{xml|json}</em></span></p>
<p>Example:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/amazon/reviews/id/A2JM0EQJELFL69.xml">http://adam.kahtava.com/services/amazon/reviews/id/A2JM0EQJELFL69.xml</a></p>
<p style="padding-left: 30px;">Response:</p>
<pre style="padding-left: 30px;">&lt;Reviews xmlns="http://adam.kahtava.com/services/amazon" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;Review&gt;
    &lt;ASIN&gt;0321125215&lt;/ASIN&gt;
    &lt;Authors&gt;Eric Evans&lt;/Authors&gt;
    &lt;AuthorsMLA&gt;Evans Eric.&lt;/AuthorsMLA&gt;
    &lt;Content&gt;Through this book Evan's ...</pre>
<p><strong>View your Wishlist - <span style="font-weight: normal;">view your Wishlist by username or Amazon ListId.</span></strong></p>
<p>By listId URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/amazon/wishlist/id/<em>{listId}</em>.<em>{xml|json}</em></span></p>
<p>By username URI:</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">http://adam.kahtava.com/services/amazon/wishlist/user/<em>{user-name}</em>.<em>{xml|json}</em></span></p>
<p>Example:</p>
<p style="padding-left: 30px;">Request: <a href="http://adam.kahtava.com/services/amazon/wishlist/user/adam-kahtava.json">http://adam.kahtava.com/services/amazon/wishlist/user/adam-kahtava.json</a></p>
<p style="padding-left: 30px;">Response:</p>
<pre style="padding-left: 30px;">[{"ASIN":"0471467413","Authors":"Mostafa Abd-El-Barr, Hesham El-Rewini", ...</pre>
<h3>So now what?</h3>
<p>Head on over to my <a href="http://adam.kahtava.com/book-reviews/">Reviews</a> and <a href="http://adam.kahtava.com/reading-lists/recommended-and-wishlist/">Reading List</a> pages. These pages make use of the data from this service. I should also mention that, this service was built on a previous iteration of my Amazon Web Service (<a href="http://adam.kahtava.com/journal/2008/10/06/how-to-display-your-amazon-reviews-and-wish-list-on-your-site-using-amazons-web-services/">How To Display Your Amazon Reviews and Wish List Using Amazon’s Web Services</a>).</p>
<p>Contribute, view, or download the openly available source code <a href="http://code.google.com/p/adamdotcom-services/source/browse/trunk#trunk/AdamDotCom.Amazon.Service/Source/Service">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adam.kahtava.com/journal/2009/09/15/introducing-my-amazon-web-service-find-your-profile-view-your-wishlist-or-reviews/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
