Skip to content

Commit 5ce872b

Browse files
committed
Merge pull request #119 from tiborb/internal_search
Added addReferer method to config reader
2 parents bdf2366 + 44df241 commit 5ce872b

File tree

4 files changed

+58
-8
lines changed

4 files changed

+58
-8
lines changed

php/src/Snowplow/RefererParser/Config/ConfigFileReaderTrait.php

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ private function init($fileName)
1818
}
1919

2020
$this->fileName = $fileName;
21+
22+
$this->read();
2123
}
2224

2325
abstract protected function parse($content);
@@ -29,24 +31,42 @@ private function read()
2931
}
3032

3133
$hash = $this->parse(file_get_contents($this->fileName));
32-
34+
3335
foreach ($hash as $medium => $referers) {
3436
foreach ($referers as $source => $referer) {
3537
foreach ($referer['domains'] as $domain) {
36-
$this->referers[$domain] = [
37-
'source' => $source,
38-
'medium' => $medium,
39-
'parameters' => isset($referer['parameters']) ? $referer['parameters'] : [],
40-
];
38+
$parameters = isset($referer['parameters']) ? $referer['parameters'] : [];
39+
$this->addReferer($domain, $source, $medium, $parameters);
4140
}
4241
}
4342
}
4443
}
44+
45+
/**
46+
* Add referer
47+
*
48+
* @param string $domain
49+
* @param string $source
50+
* @param string $medium
51+
* @param array $parameters
52+
*/
53+
public function addReferer($domain, $source, $medium, array $parameters = [])
54+
{
55+
$this->referers[$domain] = [
56+
'source' => $source,
57+
'medium' => $medium,
58+
'parameters' => $parameters,
59+
];
60+
}
4561

62+
/**
63+
* Lookup host
64+
*
65+
* @param string $lookupString
66+
* @return array|null
67+
*/
4668
public function lookup($lookupString)
4769
{
48-
$this->read();
49-
5070
return isset($this->referers[$lookupString]) ? $this->referers[$lookupString] : null;
5171
}
5272
}

php/tests/Snowplow/RefererParser/Tests/Config/AbstractConfigReaderTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,24 @@ public function testExceptionIsThrownIfFileDoesNotExist()
1717
);
1818
$this->createConfigReader('INVALIDFILE');
1919
}
20+
21+
public function testAddReferer()
22+
{
23+
$reader = $this->createConfigReaderFromFile();
24+
$this->assertNull($reader->addReferer("intra.example.com", "Custom search", "search", ['searchq']));
25+
26+
$res = $reader->lookup("intra.example.com");
27+
$this->assertArrayHasKey('source', $res);
28+
$this->assertArrayHasKey('medium', $res);
29+
$this->assertNotEmpty('parameters', $res);
30+
31+
$this->assertNull($reader->lookup("nosearch.example.com"));
32+
}
33+
34+
public function testErrorOnAddingWrongReferer()
35+
{
36+
$reader = $this->createConfigReaderFromFile();
37+
$this->setExpectedException('Exception');
38+
$this->assertNull($reader->addReferer("intra.example.com", "Custom search", "search", 'noarray'));
39+
}
2040
}

php/tests/Snowplow/RefererParser/Tests/Config/JsonConfigReaderTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,9 @@ protected function createConfigReader($fileName)
99
{
1010
return new JsonConfigReader($fileName);
1111
}
12+
13+
protected function createConfigReaderFromFile()
14+
{
15+
return $this->createConfigReader(__DIR__ . '/../../../../../data/referers.json');
16+
}
1217
}

php/tests/Snowplow/RefererParser/Tests/Config/YamlConfigReaderTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,9 @@ protected function createConfigReader($fileName)
99
{
1010
return new YamlConfigReader($fileName);
1111
}
12+
13+
protected function createConfigReaderFromFile()
14+
{
15+
return $this->createConfigReader(__DIR__ . '/../../../../../data/referers.yml');
16+
}
1217
}

0 commit comments

Comments
 (0)