Search in sources :

Example 1 with SingeLookupReplyJson

use of io.kamax.mxisd.http.io.identity.SingeLookupReplyJson in project mxisd by kamax-io.

the class SingleLookupReply method fromRecursive.

public static SingleLookupReply fromRecursive(SingleLookupRequest request, String body) {
    SingleLookupReply reply = new SingleLookupReply();
    reply.isRecursive = true;
    reply.request = request;
    reply.body = body;
    try {
        SingeLookupReplyJson json = gson.fromJson(body, SingeLookupReplyJson.class);
        reply.mxid = MatrixID.asAcceptable(json.getMxid());
        reply.notAfter = Instant.ofEpochMilli(json.getNot_after());
        reply.notBefore = Instant.ofEpochMilli(json.getNot_before());
        reply.timestamp = Instant.ofEpochMilli(json.getTs());
        reply.signatures = new HashMap<>(json.getSignatures());
    } catch (JsonSyntaxException e) {
    // stub - we only want to try, nothing more
    }
    return reply;
}
Also used : JsonSyntaxException(com.google.gson.JsonSyntaxException) SingeLookupReplyJson(io.kamax.mxisd.http.io.identity.SingeLookupReplyJson)

Example 2 with SingeLookupReplyJson

use of io.kamax.mxisd.http.io.identity.SingeLookupReplyJson in project mxisd by kamax-io.

the class SessionTpidBindHandler method handleRequest.

@Override
public void handleRequest(HttpServerExchange exchange) {
    BindRequest bindReq = new BindRequest();
    bindReq.setSid(getQueryParameter(exchange, BindRequest.Keys.SessionID));
    bindReq.setSecret(getQueryParameter(exchange, BindRequest.Keys.Secret));
    bindReq.setUserId(getQueryParameter(exchange, BindRequest.Keys.UserID));
    String reqContentType = getContentType(exchange).orElse("application/octet-stream");
    if (StringUtils.equals("application/x-www-form-urlencoded", reqContentType)) {
        String body = getBodyUtf8(exchange);
        Map<String, Deque<String>> parms = QueryParameterUtils.parseQueryString(body, StandardCharsets.UTF_8.name());
        bindReq.setSid(getQueryParameter(parms, BindRequest.Keys.SessionID));
        bindReq.setSecret(getQueryParameter(parms, BindRequest.Keys.Secret));
        bindReq.setUserId(getQueryParameter(parms, BindRequest.Keys.UserID));
    } else if (StringUtils.equals("application/json", reqContentType)) {
        bindReq = parseJsonTo(exchange, BindRequest.class);
    } else {
        log.warn("Unknown encoding in 3PID session bind: {}", reqContentType);
        log.warn("The request will most likely fail");
    }
    try {
        SingleLookupReply lookup = mgr.bind(bindReq.getSid(), bindReq.getSecret(), bindReq.getUserId());
        JsonObject response = signMgr.signMessageGson(GsonUtil.makeObj(new SingeLookupReplyJson(lookup)));
        respond(exchange, response);
    } catch (BadRequestException e) {
        log.info("requested session was not validated");
        JsonObject obj = new JsonObject();
        obj.addProperty("errcode", "M_SESSION_NOT_VALIDATED");
        obj.addProperty("error", e.getMessage());
        respond(exchange, HttpStatus.SC_BAD_REQUEST, obj);
    } finally {
        // If a user registers, there is no standard login event. Instead, this is the only way to trigger
        // resolution at an appropriate time. Meh at synapse/Riot!
        invMgr.lookupMappingsForInvites();
    }
}
Also used : SingleLookupReply(io.kamax.mxisd.lookup.SingleLookupReply) SingeLookupReplyJson(io.kamax.mxisd.http.io.identity.SingeLookupReplyJson) BindRequest(io.kamax.mxisd.http.io.identity.BindRequest) JsonObject(com.google.gson.JsonObject) BadRequestException(io.kamax.mxisd.exception.BadRequestException) Deque(java.util.Deque)

Example 3 with SingeLookupReplyJson

use of io.kamax.mxisd.http.io.identity.SingeLookupReplyJson in project mxisd by kamax-io.

the class SingleLookupHandler method handleRequest.

@Override
public void handleRequest(HttpServerExchange exchange) {
    String medium = getQueryParameter(exchange, "medium");
    String address = getQueryParameter(exchange, "address");
    SingleLookupRequest lookupRequest = new SingleLookupRequest();
    setRequesterInfo(lookupRequest, exchange);
    lookupRequest.setType(medium);
    lookupRequest.setThreePid(address);
    log.info("Got single lookup request from {} with client {} - Is recursive? {}", lookupRequest.getRequester(), lookupRequest.getUserAgent(), lookupRequest.isRecursive());
    Optional<SingleLookupReply> lookupOpt = strategy.find(lookupRequest);
    if (!lookupOpt.isPresent()) {
        log.info("No mapping was found, return empty JSON object");
        respondJson(exchange, "{}");
    } else {
        SingleLookupReply lookup = lookupOpt.get();
        JsonObject obj = GsonUtil.makeObj(new SingeLookupReplyJson(lookup));
        signMgr.signMessageGson(cfg.getName(), obj);
        respondJson(exchange, obj);
    }
}
Also used : SingleLookupRequest(io.kamax.mxisd.lookup.SingleLookupRequest) SingleLookupReply(io.kamax.mxisd.lookup.SingleLookupReply) SingeLookupReplyJson(io.kamax.mxisd.http.io.identity.SingeLookupReplyJson) JsonObject(com.google.gson.JsonObject)

Aggregations

SingeLookupReplyJson (io.kamax.mxisd.http.io.identity.SingeLookupReplyJson)3 JsonObject (com.google.gson.JsonObject)2 SingleLookupReply (io.kamax.mxisd.lookup.SingleLookupReply)2 JsonSyntaxException (com.google.gson.JsonSyntaxException)1 BadRequestException (io.kamax.mxisd.exception.BadRequestException)1 BindRequest (io.kamax.mxisd.http.io.identity.BindRequest)1 SingleLookupRequest (io.kamax.mxisd.lookup.SingleLookupRequest)1 Deque (java.util.Deque)1