Esempio n. 1
0
 public String getBankName(SMSMessage message) {
   Matcher m = bankNamePattern.matcher(message.getAddress());
   while (m.find()) {
     return m.group(1);
   }
   return null;
 }
Esempio n. 2
0
 public String getAccountNumber(SMSMessage message) {
   String bankName = getBankName(message);
   if (bankName != null && bankName.length() >= 0) {
     Matcher m = accountNumberPattern.matcher(message.getBody());
     while (m.find()) {
       return "XX" + m.group(1);
     }
   }
   return null;
 }
Esempio n. 3
0
  public boolean isTransactionMessage(SMSMessage message) {
    int sum = 0;
    for (String currency : currencyKeywords)
      sum += message.getBody().toLowerCase().indexOf(currency.toLowerCase()) > 1 ? 2 : 0;
    for (String debit : debitKeywords)
      sum += message.getBody().toLowerCase().indexOf(debit.toLowerCase()) > 1 ? 1 : 0;
    for (String account : accountKeywords)
      sum += message.getBody().toLowerCase().indexOf(account.toLowerCase()) > 1 ? 1 : 0;
    for (String credit : creditKeywords)
      sum += message.getBody().toLowerCase().indexOf(credit.toLowerCase()) > 1 ? 1 : 0;
    for (String loan : loanKeywords)
      sum += message.getBody().toLowerCase().indexOf(loan.toLowerCase()) > 1 ? 1 : 0;
    for (String bill : billKeywords)
      sum += message.getBody().toLowerCase().indexOf(bill.toLowerCase()) > 1 ? 1 : 0;

    return sum > 2;
  }
Esempio n. 4
0
 protected SMSMessage mapCursor(Cursor cursor) {
   SMSMessage message = new SMSMessage();
   message.setBody(cursor.getString(cursor.getColumnIndex("body")));
   message.setSubject(cursor.getString(cursor.getColumnIndex("subject")));
   message.setType(cursor.getString(cursor.getColumnIndex("type")));
   message.setAddress(cursor.getString(cursor.getColumnIndex("address")));
   message.setDate(cursor.getString(cursor.getColumnIndex("date")));
   message.setId(cursor.getString(cursor.getColumnIndex("_id")));
   message.setLocked(cursor.getString(cursor.getColumnIndex("locked")));
   message.setPerson(cursor.getString(cursor.getColumnIndex("person")));
   message.setProtocol(cursor.getString(cursor.getColumnIndex("protocol")));
   message.setRead(cursor.getString(cursor.getColumnIndex("read")));
   message.setReply_path_present(cursor.getString(cursor.getColumnIndex("reply_path_present")));
   message.setStatus(cursor.getString(cursor.getColumnIndex("status")));
   message.setThread_id(cursor.getString(cursor.getColumnIndex("thread_id")));
   message.setService_center(cursor.getString(cursor.getColumnIndex("service_center")));
   return message;
 }
  /**
   * Open HTTP connection and send SMS
   *
   * @param SMSMessage
   * @return SMSResponse
   * @throws IOException
   * @throws SQLException
   * @throws IllegalArgumentException
   * @throws UnsupportedEncodingException
   */
  public SMSResponse push(SMSMessage oMsg)
      throws IOException, SQLException, IllegalArgumentException, UnsupportedEncodingException {

    if (DebugFile.trace) {
      DebugFile.writeln("Begin SMSPushRealidadFutura.push([SMSMessage])");
      DebugFile.incIdent();
    }

    SMSResponse oRsp;
    BufferedReader oRdr;

    String sErr, sLin, sFrm = "";
    if (oPrp.getProperty("from") != null) sFrm = "&from=" + oPrp.getProperty("from");

    String sMsisdn = oMsg.msisdnNumber();
    if (sMsisdn.startsWith("+")) sMsisdn = sMsisdn.substring(1);

    String sQry =
        sUrl
            + "username="******"&password="******"&to="
            + sMsisdn
            + "&text="
            + URLEncoder.encode(oMsg.textBody(), "ISO8859_1");

    if (DebugFile.trace) {
      DebugFile.writeln(
          "new URL("
              + sUrl
              + "username="******"&password=..."
              + sFrm
              + "&to="
              + sMsisdn
              + "&text=...)");
    }

    URL oUrl = new URL(sQry);
    HttpURLConnection oCon = (HttpURLConnection) oUrl.openConnection();
    int iStatusCode = oCon.getResponseCode();

    if (DebugFile.trace) {
      DebugFile.writeln("response code is " + String.valueOf(iStatusCode));
    }

    switch (iStatusCode) {
      case 200:
        oRdr = new BufferedReader(new InputStreamReader(oCon.getInputStream(), "UTF-8"));
        sLin = oRdr.readLine();
        while (null != sLin) {
          sLin = oRdr.readLine();
        } // wend
        oRdr.close();
        oRsp =
            new SMSResponse(
                oMsg.messageId(),
                new Date(),
                SMSResponse.ErrorCode.NONE,
                SMSResponse.StatusCode.POSITIVE_ACK,
                "");
        break;
      case 422:
        SMSResponse.ErrorCode eErr = SMSResponse.ErrorCode.UNKNOWN_ERROR;
        oRdr = new BufferedReader(new InputStreamReader(oCon.getErrorStream(), "UTF-8"));
        sErr = "";
        sLin = oRdr.readLine();
        while (null != sLin) {
          if (sLin.indexOf("número de móvil válido") > 0)
            eErr = SMSResponse.ErrorCode.INVALID_MSISDN;
          if (sLin.indexOf("es demasiado largo") > 0) eErr = SMSResponse.ErrorCode.TEXT_TOO_LONG;
          if (sLin.indexOf("Usuario o contraseña erróneos") > 0)
            eErr = SMSResponse.ErrorCode.AUTHENTICATION_FAILURE;
          sErr += sLin + "\n";
          sLin = oRdr.readLine();
        } // wend
        oRdr.close();
        oRsp =
            new SMSResponse(
                oMsg.messageId(),
                new Date(),
                eErr,
                SMSResponse.StatusCode.NEGATIVE_FAILED_DELIVERY,
                sErr);
        break;
      default:
        throw new IOException("Invalid HTTP response Code " + String.valueOf(iStatusCode));
    } // end switch

    oCon.disconnect();

    if (DebugFile.trace) {
      DebugFile.decIdent();
      DebugFile.writeln("End SMSPushRealidadFutura.push() : " + oRsp.toString());
    }

    return oRsp;
  } // push