void *_ortc_saveAuthentication(void *ptr){
  ortc_authenticationParams *p = (ortc_authenticationParams*)ptr;
  char *response, *url, *appKey;

  if(p->isExtended){
    if(p->isCluster){
      if(_ortc_getBalancer(p->url, p->appKey, p->context->verifyPeerCert, &url)<0){
	p->callback(p->context, url, NULL);
	free(url);
	url = NULL;
      }
    } else {
      url = p->url;
    }
    appKey = p->appKey;    
  } else {
    url = p->context->server;
    appKey = p->context->appKey;
  }
  if(url){
    int ret = _ortc_saveAuthRest(url, p->authToken, p->isPrivate, appKey, p->ttl, p->privateKey, p->permissions, p->sizeOfChannelPermissions, &response);
    switch(ret){
    case 1:
      p->callback(p->context, NULL, response);
      break;
    default:
      p->callback(p->context, response, NULL);
    }
    free(response);
  }
  free(p);
  pthread_detach(pthread_self());
  return 0;
}
Ejemplo n.º 2
0
void *_ortc_disablePresence(void *ptr){
  ortc_presenceParams *p = (ortc_presenceParams*)ptr;
  char *response, *url, *appKey;

  if(p->isExtended){
    if(p->isCluster){
      if(_ortc_getBalancer(p->url, &url)<0){
	p->callbackCmd(p->context, p->channel, url, NULL);
	free(url);
	url = NULL;
      }
    } else {
      url = p->url;
    }
    appKey = p->appKey;
  } else {
    url = p->context->server;
    appKey = p->context->appKey;
  }
  if(url){
    int ret = _ortc_disablePresenceRest(url, appKey, p->privateKey, p->channel, &response);
    _ortc_call_presence_callback(p->context, ret, p->channel, response, p->callbackCmd);
    if(p->isExtended && p->isCluster)
      free(url);
  }
  free(p);
  pthread_detach(pthread_self());
  return 0;
}
Ejemplo n.º 3
0
void *_ortc_presence(void *ptr){
  ortc_presenceParams *p = (ortc_presenceParams*)ptr;
  char *response, *url, *appKey, *authToken;

  if(p->isExtended){
    if(p->isCluster){
      if(_ortc_getBalancer(p->url, &url)<0){
	p->callbackGet(p->context, p->channel, url, NULL);
	free(url);
	url = NULL;
      }
    } else {
      url = p->url;
    }
    appKey = p->appKey;
    authToken = p->authToken;
  } else {
    url = p->context->server;
    appKey = p->context->appKey;
    authToken = p->context->authToken;
  }
  if(url){
    int ret = _ortc_presenceRest(url, appKey, authToken, p->channel, &response);
    if(ret < 1){
      switch(ret){
      case -3:
	p->callbackGet(p->context, p->channel, "malloc() failed!", NULL);
	break;
      case -2:
	p->callbackGet(p->context, p->channel, "Can not init curl!", NULL);
	break;
      case -1:
	p->callbackGet(p->context, p->channel, "Can not connect to server!", NULL);
	break;
      case 0:
	p->callbackGet(p->context, p->channel, response, NULL);
	free(response);
	break;
      }
    } else {
      ortc_presenceData *presence =  _ortc_parsePresence(response);
      if(presence == NULL)
	p->callbackGet(p->context, p->channel, "Error parsing a server response", NULL);
      else {
	p->callbackGet(p->context, p->channel, NULL, presence);
	_ortc_freePresence(presence);
      }
      free(response);
    }    
  }
  free(p);
  pthread_detach(pthread_self());
  return 0;
}