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