[Affelio-cvs 1380] CVS update: affelio/lib/Affelio/SNS

Back to archive index

Tadashi Okoshi slash****@users*****
2006年 6月 27日 (火) 04:41:56 JST


Index: affelio/lib/Affelio/SNS/Handshaker_c.pm
diff -u affelio/lib/Affelio/SNS/Handshaker_c.pm:1.21 affelio/lib/Affelio/SNS/Handshaker_c.pm:1.22
--- affelio/lib/Affelio/SNS/Handshaker_c.pm:1.21	Sun Jun  4 11:47:45 2006
+++ affelio/lib/Affelio/SNS/Handshaker_c.pm	Tue Jun 27 04:41:55 2006
@@ -14,7 +14,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-# $Id: Handshaker_c.pm,v 1.21 2006/06/04 02:47:45 slash5234 Exp $
+# $Id: Handshaker_c.pm,v 1.22 2006/06/26 19:41:55 slash5234 Exp $
 
 package Affelio::SNS::Handshaker_c;
 {
@@ -38,7 +38,7 @@
 
     use Exporter;
     @Affelio::SNS::Handshaker_c::ISA= "Exporter";
-    @Affelio::SNS::Handshaker_c::EXPORT = qw(send_HandShake reply_HandShake get_F2List post_Message get_news);
+    @Affelio::SNS::Handshaker_c::EXPORT = qw(send_HandShake reply_HandShake get_F2List post_Message get_news delete_AFLink);
 
     #################################################################
     # send_HandShake(dest_url =>  $dest_uri, 
@@ -125,9 +125,6 @@
     }
 
 
-
-
-
     #################################################################
     # reply_HandShake(dest_url =>  $dest_uri, 
     #                 timestamp => $timestamp,
@@ -240,6 +237,55 @@
 	return $res;
     }
 
+    ##################################################################
+    #delete_AFLink
+    # proto_ver: 1
+    ##################################################################
+    sub delete_AFLink{
+	my %arg = @_;
+	my $proto_ver = 1.0;
+	my $dest_uri = $arg{dest_uri};
+	my $xwsse_mesg = $arg{xwsse_mesg};
+
+	debug_print("C::delete_AFLink: dest=[$dest_uri]");
+	debug_print("C::delete_AFLink: wsse=[$xwsse_mesg]");
+
+	#################################
+	#Arg check
+	#################################
+	if ($dest_uri !~ /^http/) {
+	    throw Affelio::exception::InvalidInputException("dest_uri");
+	}
+	my $dest_xml_uri = $dest_uri . "/bin/xml-rpc-serv.cgi";
+
+	#################################
+	#Execute XMLRPC
+	#################################
+	my $res = eval {
+	    XMLRPC::Lite
+		->proxy($dest_xml_uri) #XML
+		->call(
+		       'affelio.delete_AFLink',
+		       $proto_ver,
+		       $xwsse_mesg
+		       )
+		->result;
+	  };
+
+	debug_print("C::delete_AFLink: RPC returned.\n");
+	if ($@) {
+	    throw Affelio::exception::NetworkException($@);
+	}
+	if($res->{flerror} ne "0"){
+	    throw Affelio::exception::CommunicationException("XML-RPC Error: " . $res->{message});
+	}
+
+	debug_print("C::delete_AFLink: OK: [$res->{flerror}] [$res->{message}]");
+	debug_print("C::delete_AFLink: end.");
+	return $res;
+    }
+
+
     #################################################################
     # post_Message
     # proto_ver: 1
Index: affelio/lib/Affelio/SNS/Handshaker_s.pm
diff -u affelio/lib/Affelio/SNS/Handshaker_s.pm:1.50 affelio/lib/Affelio/SNS/Handshaker_s.pm:1.51
--- affelio/lib/Affelio/SNS/Handshaker_s.pm:1.50	Sun Jun  4 11:47:45 2006
+++ affelio/lib/Affelio/SNS/Handshaker_s.pm	Tue Jun 27 04:41:55 2006
@@ -14,7 +14,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-# $Id: Handshaker_s.pm,v 1.50 2006/06/04 02:47:45 slash5234 Exp $
+# $Id: Handshaker_s.pm,v 1.51 2006/06/26 19:41:55 slash5234 Exp $
 
 ########################################################################
 #package Affelio::SNS::Handshaker_s::Util;
@@ -70,7 +70,7 @@
 
 	use Exporter;
 	@Affelio::SNS::Handshaker_s::ISA = "Exporter";
-	@Affelio::SNS::Handshaker_s::EXPORT = qw (HandShake HandShakeReply F2List post_Message get_services get_news op_request_AFlink);
+	@Affelio::SNS::Handshaker_s::EXPORT = qw (HandShake HandShakeReply F2List post_Message get_services get_news op_request_AFlink delete_AFLink);
 
     }
 
@@ -328,6 +328,84 @@
 	    };
     }
 
+
+    ##################################################################
+    #affelio.delete_AFLink
+    # proto_ver: 1
+    ##################################################################
+    sub delete_AFLink{
+	my $self = shift;
+	my ($proto_ver,  $xwsse_mesg) = @_;
+	my $af = Affelio::SNS::Handshaker_s::Util::af_new();
+
+	if($proto_ver > 1.0){
+	    return {
+		flerror => XMLRPC::Data->type('boolean', 102),
+		message => "ERR:102 UnsupportedProtoVer 1.0"
+		};
+	}
+
+	#################################
+	#authentication
+	#################################
+	#distill visiter_afid
+	$xwsse_mesg =~ /Username="(.*)",(\s*)Password/;
+	my $visitor_afid = $1;
+	debug_print("S::delete_AFLink visitor_afid = [$visitor_afid]");
+
+	#get password
+	my $passAB = $af->getFM()->get_attribute_by_afid($visitor_afid, 
+							 "password");
+	debug_print("S::delete_AFLink passAB = [$passAB]");
+
+	#WSSE authentication
+	require Affelio::misc::WSSE;
+	if(Affelio::misc::WSSE::authenticate($xwsse_mesg,
+					     $visitor_afid, $passAB)){
+	    debug_print("S::delete_AFLink WSSE authentication OK.");
+	}else{
+	    debug_print("S::delete_AFLink WSSE authentication NG.");
+	    return {
+		flerror => XMLRPC::Data->type('boolean', 104),
+		message => "ERR:104 AuthenticationError"
+		};
+	}
+	
+	#################################
+	#delete AFLink
+	#################################
+	my $ret="";
+	my $uid = $af->getFM()->get_attribute_by_afid($visitor_afid, 
+						      "uid");
+	debug_print("S::delete_AFLink got uid [$uid]");
+
+	#XXX
+	# Must be consistent with logic in App/ManageFriends.pm
+	#
+	#1.Remove entry(uid) from AFuser_CORE_friends
+	$af->getFM->remove_friend($uid);
+	#XXX
+	#2.Remove uid from friends of others in AFuser_CORE_friends
+	#XXX
+	#3.Remove uid from friends of others in AFuser_CORE_friendsfriends
+	debug_print("S::delete_AFLink removed [$uid] from friends table.");
+	#4.Remove uid from groups
+	$af->getGM->remove_person_from_all($uid);
+	debug_print("S::delete_AFLink removed [$uid] all groups.");
+	#5.add uid to erasedfriends
+
+	#################################
+	#send back return message
+	#################################
+	debug_print("S::delete_AFLink ret=[$ret]");
+	debug_print("S::delete_AFLink done.");
+	return {
+	    flerror => XMLRPC::Data->type('boolean', 0),
+	    message => $ret
+	    };
+    }
+
+
     ##################################################################
     #affelio.op_request_AFlink
     # proto_ver: 1


Affelio-cvs メーリングリストの案内
Back to archive index