Let's start with WebFinger. First, we need to figure out how to get my WebFinger data from gmail. There's standard place to look for that explanation, given a domain name:
http[s]://{domain-name}/.well-known/host-metaSo for gmail we get the explanation of how to get my WebFinger data like so:
$ curl http://gmail.com/.well-known/host-metaOut pops an XRD doc that contains a URI template (in bold, below):
<?xml version='1.0' encoding='UTF-8'?> <!-- NOTE: this host-meta end-point is a pre-alpha work in progress. Don't rely on it. --> <!-- Please follow the list at http://groups.google.com/group/webfinger --> <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0' xmlns:hm='http://host-meta.net/xrd/1.0'> <hm:Host xmlns='http://host-meta.net/xrd/1.0'>gmail.com</hm:Host> <Link rel='lrdd' template='http://www.google.com/s2/webfinger/?q={uri}'> <Title>Resource Descriptor</Title> </Link> </XRD>Substitute my email address for {uri} and curl it:
$ curl http://www.google.com/s2/webfinger/?q=banksean@gmail.comThat spits out another XRD that describes some other resources associated with my email address:
<?xml version='1.0'?> <XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'> <Subject>acct:banksean@gmail.com</Subject> <Alias>http://www.google.com/profiles/banksean</Alias> <Link rel='http://portablecontacts.net/spec/1.0' href='http://www-opensocial.googleusercontent.com/api/people/'/> <Link rel='http://webfinger.net/rel/profile-page' href='http://www.google.com/profiles/banksean' type='text/html'/> <Link rel='http://microformats.org/profile/hcard' href='http://www.google.com/profiles/banksean' type='text/html'/> <Link rel='http://gmpg.org/xfn/11' href='http://www.google.com/profiles/banksean' type='text/html'/> <Link rel='http://specs.openid.net/auth/2.0/provider' href='http://www.google.com/profiles/banksean'/> <Link rel='describedby' href='http://www.google.com/profiles/banksean' type='text/html'/> <Link rel='describedby' href='http://s2.googleusercontent.com/webfinger/?q=banksean%40gmail.com&fmt=foaf' type='application/rdf+xml'/> <Link rel='http://schemas.google.com/g/2010#updates-from' href='http://buzz.googleapis.com/feeds/103419049256232792514/public/posted' type='application/atom+xml'/> </XRD>Bolded above is the rel='http://schemas.google.com/g/2010#updates-from' URI for my public status updates. Let's fetch that:
$ curl http://buzz.googleapis.com/feeds/103419049256232792514/public/posted
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xmlns:thr='http://purl.org/syndication/thread/1.0' xmlns:media='http://search.yahoo.com/mrss' xmlns:activity='http://activitystrea.ms/spec/1.0/'> <link rel='self' type='application/atom+xml' href='http://buzz.googleapis.com/feeds/103419049256232792514/public/posted'/> <link rel='hub' href='http://pubsubhubbub.appspot.com/'/> <!-- lots more feed data not relevant to this discussion -->It's a standard Atom feed. Amongst a lot of other stuff in the beginning is a rel="hub" link. This is where PubSubHubub comes in. Suppose that I want some other service to be notified whenever I post a status update (for instance, I have an app that reposts it in the sidebar of my blog). I could poll this Atom feed but polling is pretty janky. With PuSH I can register a callback to be notified whenever I post an update. Since this feed has a rel="hub" link set to http://pubsubhubbub.appspot.com/, that's where I go to do register a callback.
If you just navigate to http://pubsubhubbub.appspot.com/ with your browser you get a form you can fill out to create a subscription. One of the fields is for a "Callback" url. I don't run any websites that know how to handle PuSH callbacks (or subscription confirmation, for that matter). Luckily there is a test subscriber on appspot that accepts subscription requests for anything: http://pubsubhubbub-subscriber.appspot.com/. To create your own callback URL for testing, just add /subscriber.{some_unique_identifier} to the end of it.
According to the PuSH spec, I should POST some form fields to the hub URL like so:
$ curl -v http://pubsubhubbub.appspot.com/subscribe \ -d hub.callback=http://pubsubhubbub-subscriber.appspot.com/subscriber.banksean\&\ hub.topic=http://buzz.googleapis.com/feeds/103419049256232792514/public/posted\&\ hub.verify=sync\&hub.mode=subscribe\&hub.verify_token=\&hub.secret=And that creates the subscription. Here's the verbose output:
* About to connect() to pubsubhubbub.appspot.com port 80 (#0) * Trying 74.125.19.141... connected * Connected to pubsubhubbub.appspot.com (74.125.19.141) port 80 (#0) > POST /subscribe HTTP/1.1 > User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 > Host: pubsubhubbub.appspot.com > Accept: */* > Content-Length: 219 > Content-Type: application/x-www-form-urlencoded > < HTTP/1.1 204 No Content < Cache-Control: no-cache < Content-Type: text/plain < Expires: Fri, 01 Jan 1990 00:00:00 GMT < Date: Sat, 13 Feb 2010 17:41:29 GMT < Server: Google Frontend < Content-Length: 0 < X-XSS-Protection: 0 < * Connection #0 to host pubsubhubbub.appspot.com left intact * Closing connection #0
The 204 No Content response indicates the subscription was created and is active, according to the spec.
And if you go to http://pubsubhubbub-subscriber.appspot.com/ right now (Saturday morning, October 13th 2009), you'll indeed see a bunch of my posts on it.
Ta Da. No code. Just curl. I love the internet.
This was an extremely helpful post. Thanks!
ReplyDeleteThank you a lot for providing individuals with a very spectacular possibility to read critical reviews from this site.
ReplyDeletejava training in bangalore java training in bangalore
ReplyDeleteThanks for sharing this informative article..!!
Keep posting waiting for next post
Java Training in Bangalore
iOS Training in Bangalore
Thanks for sharing this information admin, it helps me to learn new things. Continue sharing more like this.
ReplyDeletePython Training in Chennai
Python course in Chennai
Data Science Course in Chennai
AWS Training in Chennai
Angularjs Training in Chennai
RPA Training in Chennai
UiPath Training in Chennai
Blue Prism Training in Chennai
DevOps Training in Chennai
ccna course in Chennai
The information given is extra-ordinary. Looking forward to read more . Thanks for sharing.
ReplyDeleteIELTS Coaching in Chennai
IELTS Training in Chennai
IELTS classes in Chennai
IELTS Training in Tambaram
Spoken English Classes in Chennai
Best Spoken English Classes in Chennai
SAS Training in Chennai
SAS Course in Chennai
This comment has been removed by the author.
ReplyDeleteVery informative information.
ReplyDeleteselenium training in Bangalore | Selenium Courses in Bangalore | Best selenium Training institute in bangalore, Selenium training in Marathahalli || web development training in Bangalore
Awesome post with great piece of information. I'm glad that I came across your blog. Keep us updated.
ReplyDeleteIoT Training in Chennai
IoT Courses in Chennai
Oracle Training in Chennai
Oracle Training institute in chennai
Unix Training in Chennai
Unix Shell Scripting Training in Chennai
IoT Training in Adyar
IoT Training in Porur
I gathered lots of information from your blog and it helped me a lot. Keep posting more
ReplyDeleteAngularJS course in Chennai
Angularjs Training institute in Chennai
ReactJS Training in Chennai
ReactJS course in Chennai
Data Science Training in Chennai
Data Analytics Courses in Chennai
AngularJS Training in Velachery
AngularJS Training in Tambaram
I have read your article throughly and it was awesome content with great example.
ReplyDeleteGerman Classes in Chennai
Big Data Training in Chennai
Android Training in Chennai
Selenium Training in Chennai
Digital Marketing Training in Chennai
Software Testing Training in Chennai
Software testing institute in chennai
Software testing training in Velachery
I read your blog recently and its nice. Keep sharing more.
ReplyDeleteIELTS Coaching in Chennai Anna Nagar
IELTS Coaching Centre in Anna Nagar
IELTS Coaching in Anna Nagar
IELTS Coaching in Adyar
IELTS Coaching in Chennai Adyar
IELTS Coaching in Porur
Spoken English Class in Chennai
Spoken English in Chennai
Thank you for allowing me to read it, welcome to the next in a recent article. And thanks for sharing the nice article, keep posting or updating news article.\
ReplyDeletelg mobile service center in chennai
lg mobile service center
lg mobile service chennai
thanks for sharing this information
ReplyDeleteBlue Prism Training in Bangalore
Blue Prism Training in BTM
data science with python training in Bangalore
Artificial Intelligence training in Bangalore
python training in btm
python training in btm Layout
python training in jayanagar bangalore
The article is so informative. This is more helpful. Thanks for sharing.
ReplyDeleteLearn best software testing online certification course class in chennai with placement
Best selenium testing online course training in chennai
Best online software testing training course institute in chennai with placement
Nice Post...Thanks for Sharing the Information...
ReplyDeletejava training in bangalore
Thanks for sharing such a nice information with us...
ReplyDeleteJava Training in Bangalore
ReplyDeleteAfter reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article.
Ethical Hacking Course in Bangalore
Similar to COBOL, thousands of critical enterprise systems have been written in Java and will need to be maintained and enhanced for decades to come. I'd be surprised if it's not around for at least another 15 years. But it will change, and is changing.
ReplyDeleteJava Training in Chennai
Java Training in Bangalore
Java Training in Hyderabad
Java Training in Coimbatore
Java Training
nice article and perfect post
ReplyDeleteSoftware Testing Training in Chennai | Certification | Online
Courses
Software Testing Training in Chennai
Software Testing Online Training in Chennai
Software Testing Courses in Chennai
Software Testing Training in Bangalore
Software Testing Training in Hyderabad
Software Testing Training in Coimbatore
Software Testing Training
Software Testing Online Training
The information given is extra-ordinary. Looking forward to read more . Thanks for sharing.
ReplyDeleteAWS Course in Chennai
AWS Course in Bangalore
AWS Course in Hyderabad
AWS Course in Coimbatore
AWS Course
AWS Certification Course
AWS Certification Training
AWS Online Training
AWS Training
Thank you for allowing me to read it, welcome to the next in a recent article. And thanks for sharing the nice article, keep posting or updating news article.
ReplyDeleteacte reviews
acte velachery reviews
acte tambaram reviews
acte anna nagar reviews
acte porur reviews
acte omr reviews
acte chennai reviews
acte student reviews
By the way you are running a great blog. Thanks for sharing this.
ReplyDeleteCyber Security Training Course in Chennai | Certification | Cyber Security Online Training Course | Ethical Hacking Training Course in Chennai | Certification | Ethical Hacking Online Training Course |
CCNA Training Course in Chennai | Certification | CCNA Online Training Course | RPA Robotic Process Automation Training Course in Chennai | Certification | RPA Training Course Chennai | SEO Training in Chennai | Certification | SEO Online Training Course
jordan shoes
ReplyDeletegoyard handbags
golden goose outlet
yeezy supply
yeezy shoes
yeezy
goyard handbags
golden goose
yeezy
yeezy shoes
thanks for your information really good and very nice The Best Result Driven Digital Marketing Agency in Chennai
ReplyDeleteMua vé máy bay liên hệ ngay đại lý Aivivu, tham khảo
ReplyDeletevé máy bay đi Mỹ hạng thương gia
chuyến bay từ mỹ về việt nam hôm nay
giá vé máy bay rẻ nhất đi phú quốc
đặt vé máy bay sài gòn nha trange may bay tu vinh di nha trang
vé máy bay đi Sài Gòn rẻ nhất
Wow! Such an amazing and helpful blog.I really loved it. I hope that you will continue to do your work like this in future also. Join Ziyyara Edutech's online tutoring for Class 12, where we bring personalized learning right to your doorstep.
ReplyDeleteBook A Free Demo Today visit Commerce tuition near me for class 12