Commit ce7333dc authored by Summer Stapleton's avatar Summer Stapleton Committed by Makayla Shepherd
Browse files

Trying to figure out getting the Json back

parent cc0afc7c
Loading
Loading
Loading
Loading
+128 −95
Original line number Diff line number Diff line
@@ -154,18 +154,26 @@ namespace Isis {
   */
  void SpiceClient::replyFinished(QNetworkReply *reply) {
    p_rawResponse = new QString(QString(reply->readAll()));
    //qDebug() << p_rawResponse;
    // Decode the response
    p_response = new QString();
    // p_response = new QString();
    p_response = new QJsonObject();

    try {
      *p_response = QString(
          QByteArray::fromHex(QByteArray(p_rawResponse->toLatin1())).constData());
      // *p_response = QString(
      //     QByteArray::fromHex(QByteArray(p_rawResponse->toLatin1())).constData());

      //qDebug() << "p_resonse:  "<<*p_response; 
      // QJsonDocument document;
      QByteArray decoded = QByteArray::fromHex(QByteArray(p_rawResponse->toLatin1())).constData();
      QJsonDocument doc = QJsonDocument::fromJson(decoded);
      *p_response = doc.object();

      // QFile finalOutput("output.txt");
      // finalOutput.open(QIODevice::WriteOnly);
      // finalOutput.write( document.toJson() );
      // finalOutput.close();

      // Make sure we can get the log out of it before continuing
      applicationLog();
      // applicationLog();
    }
    catch(IException &) {
      p_error = new QString();
@@ -349,14 +357,14 @@ namespace Isis {



QJsonValue SpiceClient::tableToJson(QString file) {
  QFile tableFile(file);
  tableFile.open(QIODevice::ReadOnly);
  QByteArray data = tableFile.readAll();
  tableFile.close();

  return QJsonValue::fromVariant(data.toHex().constData());
}
// QString SpiceClient::jsonToTable(QJsonValue val) {
//   QFile tableFile(file);
//   tableFile.open(QIODevice::ReadOnly);
//   QByteArray data = tableFile.readAll();
//   tableFile.close();
//
//   return QJsonValue::toVariant(data.toHex().constData());
// }


  /**
@@ -365,7 +373,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
  void SpiceClient::authenticationRequired(QNetworkReply *, QAuthenticator *) {
    if(!p_response) {
      p_rawResponse = new QString();
      p_response = new QString();
      p_response = new QJsonObject();
    }

    *p_error = "Server expects authentication which is not currently ";
@@ -380,7 +388,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
  void SpiceClient::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *) {
    if(!p_response) {
      p_rawResponse = new QString();
      p_response = new QString();
      p_response = new QJsonObject();
    }

    *p_error = "Server expects authentication which is not currently ";
@@ -397,7 +405,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
                              const QList<QSslError> & err) {
    if(!p_response) {
      p_rawResponse = new QString();
      p_response = new QString();
      p_response = new QJsonObject();
    }

    *p_error = "Server expects authentication which is not currently ";
@@ -413,28 +421,32 @@ QJsonValue SpiceClient::tableToJson(QString file) {
   *
   * @return QDomElement
   */
  QDomElement SpiceClient::rootXMLElement() {
    if(!p_response || !p_rawResponse) {
      QString error = "No server response available";
      throw IException(IException::Io, error, _FILEINFO_);
    }

    QDomDocument document;
    QString errorMsg;
    int errorLine, errorCol;

    if(!p_response->isEmpty() &&
        document.setContent(QString(p_response->toLatin1()),
                            &errorMsg, &errorLine, &errorCol)) {
      return document.firstChild().toElement();
    }
    else {
      QString msg = "Unexpected response from spice server [";
      msg += *p_rawResponse;
      msg += "]";
      throw IException(IException::Io, msg, _FILEINFO_);
    }
  }
  // QDomElement SpiceClient::rootXMLElement() {
  //   if(!p_response || !p_rawResponse) {
  //     QString error = "No server response available";
  //     throw IException(IException::Io, error, _FILEINFO_);
  //   }
  //
  //   QDomDocument document;
  //   QString errorMsg;
  //   int errorLine, errorCol;
  //
  //   if(!p_response->isEmpty() &&
  //       document.setContent(QString(p_response->toLatin1()),
  //                           &errorMsg, &errorLine, &errorCol)) {
  //     return document.firstChild().toElement();
  //   }
  //   else if (p_response->isEmpty()){
  //     QString msg = "Empty response returned from server.";
  //     throw IException(IException::Io, msg, _FILEINFO_);
  //   }
  //   else {
  //     QString msg = "Unexpected response from spice server [";
  //     msg += *p_rawResponse;
  //     msg += "]";
  //     throw IException(IException::Io, msg, _FILEINFO_);
  //   }
  // }


  /**
@@ -471,11 +483,14 @@ QJsonValue SpiceClient::tableToJson(QString file) {
  PvlGroup SpiceClient::kernelsGroup() {
    checkErrors();

    QDomElement root = rootXMLElement();
    QDomElement kernelsLabel = findTag(root, "kernels_label");
    QString kernelsLabels = elementContents(kernelsLabel);
    // QDomElement root = rootXMLElement();
    // QDomElement kernelsLabel = findTag(root, "kernels_label");
    // QString kernelsLabels = elementContents(kernelsLabel);
    //
    // QString unencoded(QByteArray::fromHex(kernelsLabels.toLatin1()).constData());

    QString unencoded(QByteArray::fromHex(kernelsLabels.toLatin1()).constData());
    QString kernVal = p_response->value("Kernels Label").toVariant().toString();
    QString unencoded(QByteArray::fromHex(kernVal.toLatin1()).constData());

    stringstream pvlStream;
    pvlStream << unencoded;
@@ -495,19 +510,22 @@ QJsonValue SpiceClient::tableToJson(QString file) {
  PvlGroup SpiceClient::applicationLog() {
    checkErrors();

    QDomElement root = rootXMLElement();
    QDomElement logLabel = findTag(root, "application_log");
    QString logLabels = elementContents(logLabel);

    QString unencoded(QByteArray::fromHex(logLabels.toLatin1()).constData());

    stringstream pvlStream;
    pvlStream << unencoded;

    Pvl labels;
    pvlStream >> labels;
    PvlGroup group("group");
    return group;

    return labels.findGroup("Kernels", Pvl::Traverse);
    // QDomElement root = rootXMLElement();
    // QDomElement logLabel = findTag(root, "application_log");
    // QString logLabels = elementContents(logLabel);
    //
    // QString unencoded(QByteArray::fromHex(logLabels.toLatin1()).constData());
    //
    // stringstream pvlStream;
    // pvlStream << unencoded;
    //
    // Pvl labels;
    // pvlStream >> labels;
    //
    // return labels.findGroup("Kernels", Pvl::Traverse);
  }


@@ -533,7 +551,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
   * @return Table*
   */
  Table *SpiceClient::pointingTable() {
    return readTable("instrument_pointing", "InstrumentPointing");
    return readTable("Instrument Pointing", "InstrumentPointing");
  }


@@ -544,7 +562,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
   * @return Table*
   */
  Table *SpiceClient::positionTable() {
    return readTable("instrument_position", "InstrumentPosition");
    return readTable("Instrument Position", "InstrumentPosition");
  }


@@ -555,7 +573,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
   * @return Table*
   */
  Table *SpiceClient::bodyRotationTable() {
    return readTable("body_rotation", "BodyRotation");
    return readTable("Body Rotation", "BodyRotation");
  }


@@ -563,7 +581,7 @@ QJsonValue SpiceClient::tableToJson(QString file) {
   * This returns the table given by the server.
   */
  Table *SpiceClient::sunPositionTable() {
    return readTable("sun_position", "SunPosition");
    return readTable("Sun Position", "SunPosition");
  }


@@ -591,19 +609,22 @@ QJsonValue SpiceClient::tableToJson(QString file) {
  PvlObject SpiceClient::naifKeywordsObject() {
    checkErrors();

    QDomElement root = rootXMLElement();
    QDomElement kernelsLabel = findTag(root, "kernels_label");
    QString kernelsLabels = elementContents(kernelsLabel);

    QString unencoded(QByteArray::fromHex(kernelsLabels.toLatin1()).constData());

    stringstream pvlStream;
    pvlStream << unencoded;
    PvlObject ob("object");
    return ob;

    Pvl labels;
    pvlStream >> labels;

    return labels.findObject("NaifKeywords");
    // QDomElement root = rootXMLElement();
    // QDomElement kernelsLabel = findTag(root, "kernels_label");
    // QString kernelsLabels = elementContents(kernelsLabel);
    //
    // QString unencoded(QByteArray::fromHex(kernelsLabels.toLatin1()).constData());
    //
    // stringstream pvlStream;
    // pvlStream << unencoded;
    //
    // Pvl labels;
    // pvlStream >> labels;
    //
    // return labels.findObject("NaifKeywords");
  }


@@ -622,31 +643,43 @@ QJsonValue SpiceClient::tableToJson(QString file) {
  }


  Table *SpiceClient::readTable(QString xmlName, QString tableName) {
  Table *SpiceClient::readTable(QString jsonName, QString tableName) {
    checkErrors();

    QDomElement root = rootXMLElement();
    QDomElement tablesTag = findTag(root, "tables");
    QDomElement pointingTag = findTag(tablesTag, xmlName);
    QString encodedString = elementContents(pointingTag);

    QByteArray encodedArray;
    for (int i = 0; i < encodedString.size(); i++) {
      encodedArray.append(encodedString.data()[i]);
    }

    QByteArray unencodedArray(QByteArray::fromHex(encodedArray));
    QString value = p_response->value(jsonName).toVariant().toString();
    QString decoded(QByteArray::fromHex(value.toLatin1()).constData());

    stringstream tableStream;
    tableStream.write(unencodedArray.data(), unencodedArray.size());
    QFile finalOutput(tableName + ".txt");
    finalOutput.open(QIODevice::WriteOnly);
    finalOutput.write(decoded.toLatin1());
    finalOutput.close();

    Pvl lab;
    tableStream >> lab;

    Table *table = new Table(tableName);
    table->Read(lab, tableStream);
    Table *table = new Table(decoded);

    return table;

    // QDomElement root = rootXMLElement();
    // QDomElement tablesTag = findTag(root, "tables");
    // QDomElement pointingTag = findTag(tablesTag, xmlName);
    // QString encodedString = elementContents(pointingTag);

    // QByteArray encodedArray;
    // for (int i = 0; i < encodedString.size(); i++) {
    //   encodedArray.append(encodedString.data()[i]);
    // }
    //
    // QByteArray unencodedArray(QByteArray::fromHex(encodedArray));
    //
    // stringstream tableStream;
    // tableStream.write(unencodedArray.data(), unencodedArray.size());
    //
    // Pvl lab;
    // tableStream >> lab;
    //
    // Table *table = new Table(tableName);
    // table->Read(lab, tableStream);
    //
    // return table;

  }
};
+3 −3
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ namespace Isis {
    private:
      static QString yesNo(bool boolVal);
      Table *readTable(QString xmlName, QString tableName);
      QDomElement rootXMLElement();
      // QDomElement rootXMLElement();
      QDomElement findTag(QDomElement currentElement, QString name);
      QString elementContents(QDomElement element);
      void checkErrors();
@@ -70,7 +70,7 @@ namespace Isis {
      QString *p_error;
      QJsonDocument *p_jsonDocument; //!< Json file to send to server
      QString *p_rawResponse;  //!< Server raw response
      QString *p_response;  //!< Server decoded response
      QJsonObject *p_response;  //!< The QJsonObject constructed from the server response
      QNetworkAccessManager *p_networkMgr; //!< Network manager does request
      QNetworkRequest *p_request; //!< Network request sent
  };
+21 −17
Original line number Diff line number Diff line
@@ -87,7 +87,9 @@ void IsisMain() {
  QString mission = missionXlater.Translate("MissionName");

  if (ui.GetBoolean("WEB")) {
    std::cout << "Before Request" << std::endl;
    requestSpice(icube, *icube->label(), mission);
    std::cout << "After Request" << std::endl;
  }
  else {
    // Get system base kernels
@@ -572,13 +574,14 @@ void requestSpice(Cube *icube, Pvl &labels, QString missionName) {
  client.blockUntilComplete();
  connectionProgress.CheckStatus();

  PvlGroup kernelsGroup = client.kernelsGroup();
  PvlGroup logGrp = client.applicationLog();
  PvlGroup kernelsGroup = client.kernelsGroup(); //

  PvlGroup logGrp = client.applicationLog(); //
  PvlObject naifKeywords = client.naifKeywordsObject();
  Table *pointingTable = client.pointingTable();
  Table *positionTable = client.positionTable();
  Table *bodyTable = client.bodyRotationTable();
  Table *sunPosTable = client.sunPositionTable();
  Table *pointingTable = client.pointingTable(); //
  Table *positionTable = client.positionTable(); //
  Table *bodyTable = client.bodyRotationTable(); //
  Table *sunPosTable = client.sunPositionTable(); //

  // Verify everything in the kernels group exists, if not then our kernels are
  //   out of date.
@@ -621,6 +624,7 @@ void requestSpice(Cube *icube, Pvl &labels, QString missionName) {
  icube->label()->addObject(naifKeywords);

  icube->write(*pointingTable);
  qDebug() << "YAYA!";
  icube->write(*positionTable);
  icube->write(*bodyTable);
  icube->write(*sunPosTable);