package org.rakam.module.website; import com.google.auto.service.AutoService; import com.google.inject.Binder; import com.google.inject.Scopes; import com.google.inject.multibindings.Multibinder; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.cookie.Cookie; import org.rakam.collection.Event; import org.rakam.util.ConditionalModule; import org.rakam.plugin.EventMapper; import org.rakam.plugin.RakamModule; import org.rakam.plugin.user.UserPropertyMapper; import org.rakam.util.RakamException; import java.net.InetAddress; import java.util.List; import static io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST; @AutoService(RakamModule.class) @ConditionalModule(config = "module.website.mapper", value = "true") public class WebsiteEventMapperModule extends RakamModule { @Override protected void setup(Binder binder) { Multibinder<UserPropertyMapper> userPropertyMappers = Multibinder.newSetBinder(binder, UserPropertyMapper.class); Multibinder<EventMapper> eventMappers = Multibinder.newSetBinder(binder, EventMapper.class); WebsiteMapperConfig config = buildConfigObject(WebsiteMapperConfig.class); if (config.getReferrer()) { ReferrerEventMapper referrerEventMapper = new ReferrerEventMapper(); eventMappers.addBinding().toInstance(referrerEventMapper); userPropertyMappers.addBinding().toInstance(referrerEventMapper); } if (config.getUserAgent()) { UserAgentEventMapper userAgentEventMapper = new UserAgentEventMapper(config); eventMappers.addBinding().toInstance(userAgentEventMapper); userPropertyMappers.addBinding().toInstance(userAgentEventMapper); } // eventMappers.addBinding().to(UserIdEventMapper.class).in(Scopes.SINGLETON); // userPropertyMappers.addBinding().to(UserIdEventMapper.class).in(Scopes.SINGLETON); } @Override public String name() { return "Event website related attribute mapping module"; } @Override public String description() { return "Resolves _referrer, _user_agent attributes and related fields such as user_agent_version, referrer_medium to the event."; } }