@@ -3,9 +3,11 @@ package fptp
3
3
import (
4
4
"database/sql"
5
5
"encoding/json"
6
+ "fmt"
6
7
"io"
7
8
"log"
8
9
"net/url"
10
+ "strings"
9
11
10
12
"github.com/lib/pq"
11
13
"github.ncsu.edu/jjuecks/vv8-post-processor/core"
@@ -55,6 +57,16 @@ func (agg *fptpAggregator) IngestRecord(ctx *core.ExecutionContext, lineNumber i
55
57
return nil
56
58
}
57
59
60
+ func (agg * fptpAggregator ) accessEntityPropertyMap (origin string ) (* EntityProperty , error ) {
61
+ for domain , entityProperty := range agg .eMap .EntityPropertyMap {
62
+ if strings .Contains (origin , domain ) {
63
+ return entityProperty , nil
64
+ }
65
+ }
66
+
67
+ return nil , fmt .Errorf ("no entity property found for origin %s" , origin )
68
+ }
69
+
58
70
var firstPartyThirdPartyFields = [... ]string {
59
71
"sha2" ,
60
72
"root_domain" ,
@@ -87,10 +99,8 @@ func (agg *fptpAggregator) DumpToPostgresql(ctx *core.AggregationContext, sqlDb
87
99
88
100
rootURLOrigin := rootURL .Hostname ()
89
101
90
- var ok bool
91
-
92
- agg .firstPartyProperty , ok = agg .eMap .EntityPropertyMap [rootURLOrigin ]
93
- if ! ok {
102
+ agg .firstPartyProperty , err = agg .accessEntityPropertyMap (rootURLOrigin )
103
+ if err != nil {
94
104
agg .firstPartyProperty = & EntityProperty {
95
105
DisplayName : rootURLOrigin ,
96
106
Tracking : 0.0 ,
@@ -128,16 +138,17 @@ func (agg *fptpAggregator) DumpToPostgresql(ctx *core.AggregationContext, sqlDb
128
138
scriptURLOrigin := scriptURL .Hostname ()
129
139
originURLOrigin := originURL .Hostname ()
130
140
131
- scriptProperty , ok := agg .eMap . EntityPropertyMap [ scriptURLOrigin ]
132
- if ! ok {
141
+ scriptProperty , err := agg .accessEntityPropertyMap ( scriptURLOrigin )
142
+ if err != nil {
133
143
scriptProperty = & EntityProperty {
134
144
DisplayName : scriptURLOrigin ,
135
145
Tracking : 0.0 ,
136
146
}
137
147
agg .eMap .EntityPropertyMap [scriptURLOrigin ] = scriptProperty
138
148
}
139
- originProperty , ok := agg .eMap .EntityPropertyMap [originURLOrigin ]
140
- if ! ok {
149
+ tracking := scriptProperty .Tracking
150
+ originProperty , err := agg .accessEntityPropertyMap (originURLOrigin )
151
+ if err != nil {
141
152
originProperty = & EntityProperty {
142
153
DisplayName : scriptURLOrigin ,
143
154
Tracking : 0.0 ,
@@ -149,13 +160,13 @@ func (agg *fptpAggregator) DumpToPostgresql(ctx *core.AggregationContext, sqlDb
149
160
script .info .CodeHash .SHA2 [:],
150
161
rootDomain ,
151
162
script .info .URL ,
152
- script .info .FirstOrigin ,
163
+ script .info .FirstOrigin . Origin ,
153
164
agg .firstPartyProperty .DisplayName ,
154
165
scriptProperty .DisplayName ,
155
166
originProperty .DisplayName ,
156
- scriptProperty .DisplayName ! = originProperty .DisplayName ,
157
- scriptProperty .DisplayName ! = agg .firstPartyProperty .DisplayName ,
158
- agg . eMap . EntityPropertyMap [ scriptURLOrigin ]. Tracking ,
167
+ scriptProperty .DisplayName = = originProperty .DisplayName ,
168
+ scriptProperty .DisplayName = = agg .firstPartyProperty .DisplayName ,
169
+ tracking ,
159
170
)
160
171
161
172
if err != nil {
@@ -198,16 +209,16 @@ func (agg *fptpAggregator) DumpToStream(ctx *core.AggregationContext, stream io.
198
209
scriptURLOrigin := scriptURL .Hostname ()
199
210
originURLOrigin := originURL .Hostname ()
200
211
201
- scriptProperty , ok := agg .eMap . EntityPropertyMap [ scriptURLOrigin ]
202
- if ! ok {
212
+ scriptProperty , err := agg .accessEntityPropertyMap ( scriptURLOrigin )
213
+ if err != nil {
203
214
scriptProperty = & EntityProperty {
204
215
DisplayName : scriptURLOrigin ,
205
216
Tracking : 0.0 ,
206
217
}
207
218
agg .eMap .EntityPropertyMap [scriptURLOrigin ] = scriptProperty
208
219
}
209
- originProperty , ok := agg .eMap . EntityPropertyMap [ originURLOrigin ]
210
- if ! ok {
220
+ originProperty , err := agg .accessEntityPropertyMap ( originURLOrigin )
221
+ if err != nil {
211
222
originProperty = & EntityProperty {
212
223
DisplayName : scriptURLOrigin ,
213
224
Tracking : 0.0 ,
@@ -218,10 +229,10 @@ func (agg *fptpAggregator) DumpToStream(ctx *core.AggregationContext, stream io.
218
229
jstream .Encode (core.JSONArray {"firstpartythirdparty" , core.JSONObject {
219
230
"SHA2" : script .info .CodeHash .SHA2 [:],
220
231
"URL" : script .info .URL ,
221
- "FirstOrigin" : script .info .FirstOrigin ,
232
+ "FirstOrigin" : script .info .FirstOrigin . Origin ,
222
233
"ScriptProperty" : scriptProperty .DisplayName ,
223
234
"OriginProperty" : originProperty .DisplayName ,
224
- "ThirdParty" : scriptProperty .DisplayName ! = originProperty .DisplayName ,
235
+ "ThirdParty" : scriptProperty .DisplayName = = originProperty .DisplayName ,
225
236
"Tracking" : scriptProperty .Tracking ,
226
237
}})
227
238
}
0 commit comments