public void Initialize(IPluginHostAPI pluginHost) { var db = pluginHost.GetRawDatabase(); var jwtSecret = pluginHost.GetSettings(this)["JWTSecret"]; pluginHost.ProvideAuth(new DefaultAuthProvider(db, jwtSecret, pluginHost.GetServerID())); }
public void HandleMessage(Session session, BaseMessage message) { BaseMessage msg = new BaseMessage(message, true); msg.Payload["testProp"] = "hello world"; msg.Ok = true; msg.From = hostModuleAPI.GetServerID(); session.ConnectionHandler.SendMessage(msg); }
public void HandleMessage(Session session, BaseMessage message) { var pObj = message.Payload.ToObject <RegisterRequestPayload>(); var authProvider = _pluginHost.GetAuthProvider(); try { authProvider.CreateUser(pObj.Username, pObj.Password); } catch (Exception e) { BaseMessage errorReply; if (e.Message.Contains("E11000")) { errorReply = OtherUtils.GenerateProtocolError( message, "id_exists", "Username already taken", new Dictionary <string, object>() ); } else { errorReply = OtherUtils.GenerateProtocolError( message, "other", e.ToString(), new Dictionary <string, object>() ); } session.ConnectionHandler.SendMessage(errorReply); return; } BaseMessage reply = new BaseMessage(message, true); var p = new RegisterResponsePayload(); p.UserID = $"@{pObj.Username}@{_pluginHost.GetServerID()}"; reply.Payload = p.ToDictionary(); reply.Ok = true; session.ConnectionHandler.SendMessage(reply); }
public void HandleMessage(Session session, BaseMessage message) { var receivedMessage = JsonConvert.DeserializeObject <Message>(JsonConvert.SerializeObject(message.Payload)); var response = new BaseMessage(message, true); response.Ok = true; response.From = pluginHostAPI.GetServerID(); response.To = null; var respPayload = new MessageSentResponse(); respPayload.MessageID = Guid.NewGuid().ToString(); respPayload.OriginServerTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); response.Payload = respPayload.ToDictionary(); session.ConnectionHandler.SendMessage(response); var recipientSession = pluginHostAPI.GetSessionManager() .GetSessions() .Select(x => x.Value) .Where(x => x.AuthData.EntityID.Where(x => x == message.To.First()).FirstOrDefault() != null) .FirstOrDefault(); if (recipientSession == null) { Log.Debug("Recipient doesn't exist or currently offline!"); return; // TODO fix this behaviour in specs } var msgForRecipient = new BaseMessage(); msgForRecipient.From = session.AuthData.EntityID.First(); msgForRecipient.MessageType = "urn:cadmium:chats:message"; respPayload.Type = receivedMessage.Type; respPayload.Content = receivedMessage.Content; msgForRecipient.Payload = respPayload.ToDictionary(); recipientSession.ConnectionHandler.SendMessage(msgForRecipient); }