Source: /Users/Naver/git/egjs-agent/src/Agent.js

/**
 * Copyright (c) NAVER Corp.
 * egjs-agent projects are licensed under the MIT license
 */
import {navigator} from "./browser";
import Parser from "./Parser";

/**
 * @namespace eg
 */

/**
 * Extracts browser and operating system information from the user agent string.
 * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.
 * @function eg#agent
 * @param {String} [userAgent=navigator.userAgent] user agent string to parse <ko>파싱할 유저에이전트 문자열</ko>
 * @return {Object} agentInfo
 * @return {Object} agentInfo.os os Operating system information <ko>운영체제 정보</ko>
 * @return {String} agentInfo.os.name Operating system name (android, ios, window, mac, unknown) <ko>운영체제 이름 (android, ios, window, mac, unknown)</ko>
 * @return {String} agentInfo.os.version Operating system version <ko>운영체제 버전</ko>
 * @return {String} agentInfo.browser Browser information <ko>브라우저 정보</ko>
 * @return {String} agentInfo.browser.name Browser name (safari, chrome, sbrowser, ie, firefox, unknown) <ko>브라우저 이름 (safari, chrome, sbrowser, ie, firefox, unknown)</ko>
 * @return {String} agentInfo.browser.version Browser version <ko>브라우저 버전 </ko>
 * @return {Boolean} agentInfo.browser.webview Indicates whether the browser is inapp<ko>웹뷰 브라우저 여부</ko>
 * @return {Boolean} agentInfo.isMobile Indicates whether the browser is for mobile<ko>모바일 브라우저 여부</ko>
 */
function agent(ua = navigator.userAgent) {
	Parser.setUa(ua);

	const agentInfo = {
		os: Parser.getOs(),
		browser: Parser.getBrowser(),
		isMobile: Parser.getIsMobile(),
	};

	agentInfo.browser.name = agentInfo.browser.name.toLowerCase();
	agentInfo.os.name = agentInfo.os.name.toLowerCase();
	agentInfo.os.version = agentInfo.os.version.toLowerCase();

	if (agentInfo.os.name === "ios" && agentInfo.browser.webview) {
		agentInfo.browser.version = "-1";
	}

	return agentInfo;
}
agent.VERSION = "#__VERSION__#";
export default agent;
comments powered by Disqus