Source: /Users/naver/workspace/egjs-agent/src/Agent.js

  1. /**
  2. * Copyright (c) NAVER Corp.
  3. * egjs-agent projects are licensed under the MIT license
  4. */
  5. import {navigator} from "./browser";
  6. import Parser from "./Parser";
  7. /**
  8. * @namespace eg
  9. */
  10. /**
  11. * Extracts browser and operating system information from the user agent string.
  12. * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.
  13. * @function eg#agent
  14. * @param {String} [userAgent=navigator.userAgent] user agent string to parse <ko>파싱할 유저에이전트 문자열</ko>
  15. * @return {Object} agentInfo
  16. * @return {Object} agentInfo.os os Operating system information <ko>운영체제 정보</ko>
  17. * @return {String} agentInfo.os.name Operating system name (android, ios, window, mac, unknown) <ko>운영체제 이름 (android, ios, window, mac, unknown)</ko>
  18. * @return {String} agentInfo.os.version Operating system version <ko>운영체제 버전</ko>
  19. * @return {String} agentInfo.browser Browser information <ko>브라우저 정보</ko>
  20. * @return {String} agentInfo.browser.name Browser name (safari, chrome, sbrowser, ie, firefox, unknown) <ko>브라우저 이름 (safari, chrome, sbrowser, ie, firefox, unknown)</ko>
  21. * @return {String} agentInfo.browser.version Browser version <ko>브라우저 버전 </ko>
  22. * @return {String} agentInfo.browser.webview Indicates whether the browser is inapp<ko>웹뷰 브라우저 여부</ko>
  23. */
  24. export default function agent(ua = navigator.userAgent) {
  25. Parser.setUa(ua);
  26. const agentInfo = {
  27. os: Parser.getOs(),
  28. browser: Parser.getBrowser(),
  29. };
  30. agentInfo.browser.name = agentInfo.browser.name.toLowerCase();
  31. agentInfo.os.name = agentInfo.os.name.toLowerCase();
  32. agentInfo.os.version = agentInfo.os.version.toLowerCase();
  33. if (agentInfo.os.name === "ios" && agentInfo.browser.webview) {
  34. agentInfo.browser.version = "-1";
  35. }
  36. return agentInfo;
  37. }
comments powered by Disqus