⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soap.pm

📁 Punjab is a jabber XMLRPC/SOAP/REST client. It is a xmlrpc, soap, or REST server that allows for p
💻 PM
📖 第 1 页 / 共 2 页
字号:
    my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));       # is this what I have to do?    my $sid     = $params->{$order[0]} if defined $params->{$order[0]};    my $service = $params->{$order[1]} if defined $params->{$order[1]};    my $to      = $params->{$order[2]} if defined $params->{$order[2]};    my $nick    = $params->{$order[3]} if defined $params->{$order[3]};    my $group   = $params->{$order[4]} if defined $params->{$order[4]};    my $request = $params->{$order[5]} if defined $params->{$order[5]};        if ($punjab_session->check_session($sid)) {        $punjab_session->activity($sid,time());        		my $id = luniqid;	if (defined($to)) {	    if (defined($request)) {				$kernel->post($sid,			      'send_presence',			      'subscribe',			      'Online',			      'Online',$to);			    } 		    my $node  = POE::Filter::XML::Node->new('iq');	    $node->attr('type','set');	    $node->attr('id',$id);	    my $query = $node->insert_tag('query');	    $query->attr('xmlns',NS_JABBER_ROSTER);	    my $item  = $query->insert_tag('item');	    my $g_tag = $query->insert_tag('group');	    $g_tag->data($group);	    $item->attr('name',$nick);	    $item->attr('jid',$to);	    	    $kernel->post($sid,'send_xml',$node);	    &debug("start_contact : Manage Contact set");	    $kernel->post('Manager'.$sid,'manage_events', 'return_contact', 			  $soap_transaction,$node,$sid);	    	    #$soap_transaction->return(TRUE);	}     } else {	$soap_transaction->return(FALSE);    }}sub jabber_start_roster{    my ($kernel,$heap,$session,$soap_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));       # is this what I have to do?    my $sid    = $params->{$order[0]};    my $id = luniqid;    if ($punjab_session->check_session($sid)) {        $punjab_session->activity($sid,time());        	$kernel->post('Manager'.$sid,'start_roster', 'return_roster', 			  $soap_transaction,$id,$sid,'JABBER'.$sid);	return;    } else {	$soap_transaction->return("Session does not exist");    }}sub jabber_get_roster{    my $soap_transaction = $_[ARG0];    my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));       # is this what I have to do?    my $sid    = $params->{$order[0]};    #my $iq_id  = $params->{$order[1]};    my (@c,$h_ret,@a_ret,$ret);    # grab the iq     #$kernel->post('Manager'.$sid,'get_managed_roster','send_soap',$soap_transaction);    $ret = $poe_kernel->call('Manager'.$sid,'get_managed_roster');        if ((!(defined($ret)))||($ret eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }    $soap_transaction->return($ret->to_str());}sub jabber_get_message{    my $soap_transaction = $_[ARG0];        my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));       # is this what I have to do?    my $sid    = $params->{$order[0]} if defined $params->{$order[0]};    my $to     = $params->{$order[1]} if defined $params->{$order[1]};    my $type   = $params->{$order[2]} if defined $params->{$order[2]};    my $id     = $params->{$order[3]} if defined $params->{$order[3]};    my $from   = $params->{$order[4]} if defined $params->{$order[4]};    my (@c,$ret);    # grab the message     $ret       = $poe_kernel->call('Manager'.$sid,'get_managed_message',$to,$from,$id,$type);        if ((!(defined($ret)))||($ret eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }    $soap_transaction->return($ret->to_str());}sub jabber_get_presence{    my ($kernel,$heap,$session,$soap_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));           my $sid    = $params->{$order[0]};    my $to     = $params->{$order[1]};    my $from   = $params->{$order[2]};    my (@c,$ret);    if ($punjab_session->check_session($sid)) {        $punjab_session->activity($sid,time());        	# grab the presence		$ret   = $kernel->call('Manager'.$sid,'get_managed_presence',$to,$from);		if ((!(defined($ret)))||($ret eq "")) {	    $soap_transaction->return(FALSE);	    return FALSE;	}		#utf8::downgrade($ret);	$soap_transaction->return($ret);	return;    } else {	$soap_transaction->return(FALSE);    }}sub jabber_get_iq{    my $soap_transaction = $_[ARG0];    my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));       # is this what I have to do?    my $sid    = $params->{$order[0]};    my $iq_id  = $params->{$order[1]};    my (@c,$h_ret,@a_ret,$ret);         $ret = $poe_kernel->call('Manager'.$sid,'get_managed_iq',$iq_id);	        if ((!(defined($ret)))||($ret eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }    # for now just send the hash    $soap_transaction->return($ret->to_str());}sub jabber_check_message{    my $soap_transaction = $_[ARG0];        my $params = $soap_transaction->params();    my @order  = sort(keys(%$params));       # is this what I have to do?    my $sid    = $params->{$order[0]} if defined $params->{$order[0]};    my $to     = $params->{$order[1]} if defined $params->{$order[1]};        my (@c,$ret);    # grab the message     $ret       = $poe_kernel->call('Manager'.$sid,'check_managed_message',$to);        if ((!(defined($ret)))||($ret eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }    $soap_transaction->return($ret->to_str());}sub return_iq() {    my ($kernel,$session,$heap,$new_node, $soap_transaction,$node,$sid) = 	@_[KERNEL, SESSION, HEAP, ARG0 .. ARG3];        my $ret = $kernel->call('Manager'.$sid,'get_managed_iq',$node->attr('id'));        if ((!(defined($ret)))||($ret eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }        # for now just send the hash    $soap_transaction->return($ret->to_str());        #$soap_transaction->return('Return IQ');    }sub return_contact() {    my ($kernel,$session,$heap,$new_node, $soap_transaction,$node,$sid) = 	@_[KERNEL, SESSION, HEAP, ARG0 .. ARG3];        my $attrs;        if ((!(defined($new_node)))||($new_node eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }    $attrs = $new_node->get_attrs();    if (defined $attrs->{'type'} and $attrs->{'type'} eq +IQ_ERROR) {	&debug("ERROR : ".$new_node->to_str());	$soap_transaction->return("error");	return FALSE;    }            if (defined($attrs->{'type'}) and $attrs->{'type'} eq +IQ_RESULT) {	$soap_transaction->return('<contact/>');    }    $soap_transaction->return(FALSE);    }sub return_roster() {    my ($kernel,$session,$heap,$new_node, $soap_transaction,$node,$sid) = 	@_[KERNEL, SESSION, HEAP, ARG0 .. ARG3];        my $ret = $poe_kernel->call('Manager'.$sid,'get_managed_roster');    if ((!(defined($ret)))||($ret eq "")) {	$soap_transaction->return(FALSE);	return FALSE;    }    $new_node->free();        $soap_transaction->return($ret->to_str());}# private functionssub send_soap {    my ($kernel,$session,$heap,$ret_val,$soap_trans) =        @_[KERNEL, SESSION, HEAP, ARG0, ARG1];    my $ret;    if(ref($ret_val) eq 'HASH') {    } elsif(ref($ret_val) eq 'ARRAY') {    } else {        $ret = $ret_val;    }    $soap_trans->return($ret_val);}sub check_timeout(){    my ($kernel,$session,$heap) = 	@_[KERNEL, SESSION, HEAP];    my @keys = keys %{$punjab_session->registry()};    $heap->{'session_keys'} = \@keys;    $kernel->yield('check_timeout_continue');    }sub check_timeout_continue(){    my ($kernel,$session,$heap) = 	@_[KERNEL, SESSION, HEAP];    my $ctime = time();        my $s = pop(@{$heap->{'session_keys'}});        if (not defined $s) {	my $count = keys %{$punjab_session->registry()};	if ($count > 0) {	    $kernel->delay('check_timeout', $heap->{'CONFIG'}->{'idle_check'});	} 	return;    }    if (($ctime - $punjab_session->activity($s))>=$heap->{'CONFIG'}->{'timeout'}) {	$kernel->post($s,'disconnect',$s);	$punjab_session->unregister($s);	    }    $kernel->yield('check_timeout_continue');}1;__END__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -