Search in sources :

Example 1 with IThreePidInvite

use of io.kamax.mxisd.invitation.IThreePidInvite in project mxisd by kamax-io.

the class InvitationController method store.

@RequestMapping(value = "/store-invite", method = POST)
String store(HttpServletRequest request, @RequestParam String sender, @RequestParam String medium, @RequestParam String address, @RequestParam("room_id") String roomId) {
    Map<String, String> parameters = new HashMap<>();
    for (String key : request.getParameterMap().keySet()) {
        parameters.put(key, request.getParameter(key));
    }
    IThreePidInvite invite = new ThreePidInvite(new MatrixID(sender), medium, address, roomId, parameters);
    IThreePidInviteReply reply = mgr.storeInvite(invite);
    return gson.toJson(new ThreePidInviteReplyIO(reply, keyMgr.getPublicKeyBase64(keyMgr.getCurrentIndex()), srvCfg.getPublicUrl()));
}
Also used : ThreePidInvite(io.kamax.mxisd.invitation.ThreePidInvite) IThreePidInvite(io.kamax.mxisd.invitation.IThreePidInvite) HashMap(java.util.HashMap) ThreePidInviteReplyIO(io.kamax.mxisd.controller.identity.v1.io.ThreePidInviteReplyIO) IThreePidInvite(io.kamax.mxisd.invitation.IThreePidInvite) IThreePidInviteReply(io.kamax.mxisd.invitation.IThreePidInviteReply) MatrixID(io.kamax.matrix.MatrixID) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 2 with IThreePidInvite

use of io.kamax.mxisd.invitation.IThreePidInvite in project mxisd by kamax-io.

the class StoreInviteHandler method handleRequest.

@Override
public void handleRequest(HttpServerExchange exchange) {
    String reqContentType = getContentType(exchange).orElse("application/octet-stream");
    JsonObject invJson = new JsonObject();
    if (StringUtils.startsWith(reqContentType, "application/json")) {
        invJson = parseJsonObject(exchange);
    } else // Backward compatibility for pre-r0.1.0 implementations
    if (StringUtils.startsWith(reqContentType, "application/x-www-form-urlencoded")) {
        String body = getBodyUtf8(exchange);
        Map<String, Deque<String>> parms = QueryParameterUtils.parseQueryString(body, StandardCharsets.UTF_8.name());
        for (Map.Entry<String, Deque<String>> entry : parms.entrySet()) {
            if (entry.getValue().size() == 0) {
                return;
            }
            if (entry.getValue().size() > 1) {
                throw new BadRequestException("key " + entry.getKey() + " has more than one value");
            }
            invJson.addProperty(entry.getKey(), entry.getValue().peekFirst());
        }
    } else {
        throw new BadRequestException("Unsupported Content-Type: " + reqContentType);
    }
    Type parmType = new TypeToken<Map<String, String>>() {
    }.getType();
    Map<String, String> parameters = GsonUtil.get().fromJson(invJson, parmType);
    StoreInviteRequest inv = GsonUtil.get().fromJson(invJson, StoreInviteRequest.class);
    _MatrixID sender = MatrixID.asAcceptable(inv.getSender());
    IThreePidInvite invite = new ThreePidInvite(sender, inv.getMedium(), inv.getAddress(), inv.getRoomId(), parameters);
    IThreePidInviteReply reply = invMgr.storeInvite(invite);
    // FIXME the key info must be set by the invitation manager in the reply object!
    respondJson(exchange, new ThreePidInviteReplyIO(reply, keyMgr.getPublicKeyBase64(keyMgr.getServerSigningKey().getId()), cfg.getPublicUrl()));
}
Also used : ThreePidInvite(io.kamax.mxisd.invitation.ThreePidInvite) IThreePidInvite(io.kamax.mxisd.invitation.IThreePidInvite) JsonObject(com.google.gson.JsonObject) Type(java.lang.reflect.Type) StoreInviteRequest(io.kamax.mxisd.http.io.identity.StoreInviteRequest) ThreePidInviteReplyIO(io.kamax.mxisd.http.io.identity.ThreePidInviteReplyIO) BadRequestException(io.kamax.mxisd.exception.BadRequestException) IThreePidInvite(io.kamax.mxisd.invitation.IThreePidInvite) IThreePidInviteReply(io.kamax.mxisd.invitation.IThreePidInviteReply) Map(java.util.Map) io.kamax.matrix._MatrixID(io.kamax.matrix._MatrixID)

Aggregations

IThreePidInvite (io.kamax.mxisd.invitation.IThreePidInvite)2 IThreePidInviteReply (io.kamax.mxisd.invitation.IThreePidInviteReply)2 ThreePidInvite (io.kamax.mxisd.invitation.ThreePidInvite)2 JsonObject (com.google.gson.JsonObject)1 MatrixID (io.kamax.matrix.MatrixID)1 io.kamax.matrix._MatrixID (io.kamax.matrix._MatrixID)1 ThreePidInviteReplyIO (io.kamax.mxisd.controller.identity.v1.io.ThreePidInviteReplyIO)1 BadRequestException (io.kamax.mxisd.exception.BadRequestException)1 StoreInviteRequest (io.kamax.mxisd.http.io.identity.StoreInviteRequest)1 ThreePidInviteReplyIO (io.kamax.mxisd.http.io.identity.ThreePidInviteReplyIO)1 Type (java.lang.reflect.Type)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1