{"action":"created","comment":{"url":"https://api.github.com/repos/mapsme/omim/pulls/comments/243274634","pull_request_review_id":186999982,"id":243274634,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MzI3NDYzNA==","diff_hunk":"@@ -0,0 +1,233 @@\n+#include \"map/power_manager/power_manager.hpp\"\n+\n+#include \"platform/platform.hpp\"\n+\n+#include \"coding/file_name_utils.hpp\"\n+#include \"coding/file_reader.hpp\"\n+#include \"coding/file_writer.hpp\"\n+#include \"coding/internal/file_data.hpp\"\n+#include \"coding/serdes_json.hpp\"\n+\n+#include \"base/assert.hpp\"\n+#include \"base/logging.hpp\"\n+\n+#include <unordered_map>\n+\n+namespace\n+{\n+std::unordered_map<PowerManager::Config, PowerManager::FacilitiesState> const kConfigToState =\n+{\n+  {PowerManager::Config::Normal, {{true, true}}},\n+  {PowerManager::Config::Economy, {{false, false}}}\n+};\n+\n+std::string GetFilePath()\n+{\n+  return base::JoinPath(GetPlatform().SettingsDir(), \"power_manager_config\");\n+}\n+}  // namespace\n+\n+void PowerManager::Load()\n+{\n+  Data result;\n+  try\n+  {\n+    FileReader reader(GetFilePath());\n+    NonOwningReaderSource source(reader);\n+\n+    coding::DeserializerJson des(source);\n+    des(result);\n+\n+    m_data = result;\n+    for (size_t i = 0; i < m_data.m_facilities.size(); ++i)\n+    {\n+      CHECK_NOT_EQUAL(static_cast<Facility>(i), Facility::Count, ());\n+\n+      for (auto & subscriber : m_subscribers)\n+        subscriber->OnFacilityStateChanged(static_cast<Facility>(i), m_data.m_facilities[i]);\n+    }\n+\n+    for (auto & subscriber : m_subscribers)\n+      subscriber->OnConfigChanged(m_data.m_config);\n+  }\n+  catch (base::Json::Exception & ex)\n+  {\n+    LOG(LERROR, (\"Cannot deserialize power manager data from file. Exception:\", ex.Msg()));\n+  }\n+  catch (FileReader::Exception const & ex)\n+  {\n+    LOG(LERROR, (\"Cannot read power manager config file. Exception:\", ex.Msg()));\n+  }\n+\n+  // Reset to default state.\n+  m_data = {};\n+}\n+\n+void PowerManager::SetFacility(Facility const facility, bool state)\n+{\n+  CHECK_NOT_EQUAL(facility, Facility::Count, ());\n+\n+  if (m_data.m_facilities[static_cast<size_t>(facility)] == state)\n+    return;\n+\n+  m_data.m_facilities[static_cast<size_t>(facility)] = state;\n+\n+  bool isConfigChanged = BalanceConfig();\n+\n+  if (!Save())\n+    return;\n+\n+  for (auto & subscriber : m_subscribers)\n+    subscriber->OnFacilityStateChanged(facility, state);\n+\n+  if (isConfigChanged)\n+  {\n+    for (auto & subscriber : m_subscribers)\n+      subscriber->OnConfigChanged(m_data.m_config);\n+  }\n+}\n+\n+void PowerManager::SetConfig(Config const config)\n+{\n+  if (m_data.m_config == config)\n+    return;\n+\n+  m_data.m_config = config;\n+\n+  if (m_data.m_config == Config::None || m_data.m_config == Config::Auto)\n+    return;\n+\n+  auto actualState = kConfigToState.at(config);\n+\n+  if (m_data.m_facilities == actualState)\n+    return;\n+\n+  std::swap(m_data.m_facilities, actualState);\n+\n+  if (!Save())\n+    return;\n+\n+  for (auto & subscriber : m_subscribers)\n+    subscriber->OnConfigChanged(m_data.m_config);\n+\n+  for (size_t i = 0; i < actualState.size(); ++i)\n+  {\n+    if (m_data.m_facilities[i] != actualState[i])\n+    {\n+      for (auto & subscriber : m_subscribers)\n+        subscriber->OnFacilityStateChanged(static_cast<Facility>(i), m_data.m_facilities[i]);\n+    }\n+  }\n+}\n+\n+bool PowerManager::GetFacility(Facility const facility) const\n+{\n+  CHECK_NOT_EQUAL(facility, Facility::Count, ());\n+\n+  return m_data.m_facilities[static_cast<size_t>(facility)];\n+}\n+\n+PowerManager::FacilitiesState const & PowerManager::GetFacilities() const\n+{\n+  return m_data.m_facilities;\n+}\n+\n+PowerManager::Config const & PowerManager::GetConfig() const\n+{\n+  return m_data.m_config;\n+}\n+\n+void PowerManager::OnBatteryLevelChanged(uint8_t level)\n+{\n+  if (m_data.m_config != Config::Auto)\n+    return;\n+\n+  // TODO.\n+}\n+\n+void PowerManager::Subscribe(Subscriber * subscriber)\n+{\n+  ASSERT(subscriber, ());\n+  m_subscribers.push_back(subscriber);\n+}\n+\n+void PowerManager::UnsubscribeAll()\n+{\n+  m_subscribers.clear();\n+}\n+\n+bool PowerManager::BalanceConfig()\n+{\n+  bool found = false;\n+  Config actualConfig = m_data.m_config;\n+  for (auto const & item : kConfigToState)\n+  {\n+    if (item.second == m_data.m_facilities)\n+    {\n+      actualConfig = item.first;\n+      found = true;\n+      break;\n+    }\n+  }\n+\n+  if (!found)\n+    actualConfig = Config::None;\n+\n+  if (m_data.m_config == actualConfig)\n+    return false;\n+\n+  m_data.m_config = actualConfig;\n+  return true;\n+}\n+\n+bool PowerManager::Save()\n+{\n+  auto const result = base::WriteToTempAndRenameToFile(GetFilePath(), [this](string const & fileName)\n+  {\n+    try\n+    {\n+      FileWriter writer(fileName);\n+      coding::SerializerJson<FileWriter> ser(writer);\n+      ser(m_data);\n+      return true;\n+    }\n+    catch (base::Json::Exception & ex)\n+    {\n+      LOG(LERROR, (\"Cannot serialize power manager data into file. Exception:\", ex.Msg()));\n+    }\n+    catch (FileReader::Exception const & ex)\n+    {\n+      LOG(LERROR, (\"Cannot write power manager file. Exception:\", ex.Msg()));\n+    }\n+\n+    return false;\n+  });\n+\n+  if (result)\n+    return true;\n+\n+  // Try to load last correct state and notify subscribers.\n+  Load();\n+  return false;\n+}\n+\n+std::string DebugPrint(PowerManager::Facility const facility)\n+{\n+  switch (facility)\n+  {\n+  case PowerManager::Facility::ThreeDimensionalBuildings: return \"ThreeDimensionalBuildings\";\n+  case PowerManager::Facility::TrackRecord: return \"TrackRecord\";\n+  case PowerManager::Facility::Count: return \"Count\";\n+  }\n+}\n+\n+std::string DebugPrint(PowerManager::Config const config)\n+{\n+  switch (config)\n+  {\n+  case PowerManager::Config::None: return \"None\";\n+  case PowerManager::Config::Normal: return \"Normal\";\n+  case PowerManager::Config::Economy: return \"Economy\";\n+  case PowerManager::Config::Auto: return \"Auto\";\n+  }","path":"map/power_manager/power_manager.cpp","position":232,"original_position":232,"commit_id":"5bb3502bee13f16e3f3c4d08b70673d18ae31955","original_commit_id":"5bb3502bee13f16e3f3c4d08b70673d18ae31955","user":{"login":"milchakov","id":2606569,"node_id":"MDQ6VXNlcjI2MDY1Njk=","avatar_url":"https://avatars1.githubusercontent.com/u/2606569?v=4","gravatar_id":"","url":"https://api.github.com/users/milchakov","html_url":"https://github.com/milchakov","followers_url":"https://api.github.com/users/milchakov/followers","following_url":"https://api.github.com/users/milchakov/following{/other_user}","gists_url":"https://api.github.com/users/milchakov/gists{/gist_id}","starred_url":"https://api.github.com/users/milchakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milchakov/subscriptions","organizations_url":"https://api.github.com/users/milchakov/orgs","repos_url":"https://api.github.com/users/milchakov/repos","events_url":"https://api.github.com/users/milchakov/events{/privacy}","received_events_url":"https://api.github.com/users/milchakov/received_events","type":"User","site_admin":false},"body":"если я не совсем понял причины применения UNREACHABLE, то поправь меня, пожалуйста.","created_at":"2018-12-20T13:41:45Z","updated_at":"2018-12-20T13:41:45Z","html_url":"https://github.com/mapsme/omim/pull/10106#discussion_r243274634","pull_request_url":"https://api.github.com/repos/mapsme/omim/pulls/10106","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/mapsme/omim/pulls/comments/243274634"},"html":{"href":"https://github.com/mapsme/omim/pull/10106#discussion_r243274634"},"pull_request":{"href":"https://api.github.com/repos/mapsme/omim/pulls/10106"}},"in_reply_to_id":243019816},"pull_request":{"url":"https://api.github.com/repos/mapsme/omim/pulls/10106","id":239560357,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM5NTYwMzU3","html_url":"https://github.com/mapsme/omim/pull/10106","diff_url":"https://github.com/mapsme/omim/pull/10106.diff","patch_url":"https://github.com/mapsme/omim/pull/10106.patch","issue_url":"https://api.github.com/repos/mapsme/omim/issues/10106","number":10106,"state":"open","locked":false,"title":"[core][jni] power manager mock","user":{"login":"milchakov","id":2606569,"node_id":"MDQ6VXNlcjI2MDY1Njk=","avatar_url":"https://avatars1.githubusercontent.com/u/2606569?v=4","gravatar_id":"","url":"https://api.github.com/users/milchakov","html_url":"https://github.com/milchakov","followers_url":"https://api.github.com/users/milchakov/followers","following_url":"https://api.github.com/users/milchakov/following{/other_user}","gists_url":"https://api.github.com/users/milchakov/gists{/gist_id}","starred_url":"https://api.github.com/users/milchakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milchakov/subscriptions","organizations_url":"https://api.github.com/users/milchakov/orgs","repos_url":"https://api.github.com/users/milchakov/repos","events_url":"https://api.github.com/users/milchakov/events{/privacy}","received_events_url":"https://api.github.com/users/milchakov/received_events","type":"User","site_admin":false},"body":"https://jira.mail.ru/browse/MAPSME-9298","created_at":"2018-12-18T16:52:47Z","updated_at":"2018-12-20T13:41:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a78d16c3728ca6b9753eb1847347d52aee6f011b","assignee":null,"assignees":[],"requested_reviewers":[{"login":"darina","id":1092934,"node_id":"MDQ6VXNlcjEwOTI5MzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/1092934?v=4","gravatar_id":"","url":"https://api.github.com/users/darina","html_url":"https://github.com/darina","followers_url":"https://api.github.com/users/darina/followers","following_url":"https://api.github.com/users/darina/following{/other_user}","gists_url":"https://api.github.com/users/darina/gists{/gist_id}","starred_url":"https://api.github.com/users/darina/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darina/subscriptions","organizations_url":"https://api.github.com/users/darina/orgs","repos_url":"https://api.github.com/users/darina/repos","events_url":"https://api.github.com/users/darina/events{/privacy}","received_events_url":"https://api.github.com/users/darina/received_events","type":"User","site_admin":false},{"login":"alexzatsepin","id":8442156,"node_id":"MDQ6VXNlcjg0NDIxNTY=","avatar_url":"https://avatars2.githubusercontent.com/u/8442156?v=4","gravatar_id":"","url":"https://api.github.com/users/alexzatsepin","html_url":"https://github.com/alexzatsepin","followers_url":"https://api.github.com/users/alexzatsepin/followers","following_url":"https://api.github.com/users/alexzatsepin/following{/other_user}","gists_url":"https://api.github.com/users/alexzatsepin/gists{/gist_id}","starred_url":"https://api.github.com/users/alexzatsepin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexzatsepin/subscriptions","organizations_url":"https://api.github.com/users/alexzatsepin/orgs","repos_url":"https://api.github.com/users/alexzatsepin/repos","events_url":"https://api.github.com/users/alexzatsepin/events{/privacy}","received_events_url":"https://api.github.com/users/alexzatsepin/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mapsme/omim/pulls/10106/commits","review_comments_url":"https://api.github.com/repos/mapsme/omim/pulls/10106/comments","review_comment_url":"https://api.github.com/repos/mapsme/omim/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mapsme/omim/issues/10106/comments","statuses_url":"https://api.github.com/repos/mapsme/omim/statuses/5bb3502bee13f16e3f3c4d08b70673d18ae31955","head":{"label":"milchakov:power_manager","ref":"power_manager","sha":"5bb3502bee13f16e3f3c4d08b70673d18ae31955","user":{"login":"milchakov","id":2606569,"node_id":"MDQ6VXNlcjI2MDY1Njk=","avatar_url":"https://avatars1.githubusercontent.com/u/2606569?v=4","gravatar_id":"","url":"https://api.github.com/users/milchakov","html_url":"https://github.com/milchakov","followers_url":"https://api.github.com/users/milchakov/followers","following_url":"https://api.github.com/users/milchakov/following{/other_user}","gists_url":"https://api.github.com/users/milchakov/gists{/gist_id}","starred_url":"https://api.github.com/users/milchakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milchakov/subscriptions","organizations_url":"https://api.github.com/users/milchakov/orgs","repos_url":"https://api.github.com/users/milchakov/repos","events_url":"https://api.github.com/users/milchakov/events{/privacy}","received_events_url":"https://api.github.com/users/milchakov/received_events","type":"User","site_admin":false},"repo":{"id":61498503,"node_id":"MDEwOlJlcG9zaXRvcnk2MTQ5ODUwMw==","name":"omim","full_name":"milchakov/omim","private":false,"owner":{"login":"milchakov","id":2606569,"node_id":"MDQ6VXNlcjI2MDY1Njk=","avatar_url":"https://avatars1.githubusercontent.com/u/2606569?v=4","gravatar_id":"","url":"https://api.github.com/users/milchakov","html_url":"https://github.com/milchakov","followers_url":"https://api.github.com/users/milchakov/followers","following_url":"https://api.github.com/users/milchakov/following{/other_user}","gists_url":"https://api.github.com/users/milchakov/gists{/gist_id}","starred_url":"https://api.github.com/users/milchakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milchakov/subscriptions","organizations_url":"https://api.github.com/users/milchakov/orgs","repos_url":"https://api.github.com/users/milchakov/repos","events_url":"https://api.github.com/users/milchakov/events{/privacy}","received_events_url":"https://api.github.com/users/milchakov/received_events","type":"User","site_admin":false},"html_url":"https://github.com/milchakov/omim","description":"MAPS.ME - Offline OpenStreetMap maps for iOS/Android/Mac/Linux/Windows","fork":true,"url":"https://api.github.com/repos/milchakov/omim","forks_url":"https://api.github.com/repos/milchakov/omim/forks","keys_url":"https://api.github.com/repos/milchakov/omim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/milchakov/omim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/milchakov/omim/teams","hooks_url":"https://api.github.com/repos/milchakov/omim/hooks","issue_events_url":"https://api.github.com/repos/milchakov/omim/issues/events{/number}","events_url":"https://api.github.com/repos/milchakov/omim/events","assignees_url":"https://api.github.com/repos/milchakov/omim/assignees{/user}","branches_url":"https://api.github.com/repos/milchakov/omim/branches{/branch}","tags_url":"https://api.github.com/repos/milchakov/omim/tags","blobs_url":"https://api.github.com/repos/milchakov/omim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/milchakov/omim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/milchakov/omim/git/refs{/sha}","trees_url":"https://api.github.com/repos/milchakov/omim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/milchakov/omim/statuses/{sha}","languages_url":"https://api.github.com/repos/milchakov/omim/languages","stargazers_url":"https://api.github.com/repos/milchakov/omim/stargazers","contributors_url":"https://api.github.com/repos/milchakov/omim/contributors","subscribers_url":"https://api.github.com/repos/milchakov/omim/subscribers","subscription_url":"https://api.github.com/repos/milchakov/omim/subscription","commits_url":"https://api.github.com/repos/milchakov/omim/commits{/sha}","git_commits_url":"https://api.github.com/repos/milchakov/omim/git/commits{/sha}","comments_url":"https://api.github.com/repos/milchakov/omim/comments{/number}","issue_comment_url":"https://api.github.com/repos/milchakov/omim/issues/comments{/number}","contents_url":"https://api.github.com/repos/milchakov/omim/contents/{+path}","compare_url":"https://api.github.com/repos/milchakov/omim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/milchakov/omim/merges","archive_url":"https://api.github.com/repos/milchakov/omim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/milchakov/omim/downloads","issues_url":"https://api.github.com/repos/milchakov/omim/issues{/number}","pulls_url":"https://api.github.com/repos/milchakov/omim/pulls{/number}","milestones_url":"https://api.github.com/repos/milchakov/omim/milestones{/number}","notifications_url":"https://api.github.com/repos/milchakov/omim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/milchakov/omim/labels{/name}","releases_url":"https://api.github.com/repos/milchakov/omim/releases{/id}","deployments_url":"https://api.github.com/repos/milchakov/omim/deployments","created_at":"2016-06-19T20:16:05Z","updated_at":"2018-12-20T09:19:31Z","pushed_at":"2018-12-20T11:13:25Z","git_url":"git://github.com/milchakov/omim.git","ssh_url":"git@github.com:milchakov/omim.git","clone_url":"https://github.com/milchakov/omim.git","svn_url":"https://github.com/milchakov/omim","homepage":null,"size":4205748,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mapsme:master","ref":"master","sha":"5f969d18c5a11223a5830b80ad7dfb93bc91b11a","user":{"login":"mapsme","id":14185141,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTg1MTQx","avatar_url":"https://avatars1.githubusercontent.com/u/14185141?v=4","gravatar_id":"","url":"https://api.github.com/users/mapsme","html_url":"https://github.com/mapsme","followers_url":"https://api.github.com/users/mapsme/followers","following_url":"https://api.github.com/users/mapsme/following{/other_user}","gists_url":"https://api.github.com/users/mapsme/gists{/gist_id}","starred_url":"https://api.github.com/users/mapsme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mapsme/subscriptions","organizations_url":"https://api.github.com/users/mapsme/orgs","repos_url":"https://api.github.com/users/mapsme/repos","events_url":"https://api.github.com/users/mapsme/events{/privacy}","received_events_url":"https://api.github.com/users/mapsme/received_events","type":"Organization","site_admin":false},"repo":{"id":42798033,"node_id":"MDEwOlJlcG9zaXRvcnk0Mjc5ODAzMw==","name":"omim","full_name":"mapsme/omim","private":false,"owner":{"login":"mapsme","id":14185141,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTg1MTQx","avatar_url":"https://avatars1.githubusercontent.com/u/14185141?v=4","gravatar_id":"","url":"https://api.github.com/users/mapsme","html_url":"https://github.com/mapsme","followers_url":"https://api.github.com/users/mapsme/followers","following_url":"https://api.github.com/users/mapsme/following{/other_user}","gists_url":"https://api.github.com/users/mapsme/gists{/gist_id}","starred_url":"https://api.github.com/users/mapsme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mapsme/subscriptions","organizations_url":"https://api.github.com/users/mapsme/orgs","repos_url":"https://api.github.com/users/mapsme/repos","events_url":"https://api.github.com/users/mapsme/events{/privacy}","received_events_url":"https://api.github.com/users/mapsme/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/mapsme/omim","description":"🗺️ MAPS.ME — Offline OpenStreetMap maps for iOS and Android","fork":false,"url":"https://api.github.com/repos/mapsme/omim","forks_url":"https://api.github.com/repos/mapsme/omim/forks","keys_url":"https://api.github.com/repos/mapsme/omim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mapsme/omim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mapsme/omim/teams","hooks_url":"https://api.github.com/repos/mapsme/omim/hooks","issue_events_url":"https://api.github.com/repos/mapsme/omim/issues/events{/number}","events_url":"https://api.github.com/repos/mapsme/omim/events","assignees_url":"https://api.github.com/repos/mapsme/omim/assignees{/user}","branches_url":"https://api.github.com/repos/mapsme/omim/branches{/branch}","tags_url":"https://api.github.com/repos/mapsme/omim/tags","blobs_url":"https://api.github.com/repos/mapsme/omim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mapsme/omim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mapsme/omim/git/refs{/sha}","trees_url":"https://api.github.com/repos/mapsme/omim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mapsme/omim/statuses/{sha}","languages_url":"https://api.github.com/repos/mapsme/omim/languages","stargazers_url":"https://api.github.com/repos/mapsme/omim/stargazers","contributors_url":"https://api.github.com/repos/mapsme/omim/contributors","subscribers_url":"https://api.github.com/repos/mapsme/omim/subscribers","subscription_url":"https://api.github.com/repos/mapsme/omim/subscription","commits_url":"https://api.github.com/repos/mapsme/omim/commits{/sha}","git_commits_url":"https://api.github.com/repos/mapsme/omim/git/commits{/sha}","comments_url":"https://api.github.com/repos/mapsme/omim/comments{/number}","issue_comment_url":"https://api.github.com/repos/mapsme/omim/issues/comments{/number}","contents_url":"https://api.github.com/repos/mapsme/omim/contents/{+path}","compare_url":"https://api.github.com/repos/mapsme/omim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mapsme/omim/merges","archive_url":"https://api.github.com/repos/mapsme/omim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mapsme/omim/downloads","issues_url":"https://api.github.com/repos/mapsme/omim/issues{/number}","pulls_url":"https://api.github.com/repos/mapsme/omim/pulls{/number}","milestones_url":"https://api.github.com/repos/mapsme/omim/milestones{/number}","notifications_url":"https://api.github.com/repos/mapsme/omim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mapsme/omim/labels{/name}","releases_url":"https://api.github.com/repos/mapsme/omim/releases{/id}","deployments_url":"https://api.github.com/repos/mapsme/omim/deployments","created_at":"2015-09-20T02:57:13Z","updated_at":"2018-12-20T11:20:02Z","pushed_at":"2018-12-20T13:01:35Z","git_url":"git://github.com/mapsme/omim.git","ssh_url":"git@github.com:mapsme/omim.git","clone_url":"https://github.com/mapsme/omim.git","svn_url":"https://github.com/mapsme/omim","homepage":"","size":4247810,"stargazers_count":2885,"watchers_count":2885,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":623,"mirror_url":null,"archived":false,"open_issues_count":768,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":623,"open_issues":768,"watchers":2885,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mapsme/omim/pulls/10106"},"html":{"href":"https://github.com/mapsme/omim/pull/10106"},"issue":{"href":"https://api.github.com/repos/mapsme/omim/issues/10106"},"comments":{"href":"https://api.github.com/repos/mapsme/omim/issues/10106/comments"},"review_comments":{"href":"https://api.github.com/repos/mapsme/omim/pulls/10106/comments"},"review_comment":{"href":"https://api.github.com/repos/mapsme/omim/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mapsme/omim/pulls/10106/commits"},"statuses":{"href":"https://api.github.com/repos/mapsme/omim/statuses/5bb3502bee13f16e3f3c4d08b70673d18ae31955"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"milchakov"}}