|
1 | 1 | package au.org.ala.collectory
|
2 | 2 |
|
| 3 | +import grails.converters.JSON |
| 4 | +import grails.converters.XML |
| 5 | +import grails.web.http.HttpHeaders |
| 6 | + |
3 | 7 | class DataProviderController extends ProviderGroupController {
|
4 | 8 |
|
5 | 9 | def gbifRegistryService
|
6 | 10 | def authService
|
| 11 | + def iptService |
7 | 12 |
|
8 | 13 | DataProviderController() {
|
9 | 14 | entityName = "DataProvider"
|
@@ -89,6 +94,37 @@ class DataProviderController extends ProviderGroupController {
|
89 | 94 | )
|
90 | 95 | }
|
91 | 96 |
|
| 97 | + def iptScan = { |
| 98 | + def create = params.create != null && params.create.equalsIgnoreCase("true") |
| 99 | + def check = params.check == null || !params.check.equalsIgnoreCase("false") |
| 100 | + def keyName = params.key ?: 'catalogNumber' |
| 101 | + def isShareableWithGBIF = params.isShareableWithGBIF ? params.isShareableWithGBIF.toBoolean(): true |
| 102 | + def provider = providerGroupService._get(params.uid) |
| 103 | + |
| 104 | + def username = collectoryAuthService.username() |
| 105 | + def admin = collectoryAuthService.userInRole(grailsApplication.config.ROLE_ADMIN) |
| 106 | + try { |
| 107 | + def updates = provider == null ? null : iptService.scan(provider, create, check, keyName, username, admin, isShareableWithGBIF) |
| 108 | + log.info "${updates.size()} data resources to update for ${params.uid}" |
| 109 | + response.addHeader HttpHeaders.VARY, HttpHeaders.ACCEPT |
| 110 | + withFormat { |
| 111 | + text { |
| 112 | + render updates.findAll({ dr -> dr.uid != null }).collect({ dr -> dr.uid }).join("\n") |
| 113 | + } |
| 114 | + xml { |
| 115 | + render updates as XML |
| 116 | + } |
| 117 | + json { |
| 118 | + render updates as JSON |
| 119 | + } |
| 120 | + } |
| 121 | + } catch (Exception e){ |
| 122 | + log.error("Problem scanning IPT endpoint: " + e.getMessage(), e) |
| 123 | + render (status: 500, text: "Problem scanning data provider " + params.uid) |
| 124 | + return |
| 125 | + } |
| 126 | + } |
| 127 | + |
92 | 128 | /**
|
93 | 129 | * Create a single data provider for a selected GBIF organization
|
94 | 130 | */
|
|
0 commit comments