Daniel García Aubert
57e10a8d2b
Create layergroup controllers in server construction
2018-03-28 19:37:31 +02:00
Daniel García Aubert
51fade6bd3
Ensure each controller only receives one router
2018-03-28 19:11:19 +02:00
Daniel García Aubert
22fdc3d1bf
Add query params when instantiating template
2018-03-28 15:53:34 +02:00
Daniel García Aubert
3576eb8081
Do not use template strings
2018-03-28 14:16:13 +02:00
Daniel García Aubert
9377b73aa3
Extract map error middleware
2018-03-28 14:12:21 +02:00
Daniel García Aubert
e5aff3f366
Extract layergroup-metadata middleware
2018-03-28 14:06:23 +02:00
Daniel García Aubert
78356ab298
Extract layergroupIdHeader middleware
2018-03-28 13:41:41 +02:00
Daniel García Aubert
947a367865
Extract layerStats middleware
2018-03-28 13:31:37 +02:00
Daniel García Aubert
e79d9ec2f9
Extract lastUpdatedTimeLayergroup middleware
2018-03-28 13:27:01 +02:00
Daniel García Aubert
16e8451166
Extract augment layergroup data middleware
2018-03-28 13:10:47 +02:00
Daniel García Aubert
1d54a8dccd
Extract increment map view count middleware
2018-03-28 13:01:23 +02:00
Daniel García Aubert
b68d2d9115
Extract checkJsonContentType middleware
2018-03-28 12:49:11 +02:00
Daniel García Aubert
64d540f23b
Extract initProfiler middlewar
2018-03-28 12:45:03 +02:00
Daniel García Aubert
d8d681e8bc
Create separated controllers (named & anonymous) for map controller
2018-03-28 12:39:39 +02:00
Daniel García Aubert
5b9f608667
Use express routers
2018-03-27 18:46:54 +02:00
Daniel García Aubert
7660046720
Merge branch 'master' into extract-common-mw
2018-03-27 17:25:33 +02:00
Daniel García Aubert
5f906e54e4
Merge branch 'master' into 903-locals-refactor
2018-03-27 15:44:54 +02:00
Daniel
f2a7953d9d
Merge pull request #915 from CartoDB/unify-headers-middlewared
...
Unify headers middlewares
2018-03-27 12:38:23 +02:00
Daniel García Aubert
f231dc13cf
Merge branch 'master' into unify-middlewares
2018-03-27 10:41:35 +02:00
Daniel García Aubert
a107ee67fa
Use arrow function
2018-03-27 10:32:22 +02:00
Daniel García Aubert
cb488cbde8
Extract middleware served by host header
2018-03-26 19:53:33 +02:00
Daniel García Aubert
59db640d0d
Typo
2018-03-26 16:05:53 +02:00
Daniel García Aubert
4bb35f5fab
Extract cors and user middlewares and set them up at application level
2018-03-26 15:37:44 +02:00
Daniel García Aubert
c5c8dd7ad7
Split layergroup controllers into small controllers
2018-03-23 21:20:37 +01:00
Daniel García Aubert
d3e2707fce
Tidy middlewares up: put rate limit middleware after authorization
2018-03-23 17:55:41 +01:00
Daniel García Aubert
4cba4c7a1f
Tidy middlewares up: cleanUpQeuryParams
2018-03-23 17:37:06 +01:00
Daniel García Aubert
3b1fd05940
Use layergroup token middleware where it's actually needed
2018-03-23 17:24:56 +01:00
Daniel García Aubert
5bc5c0ae86
Remove locals middleware
2018-03-23 16:53:00 +01:00
Daniel García Aubert
5fc801f8a6
Do not use locals middleware in named maps controller
2018-03-23 16:38:55 +01:00
Daniel García Aubert
f7a23c094c
Do not use locals middleware in named maps admin controller
2018-03-23 16:16:53 +01:00
Daniel García Aubert
516b1f765e
Do not use middleware local in map controller
2018-03-23 16:08:52 +01:00
Daniel García Aubert
f76606bc26
Do not use locals middleware in layergroup controller
2018-03-23 14:13:27 +01:00
Daniel García Aubert
7ba3394508
Do not merge req.params and req.query into res.locals (don't use locals middleware in analysis controller)
2018-03-23 14:10:27 +01:00
Simon Martín
f19eeff899
returning error mvt on rate limit
2018-03-23 13:30:47 +01:00
Daniel García Aubert
d3c9da6d5f
Fix layer filter by query params
2018-03-23 11:57:28 +01:00
Simon Martín
609bf13765
correct error message in rate limit
2018-03-23 11:42:53 +01:00
Daniel García Aubert
97a49fab2f
Remove function defined but nerver used
2018-03-23 11:33:40 +01:00
Daniel García Aubert
10ead27676
Pass only needed properties to named map provider cache (static endpoint)
2018-03-23 11:23:19 +01:00
Daniel García Aubert
8be7ea5cc1
Pass only needed properties to named map provider cache
2018-03-23 11:01:36 +01:00
Daniel García Aubert
ebefba9e32
Revert: move map-config assignment
2018-03-23 10:57:35 +01:00
Simon Martín
fb784d6a91
removing retry after when no necessary
2018-03-23 10:23:57 +01:00
Daniel García Aubert
c31639ebbd
Move assignments
2018-03-22 19:38:56 +01:00
Daniel García Aubert
4ff8d6fbc3
Pass only needed params to map backend
2018-03-22 19:37:08 +01:00
Daniel García Aubert
d029f81992
Pass only needed params to create layergroup map config provider
2018-03-22 19:36:42 +01:00
Daniel García Aubert
6b7c2675f1
Use database params module
2018-03-22 19:20:51 +01:00
Daniel García Aubert
4f8c184bc0
Pass only needed params to map config adapter
2018-03-22 19:14:18 +01:00
Daniel García Aubert
afc608fc5d
Pass only needed params to named map map config provider
2018-03-22 18:57:26 +01:00
Daniel García Aubert
8523875349
Remove function thet is never used
2018-03-22 18:29:00 +01:00
Daniel García Aubert
79955c7fac
Pass only needed params to tile backend
2018-03-22 18:27:40 +01:00
Daniel García Aubert
d3cbd70054
Pass only needed params to attributes backend backend
2018-03-22 18:16:41 +01:00
Daniel García Aubert
81706b8726
Pass only needed params to dataview backend (search)
2018-03-22 18:03:38 +01:00
Daniel García Aubert
2812a54210
Pass only needed params to dataview backend
2018-03-22 17:55:15 +01:00
Daniel García Aubert
258d768887
Use upercase for constants
2018-03-22 17:54:40 +01:00
Daniel García Aubert
1059066c05
Use module to get database parameters
2018-03-22 17:53:24 +01:00
Daniel García Aubert
875f3c07b3
Pass only needed params to MapStoreMapConfigProvider
2018-03-22 17:07:38 +01:00
Daniel García Aubert
8ce72ea842
Do not pass res.locals
to collaborators
2018-03-22 12:30:51 +01:00
Daniel García Aubert
e542d38ec7
Reorder middleware
2018-03-22 11:38:33 +01:00
Daniel García Aubert
b40ed13f47
Do not use step to deal with asyn code
2018-03-21 19:08:37 +01:00
Javier Goizueta
b9de49d5ab
Remove superfluous aggregation filter condition
...
The default aggregation doesn't admit filters, so this wasn't necessary.
2018-03-21 17:36:26 +01:00
Javier Goizueta
6ada8ba6a2
Implement aggregation filters
2018-03-21 17:01:32 +01:00
Daniel García Aubert
672b19b106
Magic number
2018-03-21 16:48:21 +01:00
Daniel García Aubert
4a2580c9ea
Missing semicolon
2018-03-21 16:43:34 +01:00
Daniel García Aubert
52c8c9341a
Remove function defined but never used
2018-03-21 16:40:09 +01:00
Daniel García Aubert
72c4a7abd6
Extract cache control header middleware
2018-03-21 16:38:37 +01:00
Daniel García Aubert
d022a1fa5e
Extract last-modified header middlleware
2018-03-21 14:43:00 +01:00
Daniel García Aubert
a142620b70
Make generic middlewares to calculate surrogate key and cache channel headers:
...
- In controllers: all reference to map config are now camelized, for instance: mapconfig -> mapConfig or mapconfigProvider -> mapConfigProvider
- In controllers: all map config providers created in req/res cycle are saved into `res.locals` and `mapConfigProvider` as key.
- In map-config-providers: all of them implement `.getAffectedTables()`, in order to calculate the tables involved for a given map-config. For that, `pgConnection` and `affectedTablesCache` are injected as constructor argument.
- Named Map Provider: rename references from `affectedTablesAndLastUpdate` to `affectedTables`.
- Named Map Provider Cache: In order to create new named map providers, needs affectedTablesCache.
- Extract locals middlewares (surrogate-key and cache-channel) from controllers and create an unified version of them.
- Extract last-modified middleware from named maps controller (draft).
2018-03-21 14:11:54 +01:00
Daniel García Aubert
f8d1e159f4
Please jshint
2018-03-20 11:09:05 +01:00
Daniel García Aubert
df999e040c
Merge branch 'spread-prepare-context-middleware' into unify-middlewares
2018-03-20 11:06:31 +01:00
Daniel García Aubert
2e13bc42a1
Merge branch 'master' into spread-prepare-context-middleware
2018-03-20 11:01:13 +01:00
Daniel García Aubert
9fd2519c12
Rename middleware
2018-03-20 09:34:50 +01:00
Daniel García Aubert
325bdfe92f
Move middleware
2018-03-20 09:34:06 +01:00
Daniel García Aubert
9211fa065b
Extract sendResponse middleware
2018-03-19 19:48:14 +01:00
Daniel García Aubert
8333b39928
Use res.body as placeholder of layergroup
2018-03-19 19:16:18 +01:00
Simon Martín
a830eb4ea0
Merge branch 'master' into rateLimits
2018-03-19 11:25:13 +01:00
Daniel García Aubert
91a7dc8cf0
Use const
2018-03-16 17:31:40 +01:00
Daniel García Aubert
e52cd28f1e
User res.body as placeholder of the response's body
2018-03-16 17:13:48 +01:00
Daniel García Aubert
7bdbd4cb03
Move variable declaration
2018-03-16 16:42:47 +01:00
Daniel García Aubert
313fc75ec8
Rename middleware
2018-03-16 16:28:50 +01:00
Daniel García Aubert
639a69a639
Reorder middlewares to optimize workflow
2018-03-16 16:12:36 +01:00
Daniel García Aubert
67d2d2fe95
Use spread operator
2018-03-16 14:20:41 +01:00
Daniel García Aubert
0aa8d63a6e
Unifiy allowQueryParams and cleanUpQueryParams middlewares
2018-03-16 14:03:59 +01:00
Daniel García Aubert
7b11cdcb74
Use template string
2018-03-16 13:08:00 +01:00
Daniel García Aubert
071a5a4bdf
Rename base paths
2018-03-16 13:04:42 +01:00
Daniel García Aubert
7ff7b0c2d1
Extract rest of the middlewares from prepare contex
2018-03-15 19:38:11 +01:00
Daniel García Aubert
30dab7df9f
Extract authorize middeware form prepareContext
2018-03-15 18:48:29 +01:00
Daniel García Aubert
afff06c7e6
Extract db-conn-setup middleware for prepare-context
2018-03-15 15:33:20 +01:00
Simon Martín
4e8cf136c8
rate limit middleware before auth
2018-03-14 18:06:06 +01:00
Daniel
f49d7478d7
Merge pull request #899 from CartoDB/refactor-named-maps-admin
...
Named Maps Admin: Extract middlewares form controller's context
2018-03-14 17:55:03 +01:00
Daniel
b4a1c9d648
Merge pull request #898 from CartoDB/refactor-analysis-controller
...
Refactor analysis controller
2018-03-14 17:50:15 +01:00
Simon Martín
48a7d28aa6
rate limit analysis catalog endpoint
2018-03-14 17:46:19 +01:00
Daniel García Aubert
04146f897d
Use template strings
2018-03-14 17:33:54 +01:00
Daniel García Aubert
a34658c97f
Use objects instead of param list
2018-03-14 17:31:37 +01:00
Simon Martín
cbfeb0158e
adding type and subtype to rate limit error
2018-03-14 17:27:59 +01:00
Daniel García Aubert
8d37e00869
Use objects instead of parameter list
2018-03-14 17:25:58 +01:00
Daniel García Aubert
421e611356
Use objects instead of a list of parameters
2018-03-14 17:22:47 +01:00
Daniel García Aubert
f078713d28
typo
2018-03-14 17:15:50 +01:00
Daniel García Aubert
a8d31d52cf
Pass only required params
2018-03-14 17:08:04 +01:00
Daniel García Aubert
091efe52fc
Extract sendResponse middleware from context
2018-03-14 13:32:43 +01:00
Daniel García Aubert
a5c508733a
Extract setContentTypeHeader middleware from controller's context
2018-03-14 13:31:39 +01:00
Daniel García Aubert
ce944d9a7d
Extract setCacheControlHeader from controller's context
2018-03-14 13:30:27 +01:00
Daniel García Aubert
8321b5adba
Extract setLastModifiedHeader from controller's context
2018-03-14 13:27:56 +01:00
Daniel García Aubert
667c972308
Extract setCacheChannelHeader and setSurrogateKeyHeader from controller's context
2018-03-14 13:25:42 +01:00
Daniel García Aubert
3dbe05be3a
Extarct setCacheChannelHeader middleware from controller's context
2018-03-14 13:19:56 +01:00
Daniel García Aubert
2d4ce19250
Extract incrementMapViews middleware from controllers middleware
2018-03-14 13:18:37 +01:00
Daniel García Aubert
3b3e0c0acd
Extract getImage middleware from controller's context
2018-03-14 13:15:38 +01:00
Daniel García Aubert
c3ddb933bb
Extract getStaticImageOptions middleware from controller's context
2018-03-14 13:11:17 +01:00
Daniel García Aubert
6aae60ece7
Extract getTile middleware from controller's context
2018-03-14 13:07:40 +01:00
Daniel García Aubert
6b3dc8ece0
Extract prepareLayerFilterFromPreviewLayers middleware from controller's context
2018-03-14 13:05:05 +01:00
Daniel García Aubert
7dd231a8c9
Extract getTemplate middleware form controller's context
2018-03-14 13:02:49 +01:00
Daniel García Aubert
35a3219012
Extract getAffectedTables middleware from controller's context
2018-03-14 13:01:07 +01:00
Daniel García Aubert
7598e6ab4b
Extract getNamedMapProvider middleware from controller's context
2018-03-14 12:58:56 +01:00
Simon Martín
e1a2c45b19
Headers following rfc6648
2018-03-14 12:09:20 +01:00
Simon Martín
0e43c54214
Merge branch 'master' into rateLimits
2018-03-13 18:09:44 +01:00
Daniel García Aubert
2cc4161239
Missing semicolon
2018-03-13 15:02:44 +01:00
Daniel García Aubert
fc8f3fdf27
Create send response middleware
2018-03-13 13:31:49 +01:00
Daniel García Aubert
24b76208ac
Improve naming
2018-03-13 13:21:40 +01:00
Daniel García Aubert
0de272b195
Extract middlewares form controller's context
2018-03-13 13:12:18 +01:00
Daniel
7faf40004c
Merge pull request #891 from CartoDB/refactor-map-controler
...
Refactor map controler
2018-03-13 12:44:53 +01:00
Daniel García Aubert
88ae2d473a
Typo
2018-03-13 11:43:08 +01:00
Daniel García Aubert
337b47685c
Remove controler context from middlewares
2018-03-13 11:42:25 +01:00
Daniel
2eb6e95fed
Merge pull request #895 from CartoDB/fix-performance-regression
...
Fix performance regression
2018-03-12 15:48:20 +01:00
Daniel García Aubert
db8130be4f
Honor jshint
2018-03-12 14:18:07 +01:00
Daniel García Aubert
379b649e95
Don't get mapconfig prematurely
2018-03-12 13:29:40 +01:00
Daniel García Aubert
cc76ccc626
Fix undeclared variable
2018-03-12 13:10:20 +01:00
Daniel García Aubert
25931a618b
Do not calculate affected tables when there are no affacted tables
2018-03-12 12:33:29 +01:00
Eneko Lakasta
5ad1e1b645
merge master
2018-03-12 11:52:38 +01:00
Daniel García Aubert
01ed513a79
Use 'const'
2018-03-09 17:02:13 +01:00
Daniel García Aubert
504f68b8aa
Missing semicolon
2018-03-09 16:18:33 +01:00
Daniel García Aubert
cbb08f5642
Extract function
2018-03-09 15:49:03 +01:00
Daniel García Aubert
02f93f3a14
Extract layergroup-metadata class
2018-03-09 12:58:05 +01:00
Raúl Marín
06604cd738
Merge pull request #888 from Algunenano/support_1368
...
Aggregation count: Do not return null categories
2018-03-09 11:06:40 +01:00
Raul Marin
089be35b5d
Aggregation count: Do not return null categories
2018-03-08 18:13:20 +01:00
Daniel García Aubert
bbcb335d60
Merge branch 'master' into refactor-map-controler
2018-03-08 13:18:43 +01:00
Daniel García Aubert
aae814a156
Use template strings
2018-03-08 12:35:54 +01:00
Daniel García Aubert
49bcc5368d
Use base number as radix to pare intergers
2018-03-08 12:30:27 +01:00
Daniel García Aubert
555e04f9e7
Use ternary operator
2018-03-08 12:27:49 +01:00
Daniel García Aubert
3f6f2e4e23
Use template string
2018-03-08 12:23:43 +01:00
Daniel García Aubert
abffc4b067
Uppercase for actual constants
2018-03-08 12:23:00 +01:00
Daniel García Aubert
363cb0b679
Extract middlewares from map-controller class
2018-03-08 12:16:24 +01:00
Daniel García Aubert
d26910ba9c
Extract checkJsonContentType middleware from MapController class
2018-03-07 19:11:03 +01:00
Daniel García Aubert
74b2f305ea
Extract initProfiler middleware from map-controller
2018-03-07 19:09:52 +01:00
Daniel García Aubert
6c2f893651
Rename map-store-map-config-provider middleware
2018-03-07 18:53:20 +01:00
Daniel García Aubert
faaf121eb6
Rename center and bbox middlewares
2018-03-07 18:51:43 +01:00
Daniel García Aubert
83ab65163d
Rename attributes middleware
2018-03-07 18:43:35 +01:00
Daniel García Aubert
9dcd5ff332
Impreve naming
2018-03-07 15:56:16 +01:00
Daniel García Aubert
c6635f63c1
Unify layer and tile middlewares
2018-03-07 15:39:59 +01:00
Daniel García Aubert
56213219e4
Rename middleware
2018-03-07 15:25:30 +01:00
Daniel García Aubert
7c2dc20dbe
Merge branch 'master' into middlewarify-layergroup-controller
2018-03-07 15:24:34 +01:00
Daniel García Aubert
c8e8317ea4
Do not attach middleware to LayergroupController classs
2018-03-07 15:20:47 +01:00
Daniel
8509796743
Merge pull request #882 from CartoDB/middleware-refactor
...
Middleware refactor
2018-03-07 15:19:04 +01:00
Daniel García Aubert
90aaed0f2c
Typo
2018-03-07 15:05:36 +01:00
Daniel García Aubert
48be15b742
Use const in favour of var
2018-03-07 15:01:04 +01:00
Daniel García Aubert
a95b3f2f99
Fix comment
2018-03-07 14:54:09 +01:00
Daniel García Aubert
b2cc7ab84f
Move functions to improve readablity
2018-03-07 14:53:13 +01:00
Daniel García Aubert
eb3414f07f
Follow middleware pattern
2018-03-07 14:48:21 +01:00
Daniel García Aubert
292dad130d
Move middlewares to the right place
2018-03-07 14:42:21 +01:00
Daniel García Aubert
ec41cddb19
Do not pass the whole res.locals to backends
2018-03-07 12:52:44 +01:00
Daniel García Aubert
5871f8290d
Use default param values
2018-03-07 12:46:18 +01:00
Daniel García Aubert
33089be2cd
Do not attach header middlewares to node status endpoint
2018-03-07 12:30:59 +01:00
Daniel García Aubert
d351c8d14c
Define var as const
2018-03-07 12:09:41 +01:00
Daniel García Aubert
82446e5ffa
Use template string to define routes
2018-03-07 12:05:53 +01:00
Daniel García Aubert
b786164e8a
Middlewarify metrics increment whether success or error
2018-03-07 11:56:57 +01:00
Daniel García Aubert
a66c19c6c7
Do not bind context when unneeded
2018-03-06 20:05:55 +01:00
Daniel García Aubert
94d1667d70
Refactor affected tables
2018-03-06 20:01:43 +01:00
Daniel García Aubert
3399db1cff
Add comment
2018-03-06 18:58:09 +01:00
Daniel García Aubert
874ea99d19
Remove step
2018-03-06 18:43:23 +01:00
Daniel García Aubert
7022fb87b4
Extract header, affected-tables and response middlewares
2018-03-06 18:28:40 +01:00
Daniel García Aubert
7c1e2a6af0
Avoid nested steps
2018-03-06 17:08:39 +01:00
Daniel García Aubert
2f011c3266
Remove nested steps
2018-03-06 17:01:51 +01:00
Daniel García Aubert
4762aa0897
Remove step from sendResponse function
2018-03-06 16:55:27 +01:00
Daniel García Aubert
f30f83331f
Extract tile error middleware
2018-03-06 16:44:37 +01:00
Daniel García Aubert
3695e1e3e5
Place function closer to where is called
2018-03-06 16:21:46 +01:00
Daniel García Aubert
585b5929aa
Middlewarify tile and layer endpoints
2018-03-06 16:19:53 +01:00
Eneko Lakasta
b0eacb2a79
add vary header to honor authorization header when caching
2018-03-06 12:46:38 +01:00
Daniel García Aubert
9b40370794
Now that mapConfigProvider is linked to 'res.locals' do not pass the whole 'res.locals' to map-config-provider to avoid converting circular structure to JSON
2018-03-06 12:44:17 +01:00
Daniel García Aubert
95f3d58383
Make jshint happy
2018-03-05 19:33:46 +01:00
Daniel García Aubert
0f0cde1093
Middlewarify static-api (bbox/center) endpoints
2018-03-05 19:26:26 +01:00
Daniel García Aubert
ca56df5cfe
Middlewarify attributes endpoint
2018-03-05 18:28:52 +01:00
Daniel García Aubert
d8a4209768
Middlewarify analysis-node-status endpoint
2018-03-05 18:13:19 +01:00
Daniel García Aubert
40712a2e62
Middlewarify search dataview endpoint
2018-03-05 18:05:42 +01:00
Daniel García Aubert
acb9ce33b1
Pass dataview-backend as middleware option
2018-03-05 18:04:50 +01:00
Daniel García Aubert
5e43a7145a
Middlewarify dataview endpoint
2018-03-05 17:44:04 +01:00
Daniel García Aubert
5de8c4f9c3
Make explicit that forceFormat
is optional
2018-03-05 11:19:17 +01:00
Simon Martín
9bc9fc46ff
using cartodb-redis for rate limit
2018-03-03 14:46:39 +01:00
Simon Martín
a2bf235553
Merge branch 'master' into rateLimits
2018-03-02 21:21:10 +01:00
Simon Martín
1b18b2b188
changing endpointGroup var name
2018-03-02 20:55:50 +01:00
Daniel García Aubert
6331bebb30
Going green: be able to request defaul named tiles in vector format
2018-03-02 18:25:23 +01:00
Simon Martín
4dd404771e
refactoring user_limits_api
2018-03-02 16:07:42 +01:00
Simon Martín
bf267e9c95
fix checking rate limit enabled
2018-03-02 15:48:31 +01:00
Simon Martín
843f70cdba
interchange var and middlewware names
2018-03-02 15:35:38 +01:00
Simon Martín
42e0e07c14
refactoring rate limit middleware
2018-03-02 15:33:50 +01:00
Simon Martín
dfdd2b9043
adding middlewares to composer in maps controller
2018-03-02 15:24:18 +01:00
Daniel García Aubert
8656fcd8d1
Use 'const'
2018-03-02 14:04:29 +01:00
Daniel García Aubert
f2f6b9d49c
ES6 goodies
2018-03-02 13:29:30 +01:00
Daniel García Aubert
82f1e6753b
Remove unreachable code
2018-03-02 13:14:02 +01:00
Daniel García Aubert
7ed717607a
Missing space before paramenter list
2018-03-02 13:08:57 +01:00
Daniel García Aubert
416970c819
Remove empty line
2018-03-01 19:10:35 +01:00
Daniel García Aubert
ccc28f3617
Add profiler step to lzma
2018-03-01 19:09:11 +01:00
Daniel García Aubert
5bac36b30f
Remove bad profiler usage
2018-03-01 18:53:05 +01:00
Daniel García Aubert
ef3ffddec7
Cosmetic changes
2018-03-01 18:49:44 +01:00