From 6eee767cc25a9db9f125843e584656cde1ebb6c5 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Sun, 18 Aug 2019 21:01:13 +0200
Subject: [PATCH] hom_server in login response is optional

Since it is depreated it will also be removed in the future.
Fixes #7
---
 lib/structs/responses/login.cpp |  4 +++-
 tests/responses.cpp             | 10 ++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/structs/responses/login.cpp b/lib/structs/responses/login.cpp
index f63763daf..4091e9baa 100644
--- a/lib/structs/responses/login.cpp
+++ b/lib/structs/responses/login.cpp
@@ -12,7 +12,9 @@ from_json(const json &obj, Login &response)
         response.user_id = obj.at("user_id").get<User>();
 
         response.access_token = obj.at("access_token").get<std::string>();
-        response.home_server  = obj.at("home_server").get<std::string>();
+
+        if (obj.count("home_server") != 0)
+                response.home_server = obj.at("home_server").get<std::string>();
 
         if (obj.count("device_id") != 0)
                 response.device_id = obj.at("device_id").get<std::string>();
diff --git a/tests/responses.cpp b/tests/responses.cpp
index d4f598792..0618d704f 100644
--- a/tests/responses.cpp
+++ b/tests/responses.cpp
@@ -524,6 +524,16 @@ TEST(Responses, Login)
         EXPECT_EQ(login2.access_token, "abc123");
         EXPECT_EQ(login2.home_server, "matrix.org");
         EXPECT_EQ(login2.device_id, "");
+
+        json data3   = R"({
+          "user_id": "@cheeky_monkey:matrix.org",
+          "access_token": "abc123"
+        })"_json;
+        Login login3 = data3;
+        EXPECT_EQ(login3.user_id.to_string(), "@cheeky_monkey:matrix.org");
+        EXPECT_EQ(login3.access_token, "abc123");
+        EXPECT_EQ(login3.home_server, "");
+        EXPECT_EQ(login3.device_id, "");
 }
 
 TEST(Responses, Messages)
-- 
GitLab