mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-19 13:17:56 +00:00
Add signing key (not populated yet) to meshms java api
This commit is contained in:
parent
2bbccf728f
commit
c3ca00fe56
@ -20,24 +20,31 @@
|
|||||||
|
|
||||||
package org.servalproject.servaldna.meshms;
|
package org.servalproject.servaldna.meshms;
|
||||||
|
|
||||||
|
import org.servalproject.servaldna.Subscriber;
|
||||||
import org.servalproject.servaldna.SubscriberId;
|
import org.servalproject.servaldna.SubscriberId;
|
||||||
|
|
||||||
public class MeshMSConversation {
|
public class MeshMSConversation {
|
||||||
|
|
||||||
public final int _rowNumber;
|
public final int _rowNumber;
|
||||||
public final int _id;
|
public final int _id;
|
||||||
|
public final Subscriber me;
|
||||||
|
@Deprecated
|
||||||
public final SubscriberId mySid;
|
public final SubscriberId mySid;
|
||||||
|
public final Subscriber them;
|
||||||
|
@Deprecated
|
||||||
public final SubscriberId theirSid;
|
public final SubscriberId theirSid;
|
||||||
public final boolean isRead;
|
public final boolean isRead;
|
||||||
public final long lastMessageOffset;
|
public final long lastMessageOffset;
|
||||||
public final long readOffset;
|
public final long readOffset;
|
||||||
|
|
||||||
protected MeshMSConversation(int rowNumber, int _id, SubscriberId my_sid, SubscriberId their_sid, boolean read, long last_message_offset, long read_offset)
|
protected MeshMSConversation(int rowNumber, int _id, Subscriber me, Subscriber them, boolean read, long last_message_offset, long read_offset)
|
||||||
{
|
{
|
||||||
this._rowNumber = rowNumber;
|
this._rowNumber = rowNumber;
|
||||||
this._id = _id;
|
this._id = _id;
|
||||||
this.mySid = my_sid;
|
this.me = me;
|
||||||
this.theirSid = their_sid;
|
this.mySid = me.sid;
|
||||||
|
this.them = them;
|
||||||
|
this.theirSid = them.sid;
|
||||||
this.isRead = read;
|
this.isRead = read;
|
||||||
this.lastMessageOffset = last_message_offset;
|
this.lastMessageOffset = last_message_offset;
|
||||||
this.readOffset = read_offset;
|
this.readOffset = read_offset;
|
||||||
|
@ -21,16 +21,18 @@
|
|||||||
package org.servalproject.servaldna.meshms;
|
package org.servalproject.servaldna.meshms;
|
||||||
|
|
||||||
import org.servalproject.json.JSONInputException;
|
import org.servalproject.json.JSONInputException;
|
||||||
|
import org.servalproject.json.JSONTableScanner;
|
||||||
import org.servalproject.json.JSONTokeniser;
|
import org.servalproject.json.JSONTokeniser;
|
||||||
import org.servalproject.servaldna.ServalDHttpConnectionFactory;
|
import org.servalproject.servaldna.ServalDHttpConnectionFactory;
|
||||||
import org.servalproject.servaldna.ServalDInterfaceException;
|
import org.servalproject.servaldna.ServalDInterfaceException;
|
||||||
|
import org.servalproject.servaldna.Subscriber;
|
||||||
import org.servalproject.servaldna.SubscriberId;
|
import org.servalproject.servaldna.SubscriberId;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
public class MeshMSConversationList {
|
public class MeshMSConversationList {
|
||||||
|
|
||||||
@ -38,19 +40,21 @@ public class MeshMSConversationList {
|
|||||||
private SubscriberId sid;
|
private SubscriberId sid;
|
||||||
private HttpURLConnection httpConnection;
|
private HttpURLConnection httpConnection;
|
||||||
private JSONTokeniser json;
|
private JSONTokeniser json;
|
||||||
private Vector<String> headers;
|
private JSONTableScanner table;
|
||||||
int columnIndex__id;
|
|
||||||
int columnIndex_my_sid;
|
|
||||||
int columnIndex_their_sid;
|
|
||||||
int columnIndex_read;
|
|
||||||
int columnIndex_last_message;
|
|
||||||
int columnIndex_read_offset;
|
|
||||||
int rowCount;
|
int rowCount;
|
||||||
|
|
||||||
public MeshMSConversationList(ServalDHttpConnectionFactory connector, SubscriberId sid)
|
public MeshMSConversationList(ServalDHttpConnectionFactory connector, SubscriberId sid)
|
||||||
{
|
{
|
||||||
this.httpConnector = connector;
|
this.httpConnector = connector;
|
||||||
this.sid = sid;
|
this.sid = sid;
|
||||||
|
this.table = new JSONTableScanner()
|
||||||
|
.addColumn("_id", Integer.class)
|
||||||
|
.addColumn("my_sid", SubscriberId.class)
|
||||||
|
.addColumn("their_sid", SubscriberId.class)
|
||||||
|
.addColumn("read", Boolean.class)
|
||||||
|
.addColumn("last_message", Long.class)
|
||||||
|
.addColumn("read_offset", Long.class)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isConnected()
|
public boolean isConnected()
|
||||||
@ -61,12 +65,6 @@ public class MeshMSConversationList {
|
|||||||
public void connect() throws IOException, ServalDInterfaceException, MeshMSException
|
public void connect() throws IOException, ServalDInterfaceException, MeshMSException
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
columnIndex__id = -1;
|
|
||||||
columnIndex_my_sid = -1;
|
|
||||||
columnIndex_their_sid = -1;
|
|
||||||
columnIndex_read = -1;
|
|
||||||
columnIndex_last_message = -1;
|
|
||||||
columnIndex_read_offset = -1;
|
|
||||||
rowCount = 0;
|
rowCount = 0;
|
||||||
httpConnection = httpConnector.newServalDHttpConnection("/restful/meshms/" + sid.toHex() + "/conversationlist.json");
|
httpConnection = httpConnector.newServalDHttpConnection("/restful/meshms/" + sid.toHex() + "/conversationlist.json");
|
||||||
httpConnection.connect();
|
httpConnection.connect();
|
||||||
@ -74,37 +72,7 @@ public class MeshMSConversationList {
|
|||||||
json.consume(JSONTokeniser.Token.START_OBJECT);
|
json.consume(JSONTokeniser.Token.START_OBJECT);
|
||||||
json.consume("header");
|
json.consume("header");
|
||||||
json.consume(JSONTokeniser.Token.COLON);
|
json.consume(JSONTokeniser.Token.COLON);
|
||||||
headers = new Vector<String>();
|
table.consumeHeaderArray(json);
|
||||||
json.consumeArray(headers, String.class);
|
|
||||||
if (headers.size() < 1)
|
|
||||||
throw new ServalDInterfaceException("empty JSON headers array");
|
|
||||||
for (int i = 0; i < headers.size(); ++i) {
|
|
||||||
String header = headers.get(i);
|
|
||||||
if (header.equals("_id"))
|
|
||||||
columnIndex__id = i;
|
|
||||||
else if (header.equals("my_sid"))
|
|
||||||
columnIndex_my_sid = i;
|
|
||||||
else if (header.equals("their_sid"))
|
|
||||||
columnIndex_their_sid = i;
|
|
||||||
else if (header.equals("read"))
|
|
||||||
columnIndex_read = i;
|
|
||||||
else if (header.equals("last_message"))
|
|
||||||
columnIndex_last_message = i;
|
|
||||||
else if (header.equals("read_offset"))
|
|
||||||
columnIndex_read_offset = i;
|
|
||||||
}
|
|
||||||
if (columnIndex__id == -1)
|
|
||||||
throw new ServalDInterfaceException("missing JSON column: _id");
|
|
||||||
if (columnIndex_my_sid == -1)
|
|
||||||
throw new ServalDInterfaceException("missing JSON column: my_sid");
|
|
||||||
if (columnIndex_their_sid == -1)
|
|
||||||
throw new ServalDInterfaceException("missing JSON column: their_sid");
|
|
||||||
if (columnIndex_read == -1)
|
|
||||||
throw new ServalDInterfaceException("missing JSON column: read");
|
|
||||||
if (columnIndex_last_message == -1)
|
|
||||||
throw new ServalDInterfaceException("missing JSON column: last_message");
|
|
||||||
if (columnIndex_read_offset == -1)
|
|
||||||
throw new ServalDInterfaceException("missing JSON column: read_offset");
|
|
||||||
json.consume(JSONTokeniser.Token.COMMA);
|
json.consume(JSONTokeniser.Token.COMMA);
|
||||||
json.consume("rows");
|
json.consume("rows");
|
||||||
json.consume(JSONTokeniser.Token.COLON);
|
json.consume(JSONTokeniser.Token.COLON);
|
||||||
@ -128,27 +96,17 @@ public class MeshMSConversationList {
|
|||||||
JSONTokeniser.match(tok, JSONTokeniser.Token.COMMA);
|
JSONTokeniser.match(tok, JSONTokeniser.Token.COMMA);
|
||||||
else
|
else
|
||||||
json.pushToken(tok);
|
json.pushToken(tok);
|
||||||
Object[] row = new Object[headers.size()];
|
|
||||||
json.consumeArray(row);
|
Map<String,Object> row = table.consumeRowArray(json);
|
||||||
int _id = JSONTokeniser.narrow(row[columnIndex__id], Integer.class);
|
|
||||||
SubscriberId my_sid;
|
return new MeshMSConversation(
|
||||||
try {
|
rowCount++,
|
||||||
my_sid = new SubscriberId(JSONTokeniser.narrow(row[columnIndex_my_sid], String.class));
|
(Integer)row.get("_id"),
|
||||||
}
|
new Subscriber((SubscriberId)row.get("my_sid")),
|
||||||
catch (SubscriberId.InvalidHexException e) {
|
new Subscriber((SubscriberId)row.get("their_sid")),
|
||||||
throw new ServalDInterfaceException("invalid column value: my_sid", e);
|
(Boolean)row.get("read"),
|
||||||
}
|
(Long)row.get("last_message"),
|
||||||
SubscriberId their_sid;
|
(Long)row.get("read_offset"));
|
||||||
try {
|
|
||||||
their_sid = new SubscriberId(JSONTokeniser.narrow(row[columnIndex_their_sid], String.class));
|
|
||||||
}
|
|
||||||
catch (SubscriberId.InvalidHexException e) {
|
|
||||||
throw new ServalDInterfaceException("invalid column value: their_sid", e);
|
|
||||||
}
|
|
||||||
boolean is_read = JSONTokeniser.narrow(row[columnIndex_read], Boolean.class);
|
|
||||||
long last_message = JSONTokeniser.narrow(row[columnIndex_last_message], Long.class);
|
|
||||||
long read_offset = JSONTokeniser.narrow(row[columnIndex_read_offset], Long.class);
|
|
||||||
return new MeshMSConversation(rowCount++, _id, my_sid, their_sid, is_read, last_message, read_offset);
|
|
||||||
}
|
}
|
||||||
catch (JSONInputException e) {
|
catch (JSONInputException e) {
|
||||||
throw new ServalDInterfaceException(e);
|
throw new ServalDInterfaceException(e);
|
||||||
@ -162,7 +120,6 @@ public class MeshMSConversationList {
|
|||||||
json.close();
|
json.close();
|
||||||
json = null;
|
json = null;
|
||||||
}
|
}
|
||||||
headers = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MeshMSConversation> toList() throws ServalDInterfaceException, IOException {
|
public List<MeshMSConversation> toList() throws ServalDInterfaceException, IOException {
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
package org.servalproject.servaldna.meshms;
|
package org.servalproject.servaldna.meshms;
|
||||||
|
|
||||||
|
import org.servalproject.servaldna.Subscriber;
|
||||||
import org.servalproject.servaldna.SubscriberId;
|
import org.servalproject.servaldna.SubscriberId;
|
||||||
import org.servalproject.servaldna.ServalDInterfaceException;
|
import org.servalproject.servaldna.ServalDInterfaceException;
|
||||||
|
|
||||||
@ -33,7 +34,11 @@ public class MeshMSMessage {
|
|||||||
|
|
||||||
public final int _rowNumber;
|
public final int _rowNumber;
|
||||||
public final Type type;
|
public final Type type;
|
||||||
|
public final Subscriber me;
|
||||||
|
@Deprecated
|
||||||
public final SubscriberId mySid;
|
public final SubscriberId mySid;
|
||||||
|
public final Subscriber them;
|
||||||
|
@Deprecated
|
||||||
public final SubscriberId theirSid;
|
public final SubscriberId theirSid;
|
||||||
public final long offset;
|
public final long offset;
|
||||||
public final String token;
|
public final String token;
|
||||||
@ -45,8 +50,8 @@ public class MeshMSMessage {
|
|||||||
|
|
||||||
protected MeshMSMessage(int rowNumber,
|
protected MeshMSMessage(int rowNumber,
|
||||||
Type type,
|
Type type,
|
||||||
SubscriberId my_sid,
|
Subscriber me,
|
||||||
SubscriberId their_sid,
|
Subscriber them,
|
||||||
long offset,
|
long offset,
|
||||||
String token,
|
String token,
|
||||||
String text,
|
String text,
|
||||||
@ -55,10 +60,10 @@ public class MeshMSMessage {
|
|||||||
Long timestamp,
|
Long timestamp,
|
||||||
Long ack_offset) throws ServalDInterfaceException
|
Long ack_offset) throws ServalDInterfaceException
|
||||||
{
|
{
|
||||||
if (my_sid == null)
|
if (me == null)
|
||||||
throw new ServalDInterfaceException("my_sid is null");
|
throw new ServalDInterfaceException("me is null");
|
||||||
if (their_sid == null)
|
if (them == null)
|
||||||
throw new ServalDInterfaceException("their_sid is null");
|
throw new ServalDInterfaceException("them is null");
|
||||||
if (type != Type.ACK_RECEIVED && text == null)
|
if (type != Type.ACK_RECEIVED && text == null)
|
||||||
throw new ServalDInterfaceException("text is null");
|
throw new ServalDInterfaceException("text is null");
|
||||||
if (token == null)
|
if (token == null)
|
||||||
@ -69,8 +74,10 @@ public class MeshMSMessage {
|
|||||||
throw new ServalDInterfaceException("timestamp is null");
|
throw new ServalDInterfaceException("timestamp is null");
|
||||||
this._rowNumber = rowNumber;
|
this._rowNumber = rowNumber;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.mySid = my_sid;
|
this.me = me;
|
||||||
this.theirSid = their_sid;
|
this.mySid = me.sid;
|
||||||
|
this.them = them;
|
||||||
|
this.theirSid = them.sid;
|
||||||
this.offset = offset;
|
this.offset = offset;
|
||||||
this.token = token;
|
this.token = token;
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
@ -25,6 +25,7 @@ import org.servalproject.json.JSONTableScanner;
|
|||||||
import org.servalproject.json.JSONTokeniser;
|
import org.servalproject.json.JSONTokeniser;
|
||||||
import org.servalproject.servaldna.ServalDHttpConnectionFactory;
|
import org.servalproject.servaldna.ServalDHttpConnectionFactory;
|
||||||
import org.servalproject.servaldna.ServalDInterfaceException;
|
import org.servalproject.servaldna.ServalDInterfaceException;
|
||||||
|
import org.servalproject.servaldna.Subscriber;
|
||||||
import org.servalproject.servaldna.SubscriberId;
|
import org.servalproject.servaldna.SubscriberId;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -150,8 +151,8 @@ public class MeshMSMessageList {
|
|||||||
return new MeshMSMessage(
|
return new MeshMSMessage(
|
||||||
rowCount++,
|
rowCount++,
|
||||||
type,
|
type,
|
||||||
(SubscriberId)row.get("my_sid"),
|
new Subscriber((SubscriberId)row.get("my_sid")),
|
||||||
(SubscriberId)row.get("their_sid"),
|
new Subscriber((SubscriberId)row.get("their_sid")),
|
||||||
(Long)row.get("offset"),
|
(Long)row.get("offset"),
|
||||||
(String)row.get("token"),
|
(String)row.get("token"),
|
||||||
(String)row.get("text"),
|
(String)row.get("text"),
|
||||||
|
Loading…
Reference in New Issue
Block a user