001package com.intentsoftware.addapptr.ad.vast;
002
003import com.intentsoftware.addapptr.AdNetwork;
004import com.intentsoftware.addapptr.VASTRequestParameters;
005
006import java.util.HashMap;
007
008/**
009 * Allows to define request parameters. For more details about parameters names, refer to the <a href="https://support.google.com/dfp_premium/answer/1068325?hl=en&amp;ref_topic=2480647#cust_params">DFP VAST
010 * documentation available online.</a>
011 */
012@SuppressWarnings({"WeakerAccess", "unused"})
013public class DFPVASTRequestParameters extends VASTRequestParameters {
014
015    /**
016     * Defines the 'ad_rule' request parameter
017     */
018    public Integer adRule;
019
020    /**
021     * Defines the 'ciu_szs' request parameter.
022     */
023    public String listOfSizes;
024
025    /**
026     * Defines the 'cmsid' request parameter.
027     */
028    public String cmsid;
029
030    /**
031     * Defines the 'vid' request parameter.
032     */
033    public String vid;
034
035    /**
036     * Defines the 'hl' request parameter.
037     */
038    public String hl;
039
040    /**
041     * Defines the 'nofb' request parameter.
042     */
043    public Integer nofb;
044
045    /**
046     * Defines the 'pp' request parameter.
047     */
048    public String publisherProvider;
049
050    /**
051     * Defines the 'scp' request parameter.
052     */
053    public String customParameters;
054
055    /**
056     * Defines the 'tfcd' request parameter.
057     */
058    public Boolean coppa;
059
060    /**
061     * Defines the 'max_ad_duration' request parameter.
062     */
063    public Integer maxDurationInSeconds;
064
065    /**
066     * Defines the 'min_ad_duration' request parameter.
067     */
068    public Integer minDurationInSeconds;
069
070    /**
071     * Defines the 'sz' request parameter.
072     */
073    public String size;
074
075    /**
076     * Defines the 'unviewed_position_start' request parameter.
077     */
078    public Boolean isDelayedImpression;
079
080    /**
081     * Defines the 'ppid' request parameter.
082     */
083    public String publisherId;
084
085    /**
086     * Defines the 'description_url' request parameter.
087     */
088    public String descriptionUrl;
089
090    /**
091     * Defines the 'output' request parameter.
092     */
093    public String outputFormat;
094
095    /**
096     * Defines the 'pod' request parameter.
097     */
098    public Integer pod;
099
100    /**
101     * Defines the 'ppos' request parameter.
102     */
103    public Integer ppos;
104
105    /**
106     * Defines the 'mridx' request parameter.
107     */
108    public Integer mridx;
109
110    /**
111     * Defines the 'lip' request parameter.
112     */
113    public Boolean lip;
114
115    /**
116     * Defines the 'pmnd' request parameter.
117     */
118    public Long pmnd;
119
120    /**
121     * Defines the 'pmxd' request parameter.
122     */
123    public Long pmxd;
124
125    /**
126     * Defines the 'pmad' request parameter.
127     */
128    public Integer pmad;
129
130
131    @Override
132    public HashMap<String, String> getRequestParameters() {
133        HashMap<String, String> map = new HashMap<>();
134
135        addParameterToRequestMap("ad_rule", adRule, map);
136        addParameterToRequestMap("ciu_szs", listOfSizes, map);
137        addParameterToRequestMap("cmsid", cmsid, map);
138        addParameterToRequestMap("vid", vid, map);
139        addParameterToRequestMap("hl", hl, map);
140        addParameterToRequestMap("nofb", nofb, map);
141        addParameterToRequestMap("pp", publisherProvider, map);
142        addParameterToRequestMap("scp", customParameters, map);
143        if (VASTVersion != null && outputFormat == null) {
144            map.put("output", "xml_vast" + VASTVersion);
145        }
146        addParameterToRequestMap("output", outputFormat, map);
147
148        addParameterToRequestMap("vpos", convertVideoTypeToParameterValue(videoType), map);
149        addParameterToRequestMap("tfcd", coppa, map);
150        addParameterToRequestMap("max_ad_duration", maxDurationInSeconds, map);
151        addParameterToRequestMap("min_ad_duration", minDurationInSeconds, map);
152        addParameterToRequestMap("sz", size, map);
153        addParameterToRequestMap("unviewed_position_start", isDelayedImpression, map);
154        addParameterToRequestMap("ppid", publisherId, map);
155        addParameterToRequestMap("description_url", descriptionUrl, map);
156
157        addParameterToRequestMap("pod", pod, map);
158
159        addParameterToRequestMap("ppos", ppos, map);
160
161        addParameterToRequestMap("mridx", mridx, map);
162
163        if (lip) {
164            map.put("lip", "true");
165        }
166
167        addParameterToRequestMap("pmnd", pmnd, map);
168
169        addParameterToRequestMap("pmxd", pmxd, map);
170
171        addParameterToRequestMap("pmad", pmad, map);
172
173        return map;
174    }
175
176    static String convertVideoTypeToParameterValue(VideoType videoType) {
177        String result;
178
179        switch (videoType) {
180            case PreRoll:
181                result = "preroll";
182                break;
183            case MidRoll:
184                result = "midroll";
185                break;
186            case PostRoll:
187                result = "postroll";
188                break;
189            default:
190                result = null;
191                break;
192        }
193
194        return result;
195    }
196
197    @Override
198    public AdNetwork getAdNetwork() {
199        return AdNetwork.DFP;
200    }
201}