Skip to content

Commit 394e0a2

Browse files
committed
Updated swap to ~3.0.
1 parent fa36d42 commit 394e0a2

File tree

14 files changed

+591
-663
lines changed

14 files changed

+591
-663
lines changed

.travis.yml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,26 @@
11
language: php
22

3+
sudo: false
4+
5+
cache:
6+
directories:
7+
- vendor
8+
- $HOME/.composer/cache
9+
310
php:
4-
- 5.5
5-
- 5.6
6-
- 7.0
7-
- 7.1
8-
- nightly
9-
- hhvm
11+
- 5.6
12+
- 7.0
13+
- 7.1
14+
- nightly
15+
- hhvm
16+
17+
before_install:
18+
- if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]] ; then pecl channel-update pecl.php.net; fi;
19+
- if [[ $TRAVIS_PHP_VERSION = 7.* ]] ; then pecl config-set preferred_state beta; echo yes | pecl install apcu; fi;
20+
- if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then phpenv config-add ./Tests/travis/php.ini; fi;
1021

11-
before_script:
12-
- composer update --prefer-source
22+
install:
23+
- travis_retry composer install --no-interaction --no-ansi --no-progress --no-suggest --optimize-autoloader
1324

14-
script: phpunit
25+
script:
26+
- ./vendor/bin/phpunit

DependencyInjection/Compiler/ProviderPass.php

Lines changed: 0 additions & 71 deletions
This file was deleted.

DependencyInjection/Configuration.php

Lines changed: 115 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -30,41 +30,127 @@ public function getConfigTreeBuilder()
3030
$rootNode = $treeBuilder->root('florianv_swap');
3131

3232
$rootNode
33+
->fixXmlConfig('provider')
3334
->validate()
34-
->ifTrue(function($providers) {
35-
return !isset($providers['providers']) || count($providers['providers']) === 0;
35+
->ifTrue(function($config) {
36+
return !isset($config['providers']) || count($config['providers']) === 0;
3637
})
3738
->thenInvalid('You must define at least one provider.')
38-
->end()
39+
->end()
3940
->children()
40-
->scalarNode('http_adapter')->defaultValue('florianv_swap.http_adapter.file_get_contents')->end()
4141
->arrayNode('cache')
42+
->addDefaultsIfNotSet()
4243
->children()
43-
->integerNode('ttl')->isRequired()->end()
44-
->append($this->getCacheDriverNode('doctrine'))
44+
->integerNode('ttl')
45+
->defaultValue(3600)
46+
->end()
47+
->scalarNode('type')
48+
->info('A cache type or service id')
49+
->treatFalseLike(null)
50+
->treatTrueLike(null)
51+
->defaultNull()
52+
->end()
4553
->end()
4654
->end()
4755
->arrayNode('providers')
4856
->children()
49-
->append($this->createSimpleProviderNode('yahoo_finance'))
50-
->append($this->createSimpleProviderNode('google_finance'))
57+
->append($this->createSimpleProviderNode('fixer'))
58+
->append($this->createSimpleProviderNode('google'))
59+
->append($this->createSimpleProviderNode('cryptonator'))
60+
->append($this->createSimpleProviderNode('webservicex'))
61+
->append($this->createSimpleProviderNode('central_bank_of_czech_republic'))
62+
->append($this->createSimpleProviderNode('central_bank_of_republic_turkey'))
5163
->append($this->createSimpleProviderNode('european_central_bank'))
5264
->append($this->createSimpleProviderNode('national_bank_of_romania'))
53-
->append($this->createSimpleProviderNode('central_bank_of_republic_turkey'))
65+
->append($this->createSimpleProviderNode('russian_central_bank'))
66+
->arrayNode('currency_data_feed')
67+
->children()
68+
->integerNode('priority')->defaultValue(0)->end()
69+
->scalarNode('api_key')
70+
->treatFalseLike(null)
71+
->treatTrueLike(null)
72+
->isRequired()
73+
->cannotBeEmpty()
74+
->end()
75+
->end()
76+
->end()
77+
->arrayNode('currency_layer')
78+
->children()
79+
->integerNode('priority')->defaultValue(0)->end()
80+
->scalarNode('access_key')
81+
->treatFalseLike(null)
82+
->treatTrueLike(null)
83+
->isRequired()
84+
->cannotBeEmpty()
85+
->end()
86+
->booleanNode('enterprise')->defaultFalse()->end()
87+
->end()
88+
->end()
89+
->arrayNode('forge')
90+
->children()
91+
->integerNode('priority')->defaultValue(0)->end()
92+
->scalarNode('api_key')
93+
->treatFalseLike(null)
94+
->treatTrueLike(null)
95+
->isRequired()
96+
->cannotBeEmpty()
97+
->end()
98+
->end()
99+
->end()
54100
->arrayNode('open_exchange_rates')
55101
->children()
56102
->integerNode('priority')->defaultValue(0)->end()
57-
->scalarNode('app_id')->isRequired()->cannotBeEmpty()->end()
103+
->scalarNode('app_id')
104+
->treatFalseLike(null)
105+
->treatTrueLike(null)
106+
->isRequired()
107+
->cannotBeEmpty()
108+
->end()
58109
->booleanNode('enterprise')->defaultFalse()->end()
59110
->end()
60111
->end()
61112
->arrayNode('xignite')
62113
->children()
63114
->integerNode('priority')->defaultValue(0)->end()
64-
->scalarNode('token')->isRequired()->cannotBeEmpty()->end()
115+
->scalarNode('token')
116+
->treatFalseLike(null)
117+
->treatTrueLike(null)
118+
->isRequired()
119+
->cannotBeEmpty()
120+
->end()
121+
->end()
122+
->end()
123+
->arrayNode('array')
124+
->children()
125+
->integerNode('priority')->defaultValue(0)->end()
126+
->variableNode('rates')
127+
->treatFalseLike(null)
128+
->treatTrueLike(null)
129+
->isRequired()
130+
->cannotBeEmpty()
131+
->validate()
132+
->ifTrue(function($config) {
133+
if (!is_array($config) || empty($config)) {
134+
return true;
135+
}
136+
137+
foreach ($config as $entry) {
138+
if (!is_array($entry) || empty($entry)) {
139+
return true;
140+
}
141+
142+
if (!$this->validateArrayProviderEntry($entry)) {
143+
return true;
144+
}
145+
}
146+
147+
return false;
148+
})
149+
->thenInvalid('Invalid configuration for array provider.')
150+
->end()
151+
->end()
65152
->end()
66153
->end()
67-
->append($this->createSimpleProviderNode('webservicex'))
68154
->end()
69155
->end()
70156
->end()
@@ -77,43 +163,37 @@ private function createSimpleProviderNode($name)
77163
{
78164
$treeBuilder = new TreeBuilder();
79165
$node = $treeBuilder->root($name);
80-
81166
$node
82167
->children()
83168
->integerNode('priority')->defaultValue(0)->end()
84169
->end()
85170
;
86-
87171
return $node;
88172
}
89173

90174
/**
91-
* Return a cache driver node
175+
* Validates an array provider config entry.
92176
*
93-
* @param string $name
177+
* @param array $entry
94178
*
95-
* @return ArrayNodeDefinition
179+
* @return bool
96180
*/
97-
private function getCacheDriverNode($name)
181+
private function validateArrayProviderEntry(array $entry)
98182
{
99-
$treeBuilder = new TreeBuilder();
100-
$node = $treeBuilder->root($name);
183+
foreach ($entry as $key => $value) {
184+
if (preg_match('~^[1|2][0-9]{3}-[0-9]{2}-[0-9]{2}$~', $key)) {
185+
if (is_array($value)) {
186+
return $this->validateArrayProviderEntry($value);
187+
}
188+
} elseif (preg_match('~^[A-Z]+/[A-Z]+$~', $key)) {
189+
if (is_float($value) && 0 < $value) {
190+
continue;
191+
}
192+
}
101193

102-
$node
103-
->addDefaultsIfNotSet()
104-
->beforeNormalization()
105-
->ifString()
106-
->then(function($v) { return array('type' => $v); })
107-
->end()
108-
->isRequired()
109-
->children()
110-
->scalarNode('type')
111-
->info('A cache type or service id')
112-
->defaultValue('array')
113-
->end()
114-
->end()
115-
;
194+
return false;
195+
}
116196

117-
return $node;
197+
return true;
118198
}
119199
}

0 commit comments

Comments
 (0)