Example #1
0
int AIO_OfxGroup_BUYMF_StartTag(AIO_OFX_GROUP *g,
				 const char *tagName) {
  AIO_OFX_GROUP_BUYMF *xg;
  GWEN_XML_CONTEXT *ctx;
  AIO_OFX_GROUP *gNew=NULL;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_BUYMF, g);
  assert(xg);

  ctx=AIO_OfxGroup_GetXmlContext(g);

  if (strcasecmp(tagName, "BUYTYPE")==0 ||
      strcasecmp(tagName, "SELLTYPE")==0) {
        /* TODO */
  }
  else if (strcasecmp(tagName, "INVBUY")==0 ||
           strcasecmp(tagName, "INVSELL")==0) {
    gNew=AIO_OfxGroup_INVBUY_new(tagName, g, ctx);
    
  }
  else {
    DBG_WARN(AQBANKING_LOGDOMAIN,
	     "Ignoring tag [%s]", tagName);
    free(xg->currentElement);
    xg->currentElement=strdup(tagName);
  }

  if (gNew) {
    AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew);
    GWEN_XmlCtx_IncDepth(ctx);
  }

  return 0;
}
Example #2
0
int AIO_OfxGroup_Document_StartTag(AIO_OFX_GROUP *g, const char *tagName) {
  AIO_OFX_GROUP *gNew=NULL;
  GWEN_XML_CONTEXT *ctx;

  assert(g);

  ctx=AIO_OfxGroup_GetXmlContext(g);

  if (strcasecmp(tagName, "OFX")==0)
    gNew=AIO_OfxGroup_OFX_new(tagName, g, ctx);
  else if (strcasecmp(tagName, "OFC")==0) {
    gNew=AIO_OfxGroup_OFX_new(tagName, g, ctx);
  }
  else {
    DBG_WARN(AQBANKING_LOGDOMAIN,
	     "Ignoring group [%s]", tagName);
    gNew=AIO_OfxGroup_Ignore_new(tagName, g, ctx);
  }

  if (gNew) {
    AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew);
    GWEN_XmlCtx_IncDepth(ctx);
  }

  return 0;
}
Example #3
0
int AIO_OfxGroup_BUYMF_EndSubGroup(AIO_OFX_GROUP *g, AIO_OFX_GROUP *sg) {
  AIO_OFX_GROUP_BUYMF *xg;
  const char *s;
  GWEN_XML_CONTEXT *ctx;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_BUYMF, g);
  assert(xg);

  ctx=AIO_OfxGroup_GetXmlContext(g);
  assert(ctx);

  s=AIO_OfxGroup_GetGroupName(sg);
  if (strcasecmp(s, "INVBUY")==0 ||
      strcasecmp(s, "INVSELL")==0) {
    AB_TRANSACTION *t;

    t=AIO_OfxGroup_INVBUY_TakeTransaction(sg);
    if (t) {
      DBG_INFO(AQBANKING_LOGDOMAIN, "Adding transaction");
      xg->transaction=t;
        /*TODO*/
    }
  }

  return 0;
}
Example #4
0
int AIO_OfxGroup_STATUS_AddData(AIO_OFX_GROUP *g, const char *data)
{
  AIO_OFX_GROUP_STATUS *xg;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_STATUS, g);
  assert(xg);

  if (xg->currentElement) {
    GWEN_BUFFER *buf;
    int rv;
    const char *s;

    buf=GWEN_Buffer_new(0, strlen(data), 0, 1);
    rv=AIO_OfxXmlCtx_SanitizeData(AIO_OfxGroup_GetXmlContext(g), data, buf);
    if (rv<0) {
      DBG_INFO(AQBANKING_LOGDOMAIN, "here (%d)", rv);
      GWEN_Buffer_free(buf);
      return rv;
    }
    s=GWEN_Buffer_GetStart(buf);
    if (*s) {
      DBG_INFO(AQBANKING_LOGDOMAIN,
               "AddData: %s=[%s]", xg->currentElement, s);
      if (strcasecmp(xg->currentElement, "CODE")==0) {
        if (1!=sscanf(s, "%d", &xg->code)) {
          DBG_ERROR(AQBANKING_LOGDOMAIN,
                    "Bad data for element [%s]",
                    xg->currentElement);
          GWEN_Buffer_free(buf);
          return GWEN_ERROR_BAD_DATA;
        }
      }
      else if (strcasecmp(xg->currentElement, "SEVERITY")==0) {
        free(xg->severity);
        xg->severity=strdup(GWEN_Buffer_GetStart(buf));
      }
      else {
        DBG_INFO(AQBANKING_LOGDOMAIN,
                 "Ignoring data for unknown element [%s]",
                 xg->currentElement);
      }
    }
    GWEN_Buffer_free(buf);
  }

  return 0;
}
Example #5
0
int AIO_OfxGroup_ACCTINFO_EndSubGroup(AIO_OFX_GROUP *g, AIO_OFX_GROUP *sg)
{
  AIO_OFX_GROUP_ACCTINFO *xg;
  const char *s;
  GWEN_XML_CONTEXT *ctx;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_ACCTINFO, g);
  assert(xg);

  ctx=AIO_OfxGroup_GetXmlContext(g);
  assert(ctx);

  s=AIO_OfxGroup_GetGroupName(sg);
  if (strcasecmp(s, "BANKACCTINFO")==0 ||
      strcasecmp(s, "CCACCTINFO")==0 ||
      strcasecmp(s, "BPACCTINFO")==0 ||
      strcasecmp(s, "INVACCTINFO")==0) {
    const char *s;

    s=AIO_OfxGroup_BANKACCTINFO_GetBankId(sg);
    free(xg->bankId);
    if (s)
      xg->bankId=strdup(s);
    else
      xg->bankId=NULL;

    s=AIO_OfxGroup_BANKACCTINFO_GetAccId(sg);
    free(xg->accId);
    if (s)
      xg->accId=strdup(s);
    else
      xg->accId=NULL;

    s=AIO_OfxGroup_BANKACCTINFO_GetAccType(sg);
    free(xg->accType);
    if (s)
      xg->accType=strdup(s);
    else
      xg->accType=NULL;
  }

  return 0;
}
Example #6
0
int AIO_OfxGroup_ACCTINFO_StartTag(AIO_OFX_GROUP *g,
                                   const char *tagName)
{
  AIO_OFX_GROUP_ACCTINFO *xg;
  GWEN_XML_CONTEXT *ctx;
  AIO_OFX_GROUP *gNew=NULL;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_ACCTINFO, g);
  assert(xg);

  ctx=AIO_OfxGroup_GetXmlContext(g);

  free(xg->currentElement);
  xg->currentElement=NULL;

  if (strcasecmp(tagName, "DESC")==0) {
    xg->currentElement=strdup(tagName);
  }
  else if (strcasecmp(tagName, "BANKACCTINFO")==0 ||
           strcasecmp(tagName, "CCACCTINFO")==0 ||
           strcasecmp(tagName, "BPACCTINFO")==0 ||
           strcasecmp(tagName, "INVACCTINFO")==0) {
    gNew=AIO_OfxGroup_BANKACCTINFO_new(tagName, g, ctx);
  }
  else if (strcasecmp(tagName, "DESC")==0) {
    xg->currentElement=strdup(tagName);
  }
  else {
    DBG_WARN(AQBANKING_LOGDOMAIN,
             "Ignoring tag [%s]", tagName);
    xg->currentElement=strdup(tagName);
  }

  if (gNew) {
    AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew);
    GWEN_XmlCtx_IncDepth(ctx);
  }

  return 0;
}
Example #7
0
int AIO_OfxGroup_ACCTINFO_AddData(AIO_OFX_GROUP *g, const char *data)
{
  AIO_OFX_GROUP_ACCTINFO *xg;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_ACCTINFO, g);
  assert(xg);

  if (xg->currentElement) {
    GWEN_BUFFER *buf;
    int rv;
    const char *s;

    buf=GWEN_Buffer_new(0, strlen(data), 0, 1);
    rv=AIO_OfxXmlCtx_SanitizeData(AIO_OfxGroup_GetXmlContext(g), data, buf);
    if (rv<0) {
      DBG_INFO(AQBANKING_LOGDOMAIN, "here (%d)", rv);
      GWEN_Buffer_free(buf);
      return rv;
    }
    s=GWEN_Buffer_GetStart(buf);
    if (*s) {
      DBG_INFO(AQBANKING_LOGDOMAIN,
               "AddData: %s=[%s]", xg->currentElement, s);
      if (strcasecmp(xg->currentElement, "DESC")==0) {
        free(xg->description);
        xg->description=strdup(s);
      }
      else {
        DBG_INFO(AQBANKING_LOGDOMAIN,
                 "Ignoring data for unknown element [%s]",
                 xg->currentElement);
      }
    }
    GWEN_Buffer_free(buf);
  }

  return 0;
}
Example #8
0
int AIO_OfxGroup_INVACC_AddData(AIO_OFX_GROUP *g, const char *data)
{
  AIO_OFX_GROUP_INVACC *xg;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_INVACC, g);
  assert(xg);

  if (xg->currentElement) {
    GWEN_BUFFER *buf;
    int rv;
    const char *s;

    buf=GWEN_Buffer_new(0, strlen(data), 0, 1);
    rv=AIO_OfxXmlCtx_SanitizeData(AIO_OfxGroup_GetXmlContext(g), data, buf);
    if (rv<0) {
      DBG_INFO(AQBANKING_LOGDOMAIN, "here (%d)", rv);
      GWEN_Buffer_free(buf);
      return rv;
    }
    s=GWEN_Buffer_GetStart(buf);
    if (*s) {
      DBG_INFO(AQBANKING_LOGDOMAIN, "AddData: %s=[%s]", xg->currentElement, s);
      if (strcasecmp(xg->currentElement, "BROKERID")==0 ||
          strcasecmp(xg->currentElement, "BANKID")==0)
        AIO_OfxGroup_INVACC_SetBrokerId(g, GWEN_Buffer_GetStart(buf));
      else if (strcasecmp(xg->currentElement, "ACCTID")==0)
        AIO_OfxGroup_INVACC_SetAccId(g, GWEN_Buffer_GetStart(buf));
      else {
        DBG_INFO(AQBANKING_LOGDOMAIN, "Ignoring data for unknown element [%s]", xg->currentElement);
      }
    }
    GWEN_Buffer_free(buf);
  }
  return 0;
}