public abstract class TagImpl extends Object implements Tag, Lot49Constants
Modifier and Type | Field and Description |
---|---|
private Ad |
ad |
protected int |
api |
protected boolean |
banner |
private ServiceRunner |
bidder |
protected String |
clickRedir |
protected String |
customImpPassThruData |
protected String |
desc |
protected Dimension |
dim |
protected int |
duration |
protected ExchangeTargeting |
exchangeTargeting |
private String |
id |
protected String |
impRedir |
private SortedMap<String,AtomicLong> |
impsConsideredByExchange |
protected boolean |
linear |
protected MarkupType |
markupType |
protected String |
mime |
protected List<String> |
mimes |
protected String |
name |
private SortedMap<String,SortedMap<String,AtomicLong>> |
optoutsByExchange |
private int |
passedCount |
protected int |
protocol |
private String |
secureStatsUrl |
protected boolean |
sslCapable
Default is true.
|
private String |
statsUrl |
protected String |
tagVersion |
protected boolean |
test |
private ConcurrentMap<String,String> |
uniqOptoutReasonMap |
protected boolean |
video |
protected boolean |
vpaid |
AD_FILENAME_PREFIX, AUCTION_RESULTS_PATH_ADX, AUCTION_RESULTS_PATH_OPENX, AUCTION_RESULTS_PATH_PUBMATIC, BID_OUTCOME_CONTROL, BID_OUTCOME_INTERNAL_AUCTION_LOSS, BID_OUTCOME_SUBMITTED, BID_PRICE_CALCULATOR_FILENAME_PREFIX, COOKIE_PREFIX_A, DECISION_BIDS_MADE, DECISION_BIDS_NEEDED, DECISION_BIDS_POSSIBLE, DECISION_BRANDSAFETY, DECISION_BROWSER, DECISION_BUDGET, DECISION_CATEGORY, DECISION_DATE, DECISION_DAY, DECISION_DEVICE, DECISION_DOMAIN_REQUIRED, DECISION_DOMAIN_UNMATCHED, DECISION_EVALUATION_ERROR, DECISION_EXCHANGE, DECISION_EXPERIMENT_CONTROL_SET, DECISION_FLOOR, DECISION_FREQ_CAP, DECISION_GEO, DECISION_HOST, DECISION_HOUR, DECISION_INTEGRAL, DECISION_INTEGRAL_URL, DECISION_INTERNAL_AUCTION, DECISION_IP_BLACKLISTED, DECISION_LANGUAGE, DECISION_LOADING_ERROR, DECISION_NO_IMPRESSIONS, DECISION_NO_USER, DECISION_OS, DECISION_PACING, DECISION_PRIVATE_DEAL, DECISION_PROBABILITY, DECISION_PROVIDER, DECISION_SSP, DECISION_TAG, DECISION_TIMEOUT_EXPERIMENT_STATUS, DECISION_TIMEOUT_FC, DECISION_TIMEOUT_INTEGRAL, DECISION_TIMEOUT_UNKNOWN, DECISION_TIMEOUT_USERDATA, DECISION_TRAQ, DECISION_URL, DECISION_USER_UNKNOWN, DECISION_VALIDATION, DECISION_VIEWABILITY, DECISION_WRONG_USER, DEFAULT_CLICK_PATH_ABSOLUTE, DEFAULT_CLICK_PATH_RELATIVE, DEFAULT_IMPRESSION_PATH_ABSOLUTE, DEFAULT_IMPRESSION_PATH_RELATIVE, DEFAULT_NURL_PATH_ABSOLUTE, DEFAULT_NURL_PATH_RELATIVE, DEFAULT_PIXEL_PATH_ABSOLUTE, DEFAULT_PIXEL_PATH_RELATIVE, DEFAULT_PROUST_PATH_ABSOLUTE, DEFAULT_PROUST_PATH_RELATIVE, DEFAULT_REDIR_PATH_ABSOLUTE, DEFAULT_REDIR_PATH_RELATIVE, DEFAULT_TEST_PATH_RELATIVE, EXCHANGE_ADAPTV, EXCHANGE_ADX, EXCHANGE_BIDSWITCH, EXCHANGE_BRX, EXCHANGE_LIVERAIL, EXCHANGE_LOT49_INTERNAL_AUCTION, EXCHANGE_OPENX, EXCHANGE_PUBMATIC, EXCHANGE_SMAATO, EXCHANGE_SPOTXCHANGE, EXCHANGE_TEST1, EXCHANGE_TEST2, LOT49_VERSION_KEY, LOT49_VERSION_VALUE, MEDIA_TYPE_APPLICATION_JAVASCRIPT, MEDIA_TYPE_APPLICATION_SHOCKWAVE_FLASH, MEDIA_TYPE_VIDEO_FLV, MEDIA_TYPE_VIDEO_MP4, MOD_UID_COOKIE_LENGTH_MAX, MOD_UID_COOKIE_LENGTH_MIN, MOD_UID_LOG_LENGTH, NAME, NURL_ONLY_TAG, NURL_ONLY_WIN_NOTIFICATION, NURL_STANDART, QUERY_STRING_EXCHANGE_CLICK_THROUGH_ENCODED_MACRO, QUERY_STRING_EXCHANGE_CLICK_THROUGH_MACRO, QUERY_STRING_LOT49_CLICK_THROUGH_MACRO, REL_PATH_DEBUG_NURL, ROOT_PATH_ADMIN, ROOT_PATH_AUCTIONS, ROOT_PATH_STATS, TAG_DECISION_API, TAG_DECISION_DIMENSIONS, TAG_DECISION_DURATION, TAG_DECISION_MIME, TAG_DECISION_NOT_BANNER, TAG_DECISION_NOT_VIDEO, TAG_DECISION_PROTOCOL, TAG_DECISION_REQUEST_DISALLOWS_MARKUP, TAG_DECISION_SSL_REQUIRED, TAG_DECISION_VIDEO_LINEARITY, TAG_FILENAME_PREFIX, TEST_MOD_UID_COOKIE_1, TEST_MOD_UID_COOKIE_2, TEST_MOD_UID_COOKIE_3, TEST_MOD_UID_COOKIE_4, TEST_MOD_UID_LOG_1, TEST_MOD_UID_LOG_2, TEST_MOD_UID_LOG_3, TEST_MOD_UID_LOG_4
B_TOOK_CARE_OF_IT_ERROR, B_TOOK_CARE_OF_IT_LOSS, B_TOOK_CARE_OF_IT_WIN, BID_AMOUNT_DISPLAY_PREFIX, BID_AMOUNT_PREFIX, BID_COUNT_DISPLAY_PREFIX, BID_COUNT_PREFIX, BID_PREFIX, BID_PRICE_PREFIX, BID_REQUEST_PREFIX, BIDDER_COUNT_KEY, BUDGET_CHUNK_SIZE_PREFIX, BUDGET_MAP_KEY, BUDGET_PREFIX, BUDGET_UNLIMITED, COOKIE_TS_CLICK, COOKIE_TS_IMPRESSION, DEBUG_NURL_PREFIX, DECISION_DISPLAY_PREFIX, ENDS_ON_PREFIX, ENV_AWS_REGION, ENV_DYNAMO_ENDPOINT, ENV_EC2_ENDPOINT, ENV_ELB_ENDPOINT, ENV_LOT49_CONFIG_FILE, ENV_LOT49_HOME, ENV_LOT49_MAGIC, ENV_STS_ENDPOINT, LOWER_BID_PROBABILITY, NURL_PREFIX, OWNER_KEY_PREFIX, PACING_ASAP, PACING_LOG_PREFIX, PREFIX_VERSION, PREVIOUS_SPEND_AMOUNT_PREFIX, SEGMENT_PREFIX, SPEND_AMOUNT_DISPLAY_PREFIX, SPEND_AMOUNT_PREFIX, STARTS_ON_PREFIX, USER_DATA_SCORE_KEY, USER_PREFIX_V1, WIN_COUNT_DISPLAY_PREFIX, WIN_COUNT_PREFIX, WIN_RATE_STARTED_TS
API_MRAID, API_ORMMA, API_VPAID_1, API_VPAID_2, AUCTION_TYPE_FIRST_PRICE, AUCTION_TYPE_FIXED_PRICE, AUCTION_TYPE_SECOND_PRICE_PLUS, AUCTION_TYPE_UNKNOWN, BR_HTML5_1_0_VALUE, BR_HTML5_2_0_VALUE, CONNECTION_TYPE_CELL_2G, CONNECTION_TYPE_CELL_3G, CONNECTION_TYPE_CELL_4G, CONNECTION_TYPE_CELL_UNKNOWN, CONNECTION_TYPE_ETHERNET, CONNECTION_TYPE_UNKNOWN, CONNECTION_TYPE_WIFI, CONTENT_CONTEXT_APP, CONTENT_CONTEXT_GAME, CONTENT_CONTEXT_MUSIC, CONTENT_CONTEXT_OTHER, CONTENT_CONTEXT_TEXT, CONTENT_CONTEXT_UNKNOWN, CONTENT_CONTEXT_VIDEO, DEVICE_TYPE_CONNECTED_DEVICE, DEVICE_TYPE_CONNECTED_TV, DEVICE_TYPE_MOBILE_TABLET, DEVICE_TYPE_PC, DEVICE_TYPE_PHONE, DEVICE_TYPE_STB, DEVICE_TYPE_TABLET, ETHNICITY_AFRICAN_AMERICAN, ETHNICITY_ASIAN, ETHNICITY_HISPANIC, ETHNICITY_OTHER, ETHNICITY_WHITE, LINEARITY_LINEAR, LINEARITY_NON_LINEAR, MARITAL_DIVORCED, MARITAL_MARRIED, MARITAL_SINGLE, VIDEO_PLAYBACK_AUTO_SOUND_OFF, VIDEO_PLAYBACK_AUTO_SOUND_ON, VIDEO_PLAYBACK_CLICK_TO_PLAY, VIDEO_PLAYBACK_MOUSEOVER, VIDEO_PROTOCOL_VAST_1, VIDEO_PROTOCOL_VAST_2, VIDEO_PROTOCOL_VAST_3, VIDEO_PROTOCOL_VAST_WRAPPER_1, VIDEO_PROTOCOL_VAST_WRAPPER_2, VIDEO_PROTOCOL_VAST_WRAPPER_3
Modifier and Type | Method and Description |
---|---|
String |
canBid(OpenRtbRequest req,
Impression imp)
Can this tag be served in response to the provided impression? If null is returned, the
answer is yes, otherwise, the string with a reason of why not is returned (for use in logging
and troubleshooting).
|
Ad |
getAd() |
String |
getAdId() |
int |
getApi() |
Bid |
getBid(OpenRtbRequest req,
Impression imp)
|
ServiceRunner |
getBidder() |
String |
getCb()
Cachebuster.
|
String |
getClickRedir(OpenRtbRequest req,
Bid bid) |
String |
getClickUrl(OpenRtbRequest req,
Bid bid)
Generates a link to the Lot49 click tracker.
|
String |
getCustomImpPassThruData()
Custom impression pass-through data.
|
String |
getDesc()
Human-readable description
|
Dimension |
getDimension() |
int |
getDuration()
Duration of this ad if it is a video ad.
|
ExchangeTargeting |
getExchangeTargeting() |
String |
getId()
ID of this tag.
|
String |
getImpRedir() |
long |
getImpressionsConsidered(String exchange) |
String |
getImpressionUrl(OpenRtbRequest req,
Bid bid,
boolean nurl)
Generates a link to the Lot49 impression tracker.
|
MarkupType |
getMarkupType() |
String |
getMime() |
List<String> |
getMimes() |
String |
getName()
Human-readable name.
|
String |
getNUrl(OpenRtbRequest req,
Bid bid,
String nurlId)
Generates a link to NUrl.
|
private String |
getNUrlByType(OpenRtbRequest req,
Bid bid,
String nurlId,
int nurlType) |
SortedMap<String,SortedMap<String,AtomicLong>> |
getOptoutsByExchange() |
String |
getProto(OpenRtbRequest req) |
int |
getProtocol() |
private StringBuilder |
getStatsUrl(OpenRtbRequest req) |
String |
getTag(OpenRtbRequest req,
Impression imp,
Bid bid,
boolean nurl)
Get the actual tag to send in the
ad markup field of the bid (or in the
response to nurl ), based on
the template . |
String |
getTagVersion() |
void |
incrOptout(OpenRtbRequest req,
String name) |
boolean |
isBanner() |
boolean |
isLinear() |
boolean |
isSslCapable() |
boolean |
isTest() |
boolean |
isVideo() |
boolean |
isVpaid() |
private static SortedMap<String,AtomicLong> |
makeSingleExchangeOptoutMap() |
private StringBuilder |
replaceProustMacros(OpenRtbRequest req,
Impression imp,
Bid bid,
StringBuilder tag) |
void |
setBidder(ServiceRunner bidder) |
String |
toString() |
List<String> |
validate() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
encode, getTagTemplate, init
protected String tagVersion
private ConcurrentMap<String,String> uniqOptoutReasonMap
protected ExchangeTargeting exchangeTargeting
protected Dimension dim
protected boolean banner
protected String customImpPassThruData
protected int protocol
protected int api
protected String impRedir
protected String clickRedir
private ServiceRunner bidder
protected String desc
protected int duration
private String id
protected boolean linear
protected String mime
protected String name
private int passedCount
private Ad ad
protected boolean test
protected boolean video
protected boolean vpaid
private final String statsUrl
private final String secureStatsUrl
protected boolean sslCapable
private SortedMap<String,SortedMap<String,AtomicLong>> optoutsByExchange
private SortedMap<String,AtomicLong> impsConsideredByExchange
protected MarkupType markupType
public TagImpl(Ad ad) throws Lot49Exception
Lot49Exception
public String getTagVersion()
getTagVersion
in interface Tag
public SortedMap<String,SortedMap<String,AtomicLong>> getOptoutsByExchange()
getOptoutsByExchange
in interface Tag
public void incrOptout(OpenRtbRequest req, String name)
incrOptout
in interface Tag
public Dimension getDimension()
getDimension
in interface Tag
public ExchangeTargeting getExchangeTargeting()
getExchangeTargeting
in interface Tag
public String getCustomImpPassThruData()
Tag
getCustomImpPassThruData
in interface Tag
public int getProtocol()
getProtocol
in interface Tag
public String getImpRedir()
getImpRedir
in interface Tag
public boolean isSslCapable()
isSslCapable
in interface Tag
public String getProto(OpenRtbRequest req)
public long getImpressionsConsidered(String exchange)
getImpressionsConsidered
in interface Tag
public String canBid(OpenRtbRequest req, Impression imp)
Tag
This will always return null if req
is a test
request
.public ServiceRunner getBidder()
public String getCb()
Tag
getCb
in interface Tag
Macros
,
Cachebusterpublic int getDuration()
Tag
getDuration
in interface Tag
public String getId()
Tag
getId
in interface Lot49Plugin
getId
in interface Tag
public String getNUrl(OpenRtbRequest req, Bid bid, String nurlId)
Tag
In case of a NUrl-requiring
exchange, this URL will
include a wp query parameter whose value is the
exchange-specific winning price macro
.
private String getNUrlByType(OpenRtbRequest req, Bid bid, String nurlId, int nurlType)
public String getImpressionUrl(OpenRtbRequest req, Bid bid, boolean nurl)
Tag
In case of a non-NUrl-requiring
exchange, this URL
will include a wp query parameter whose value is the
exchange-specific winning price macro
.
impRedir
is not null, this URL will include
r query parameter whose value is URL-encoded
impRedir.getImpressionUrl
in interface Tag
Tag.getImpressionUrl(OpenRtbRequest, Bid, boolean)
public String getClickUrl(OpenRtbRequest req, Bid bid)
Tag
clickRedir
is not null, this URL will include r query parameter
whose value is URL-encoded
clickRedir.public String getClickRedir(OpenRtbRequest req, Bid bid)
getClickRedir
in interface Tag
public String getName()
Tag
getName
in interface Lot49Plugin
getName
in interface Tag
private StringBuilder getStatsUrl(OpenRtbRequest req)
private StringBuilder replaceProustMacros(OpenRtbRequest req, Impression imp, Bid bid, StringBuilder tag)
public String getTag(OpenRtbRequest req, Impression imp, Bid bid, boolean nurl)
Tag
ad markup
field of the bid (or in the
response to nurl
), based on
the template
.
The provider of the template needs to understand the mechanism of macro substitution. The substitutions occur in the following order, each one going over the entire text of the template.
clickRedir
or impRedir
fields. If necessary, override the method
appropriately.Macros.MACRO_LOT49_IMPRESSION
will be replaced by the
URL to the Lot49 impression tracker
.
the exchange sends actual macros in a call
to NUrl
, the following click macro substitutions occur:
Macros.MACRO_LOT49_CLICK_CHAIN_ENC
are replaced as follows:
exchange click macro
, then it is
replaced with Macros.MACRO_LOT49_EXCHANGE_CLICK_ENC
followed by
Macros.MACRO_LOT49_CLICK_ENC_ENC
.Macros.MACRO_LOT49_CLICK_ENC
Macros.MACRO_LOT49_CLICK_ENC_ENC
will be replaced as
Macros.MACRO_LOT49_CLICK
(see below), except the replacement will be doubly
URL-encoded.Macros.MACRO_LOT49_CLICK_ENC
will be replaced as
Macros.MACRO_LOT49_CLICK
(see below), except the replacement will be URL-encoded.
Macros.MACRO_LOT49_CLICK
will be replaced by the URL to the
Lot49 click tracker. If clickRedir is not null, this URL will include
r query parameter whose value is URL-encoded
clickRedir.Macros.MACRO_LOT49_EXCHANGE_CLICK_ENC
will be replaced by the
exchange-specific version thereof
.Macros.MACRO_LOT49_EXCHANGE_CLICK
will be replaced by the
exchange-specific version thereof
.Macros.MACRO_LOT49_CLICK_ENC_ENC
,
Macros.MACRO_LOT49_CLICK_ENC
and Macros.MACRO_LOT49_CLICK
are generated, but
not replaced. Instead, they are added to the NUrl, and will be substituted at
NUrl invocation
.
getTag
in interface Tag
Tag.getTag(OpenRtbRequest, Impression, Bid, boolean)
private static final SortedMap<String,AtomicLong> makeSingleExchangeOptoutMap()
public String getAdId()
public boolean isTest()
public Bid getBid(OpenRtbRequest req, Impression imp)
Tag
getBid
in interface Tag
Tag.getTag(OpenRtbRequest, Impression, Bid, boolean)
,
Tag.getTagTemplate(OpenRtbRequest, Impression, Bid)
public MarkupType getMarkupType()
getMarkupType
in interface Tag
public void setBidder(ServiceRunner bidder)