From 6869384732e36ed1fa38f0214e63eca0b29bfd19 Mon Sep 17 00:00:00 2001 From: maxwell Date: Wed, 21 Jul 2010 21:15:16 -0700 Subject: [PATCH] i think it works - max --- app/controllers/requests_controller.rb | 2 ++ app/helpers/requests_helper.rb | 1 - app/models/user.rb | 16 +++++++++------- lib/common.rb | 5 +++-- lib/message_handler.rb | 25 ++++++++++++++----------- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index add191093..4c7ed6916 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -26,6 +26,8 @@ class RequestsController < ApplicationController def create rel_hash = relationship_flow(params[:request][:destination_url]) + + puts rel_hash @request = current_user.send_request(rel_hash) if @request diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index 617cafd1b..aebc76cce 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -25,7 +25,6 @@ module RequestsHelper def subscription_url(action, profile) if action == :subscribe - pp profile.links profile.links.select{|x| x.rel == 'http://schemas.google.com/g/2010#updates-from'}.first.href elsif action == :friend profile.links.select{|x| x.rel == 'http://joindiaspora.com/seed_location'}.first.href diff --git a/app/models/user.rb b/app/models/user.rb index 524493255..e78978d8a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,4 +1,6 @@ class User < Person + require 'lib/common' + include Diaspora::OStatusParser devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable @@ -78,18 +80,18 @@ class User < Person ####ostatus###### # def subscribe_to_pubsub(feed_url) - # THIS SHOULD REALLY BE IN A REQUESR>>>> FIGURE IT OUT r = Request.instantiate(:to => feed_url, :from => self) - r.subscribe_to_ostatus(feed_url) + r end - def send_request(thing) - if thing[:friend] - self.send_friend_request(thing[:friend]) - elsif thing[:subscribe] - self.subscribe_to_pubsub(thing[:subscrube]) + def send_request(rel_hash) + puts rel_hash.inspect + if rel_hash[:friend] + self.send_friend_request_to(rel_hash[:friend]) + elsif rel_hash[:subscribe] + self.subscribe_to_pubsub(rel_hash[:subscribe]) else raise "you can't do anything to that url" end diff --git a/lib/common.rb b/lib/common.rb index 322df5f4c..ed4c98104 100644 --- a/lib/common.rb +++ b/lib/common.rb @@ -71,8 +71,9 @@ module Diaspora end end - def subscribe_to_ostatus(hub, feed_url) - @@queue.add_subscription_request(hub, feed_url) + def subscribe_to_ostatus(feed_url) + puts feed_url + @@queue.add_subscription_request(feed_url) @@queue.process end diff --git a/lib/message_handler.rb b/lib/message_handler.rb index a031da970..8e6bff9a2 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -1,5 +1,6 @@ class MessageHandler - + + include Diaspora::OStatusParser NUM_TRIES = 3 TIMEOUT = 5 #seconds @@ -26,15 +27,7 @@ class MessageHandler end def add_subscription_request(feed) - - feed_action = lambda{ - hub = Diaspora::OStatusParser::find_hub(http.response) - add_hub_subscription_request(hub, query.destination) - Diaspora::OStatus::parse_sender(http.response) - } - - - @queue.push(Message.new(:subscribe, feed, :callback => callback)) + @queue.push(Message.new(:subscribe, feed)) end def process @@ -48,8 +41,18 @@ class MessageHandler http.callback {send_to_seed(query, http.response); process} when :subscribe + puts query.destination http = EventMachine::HttpRequest.new(query.destination).get :timeout => TIMEOUT - http.callback query.callback + http.callback { + require 'lib/common' + puts http.response + hub = Nokogiri::HTML(http.response).xpath('//link[@rel="hub"]').first.attribute("href").value + + add_hub_subscription_request(hub, query.destination) + #Diaspora::OStatus::parse_sender(http.response) + + process + } when :pubhub http = EventMachine::PubSubHubbub.new(query.destination).publish query.body, :timeout => TIMEOUT