medusa-plugin-ip-lookup-maxmind-geoip2
Version:
A Medusa plugin to lookup a user's country based on IP using MaxMind
74 lines (73 loc) • 2.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _route = require("./store/ip-lookup/route");
var _default = exports["default"] = {
preCartCreation: function () {
var _preCartCreation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req, res, next) {
var _data$country, ipLookupService, regionService, ip, data, region;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
if (!req.body.region_id) {
_context.next = 4;
break;
}
next();
return _context.abrupt("return");
case 4:
ipLookupService = req.scope.resolve("ipLookupService");
regionService = req.scope.resolve("regionService");
ip = (0, _route.getIp)(req);
_context.next = 9;
return ipLookupService.lookupIp(ip);
case 9:
data = _context.sent;
if ((_data$country = data.country) !== null && _data$country !== void 0 && _data$country.isoCode) {
_context.next = 13;
break;
}
next();
return _context.abrupt("return");
case 13:
_context.next = 15;
return regionService.retrieveByCountryCode(data.country.isoCode)["catch"](function () {
return void 0;
});
case 15:
region = _context.sent;
if (region) {
_context.next = 19;
break;
}
next();
return _context.abrupt("return");
case 19:
// If country exists, add it to the body of the cart creation request
req.body.region_id = region.id;
req.body.country_code = data.country.isoCode.toLowerCase();
next();
_context.next = 27;
break;
case 24:
_context.prev = 24;
_context.t0 = _context["catch"](0);
next();
case 27:
case "end":
return _context.stop();
}
}, _callee, null, [[0, 24]]);
}));
function preCartCreation(_x, _x2, _x3) {
return _preCartCreation.apply(this, arguments);
}
return preCartCreation;
}()
};