The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::Jabber::Query::Filter::Rule - Jabber IQ Filter Rule Module

SYNOPSIS

  Net::Jabber::Query::Filter::Rule is a companion to the 
  Net::Jabber::Query::Filter module.  It provides the user a simple 
  interface to set and retrieve all parts of a Jabber Filter Rule.

DESCRIPTION

  To initialize the Rule with a Jabber <iq/> and then access the filter
  query you must pass it the XML::Parser Tree array from the 
  Net::Jabber::Client module.  In the callback function for the iq:

    use Net::Jabber;

    sub iq {
      my $iq = new Net::Jabber::IQ(@_);
      my $filter = $iq->GetQuery();
      my @rules = $filter->GetRules();
      foreach $rule (@rules) {
        ...
      }
      .
      .
      .
    }

  You now have access to all of the retrieval functions available below.

  To create a new IQ Filter Rule to send to the server:

    use Net::Jabber;

    $Client = new Net::Jabber::Client();
    ...

    $iq = new Net::Jabber::IQ();
    $filter = $iq->NewQuery("jabber:iq:filter");
    $rule = $filter->AddRule();
    ...

    $client->Send($iq);

  Using $rule you can call the creation functions below to populate the 
  tag before sending it.

  For more information about the array format being passed to the CallBack
  please read the Net::Jabber::Client documentation.

Retrieval functions

    %conditions  = $rule->GetConditions();
    $body        = $rule->GetBody();
    $from        = $rule->GetFrom();
    $resource    = $rule->GetResource();
    $show        = $rule->GetShow();
    $size        = $rule->GetSize();
    $subject     = $rule->GetSubject();
    $time        = $rule->GetTime();
    $type        = $rule->GetType();
    $unavailable = $rule->GetUnavailable();

    %actions     = $rule->GetActions();
    $drop        = $rule->GetDrop();
    $edit        = $rule->GetEdit();
    $error       = $rule->GetError();
    $reply       = $rule->GetReply();
    $forward     = $rule->GetForward();
    $offline     = $rule->GetOffline();

    $continue    = $rule->GetContinue();

Creation functions

    $rule->SetRule(unavailable=>1,
                   offline=>1);
    $rule->SetRule(from=>"bob\@jabber.org",
                   forward=>"me\@jabber.org/Pager");
    $rule->SetRule(from=>"ex-wife\@jabber.org",
                   reply=>"I don't want to talk you...");

    $rule->SetBody("free");                              # Future condition
    $rule->SetFrom("bob");                               # Future condition
    $rule->SetResource("Home");                          # Future condition
    $rule->SetShow("dnd");                               # Future condition
    $rule->SetSize(1024);                                # Future condition
    $rule->SetSubject("sex");                            # Future condition
    $rule->SetTime("20000502T01:01:01");                 # Future condition
    $rule->SetType("chat");                              # Future condition
    $rule->SetUnavailable();

    $rule->SetDrop();
    $rule->SetEdit();                                    # Future Action
    $rule->SetError("This JID is not a valid address");
    $rule->SetForward("foo\@bar.com/FooBar");
    $rule->SetOffline();
    $rule->SetReply("I don't want to talk you...");

    $rule->SetContinue();

Defined functions

    $test = $rule->DefinedBody();
    $test = $rule->DefinedFrom();
    $test = $rule->DefinedResource();
    $test = $rule->DefinedShow();
    $test = $rule->DefinedSize();
    $test = $rule->DefinedSubject();
    $test = $rule->DefinedTime();
    $test = $rule->DefinedType();
    $test = $rule->DefinedUnavailable();

    $test = $rule->DefinedDrop();
    $test = $rule->DefinedEdit();
    $test = $rule->DefinedError();
    $test = $rule->DefinedForward();
    $test = $rule->DefinedOffline();
    $test = $rule->DefinedReply();

    $test = $rule->DefinedContinue();

METHODS

Retrieval functions

  GetConditions() - returns a hash with the condition name and the value
                    of the tag as the value in the hash.  For example:

                      $conditions{unavailable} = 1;
                      $conditions{resource} = "Pager";
                      $conditions{type} = "chat";

  GetBody() - returns the string that the <rule/> uses to match in the body
              for this condition.
              **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetFrom() - returns the string that the <rule/> uses to match in the from
              for this condition.
              **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetResource() - returns the string that the <rule/> uses to match in the
                  resource of the to for this condition.
                  **** This condition is still under development ****
                  **** in mod_filter.                            ****

  GetShow() - returns the string that the <rule/> uses to match in the show
              for this condition.
              **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetSize() - returns the string that the <rule/> uses to match in the size
              for this condition.
              **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetSubject() - returns the string that the <rule/> uses to match in the
                 subject for this condition.
                 **** This condition is still under development ****
                 **** in mod_filter.                            ****

  GetTime() - returns the string that the <rule/> uses to match the time
              for this condition.
              **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetType() - returns the string that the <rule/> uses to match the type
              for this condition.
              **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetUnavailable() - returns 1 if this condition is set, 0 otherwise.
                     This condition is used to specify that you are
                     unavailable.

  GetActions() - returns a hash with the condition name and the value
                 of the tag as the value in the hash.  For example:
    
                    $actions{reply} = "I'm not in the office right now.";
                    $actions{continue} = 1;

  GetDrop() - returns 1 if the message is to be dropped, 0 otherwise.

  GetEdit() - **** This condition is still under development ****
              **** in mod_filter.                            ****

  GetError() - returns the string that the <rule/> uses to return in
               error message.

  GetReply() - returns the string that is sent for this action.

  GetForward() - returns the JID of the account to forward the message
                 to for this action.

  GetOffline() - returns 1 if the message is to go to the offline message
                 list, 0 otherwise.

  GetContinue() - returns 1 if there is a <continue/> tag in the <rule/>,
                  0 otherwise.  This allows you to chain multiple actions
                  in order for one set of conditions.

Creation functions

  SetRule(body=>string,      - set multiple fields in the <rule/>
          from=>string,        at one time.  This is a cumulative
          resource=>string,    and overwriting action.  If you
          show=>string,        set the "body" twice, the second
          size=>string,        setting is what is used.  If you set
          time=>string,        the show, and then set the
          type=>string,        offline then both will be in the
          unavailable=>0|1,    <rule/> tag.  For valid settings
          edit=>string,        read the specific Set functions below.
          error=>string,       
          forward=>string,
          offline=>0|1,
          reply=>string,
          continue=>0|1)

  SetBody(string) - sets the string that the <rule/> uses to match against
                    in the body.

  SetFrom(string) - sets the string that the <rule/> uses to match against
                    in the from.

  SetResource(string) - sets the string that the <rule/> uses to match
                        against in the resource of the from JID.

  SetShow(string) - sets the string that the <rule/> uses to match against
                    in the show.

  SetSize(string) - sets the string that the <rule/> uses to match against
                    for the size of the message.

  SetSubject(string) - sets the string that the <rule/> uses to match against
                       in the subject.

  SetTime(string) - sets the string that the <rule/> uses to match against
                    for the time the message is received.

  SetType(string) - sets the string that the <rule/> uses to match against
                    for the type of message.

  SetUnavailable() - adds an <unavailable/> to the <rule/> to match if you
                     are offline.

  SetDrop() - sets that the <rule/> should drop the message from the queue.

  SetEdit(string) - sets the string that the <rule/> uses to execute the edit
                    action on.

  SetError(string) - sets the string that goes into the error message for
                     this action.

  SetForward(string) - sets the JID that the message is forwarded to for
                       this action.

  SetOffline() - sets that the message goes into the offline queue.

  SetReply(string) - sets the string that goes into the reply message for
                     this action.

  SetContinue() - sets that this <rule/> is continued in the next <rule/>.

Defined functions

  DefinedBody() - returns 1 if there is a <body/> tag in the <rule/>,
                  0 otherwise.

  DefinedFrom() - returns 1 if there is a <from/> tag in the <rule/>,
                  0 otherwise.

  DefinedResource() - returns 1 if there is a <resource/> tag in the 
                      <rule/>, 0 otherwise.

  DefinedShow() - returns 1 if there is a <show/> tag in the <rule/>,
                  0 otherwise.

  DefinedSize() - returns 1 if there is a <size/> tag in the <rule/>,
                  0 otherwise.

  DefinedSubject() - returns 1 if there is a <subject/> tag in the 
                     <rule/>, 0 otherwise.

  DefinedTime() - returns 1 if there is a <time/> tag in the <rule/>,
                  0 otherwise.

  DefinedType() - returns 1 if there is a <type/> tag in the <rule/>,
                  0 otherwise.

  DefinedUnavailable() - returns 1 if there is a <unavailable/> tag 
                         in the <rule/>, 0 otherwise.

  DefinedDrop() - returns 1 if there is a <drop/> tag in the <rule/>,
                  0 otherwise.

  DefinedEdit() - returns 1 if there is a <edit/> tag in the <rule/>,
                  0 otherwise.

  DefinedError() - returns 1 if there is a <error/> tag in the <rule/>,
                  0 otherwise.

  DefinedForward() - returns 1 if there is a <forward/> tag in the <rule/>,
                  0 otherwise.

  DefinedOffline() - returns 1 if there is a <offline/> tag in the <rule/>,
                  0 otherwise.

  DefinedReply() - returns 1 if there is a <reply/> tag in the <rule/>,
                  0 otherwise.

  DefinedContinue() - returns 1 if there is a <continue/> tag in the <rule/>,
                  0 otherwise.

AUTHOR

By Ryan Eatmon in June of 2000 for http://jabber.org..

COPYRIGHT

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.