Changeset 9dc67f4 for protocols


Ignore:
Timestamp:
2015-04-05T21:44:15Z (10 years ago)
Author:
dequis <dx@…>
Children:
71f87ba
Parents:
ac6855b3
git-author:
dequis <dx@…> (05-04-15 20:47:16)
git-committer:
dequis <dx@…> (05-04-15 21:44:15)
Message:

jabber: Register "hipchat" protocol (only minimal support for now)

Another take on the subprotocols idea that, IMO, was a failure.

Unlike the other implementation, this one doesn't touch gtalk/facebook
accounts, it just adds another copy of the "jabber" prpl called "hipchat".

And, based on the protocol name:

  • sets JFLAG_HIPCHAT to jabber_data
  • sets the default value of the "server" setting
  • only includes the oauth setting for jabber-type accounts

This is slightly more "hardcoded" but honestly facebook and gtalk are
just as hardcoded as this.

Copying the prpl is needed because the meaning of the usernames is
completely different (there's no srv lookup stuff either)

Location:
protocols/jabber
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/jabber.c

    rac6855b3 r9dc67f4  
    5656static void jabber_init(account_t *acc)
    5757{
     58        char *default_server = NULL;
    5859        set_t *s;
    5960        char str[16];
    6061
     62        if (strcmp(acc->prpl->name, "hipchat") == 0) {
     63                default_server = "chat.hipchat.com";
     64        } else {
     65                s = set_add(&acc->set, "oauth", "false", set_eval_oauth, acc);
     66        }
     67
    6168        s = set_add(&acc->set, "activity_timeout", "600", set_eval_int, acc);
    62 
    63         s = set_add(&acc->set, "oauth", "false", set_eval_oauth, acc);
    6469
    6570        s = set_add(&acc->set, "display_name", NULL, NULL, acc);
     
    8186        s->flags |= ACC_SET_OFFLINE_ONLY | SET_HIDDEN_DEFAULT;
    8287
    83         s = set_add(&acc->set, "server", NULL, set_eval_account, acc);
     88        s = set_add(&acc->set, "server", default_server, set_eval_account, acc);
    8489        s->flags |= SET_NOSAVE | ACC_SET_OFFLINE_ONLY | SET_NULL_OK;
    8590
     
    121126
    122127        jd->fd = jd->r_inpa = jd->w_inpa = -1;
     128
     129        if (strcmp(acc->prpl->name, "hipchat") == 0) {
     130                jd->flags |= JFLAG_HIPCHAT;
     131        }
    123132
    124133        if (jd->server == NULL) {
     
    656665{
    657666        struct prpl *ret = g_new0(struct prpl, 1);
     667        struct prpl *hipchat = NULL;
    658668
    659669        ret->name = "jabber";
     
    686696
    687697        register_protocol(ret);
    688 }
     698
     699        /* Another one for hipchat, which has completely different logins */
     700        hipchat = g_memdup(ret, sizeof(struct prpl));
     701        hipchat->name = "hipchat";
     702        register_protocol(hipchat);
     703}
  • protocols/jabber/jabber.h

    rac6855b3 r9dc67f4  
    4848
    4949        JFLAG_GTALK =  0x100000,        /* Is Google Talk, as confirmed by iq discovery */
     50        JFLAG_HIPCHAT = 0x200000,       /* Is hipchat, because prpl->name says so */
    5051
    5152        JFLAG_SASL_FB = 0x10000,        /* Trying Facebook authentication. */
Note: See TracChangeset for help on using the changeset viewer.