|
10 | 10 | from invenio_i18n import lazy_gettext as _
|
11 | 11 | from invenio_oaiserver.models import OAISet
|
12 | 12 | from invenio_records_resources.services import ServiceConfig
|
13 |
| -from invenio_records_resources.services.base import Link |
14 |
| -from invenio_records_resources.services.records.links import pagination_links |
| 13 | +from invenio_records_resources.services.base import EndpointLink |
| 14 | +from invenio_records_resources.services.records.links import pagination_endpoint_links |
15 | 15 | from sqlalchemy import asc, desc
|
16 | 16 |
|
17 |
| -from ..services.links import OAIPMHSetLink |
18 | 17 | from ..services.permissions import OAIPMHServerPermissionPolicy
|
19 | 18 | from ..services.results import (
|
20 | 19 | OAIMetadataFormatItem,
|
@@ -90,21 +89,74 @@ class OAIPMHServerServiceConfig(ServiceConfig):
|
90 | 89 | metadata_format_schema = OAIPMHMetadataFormat
|
91 | 90 |
|
92 | 91 | links_item = {
|
93 |
| - "self": OAIPMHSetLink("{+api}/oaipmh/sets/{id}"), |
94 |
| - "oai-listrecords": OAIPMHSetLink( |
95 |
| - "{+ui}/oai2d?verb=ListRecords&metadataPrefix=oai_dc&set={spec}" |
| 92 | + "self": EndpointLink( |
| 93 | + "oaipmh-server.read", |
| 94 | + vars=lambda obj, vars_: vars_.update({"id": obj.id}), |
| 95 | + params=["id"], |
96 | 96 | ),
|
97 |
| - "oai-listidentifiers": OAIPMHSetLink( |
98 |
| - "{+ui}/oai2d?verb=ListIdentifiers&metadataPrefix=oai_dc&set={spec}" |
| 97 | + "oai-listrecords": EndpointLink( |
| 98 | + "invenio_oaiserver.response", |
| 99 | + vars=lambda obj, vars_: vars_.update( |
| 100 | + { |
| 101 | + # querystring parameters |
| 102 | + "args": { |
| 103 | + "verb": "ListRecords", |
| 104 | + "metadataPrefix": "oai_dc", |
| 105 | + "set": obj.spec, |
| 106 | + } |
| 107 | + } |
| 108 | + ), |
| 109 | + ), |
| 110 | + "oai-listidentifiers": EndpointLink( |
| 111 | + "invenio_oaiserver.response", |
| 112 | + vars=lambda obj, vars_: vars_.update( |
| 113 | + { |
| 114 | + "args": { |
| 115 | + "verb": "ListIdentifiers", |
| 116 | + "metadataPrefix": "oai_dc", |
| 117 | + "set": obj.spec, |
| 118 | + } |
| 119 | + } |
| 120 | + ), |
99 | 121 | ),
|
100 | 122 | }
|
101 | 123 |
|
102 | 124 | links_search = {
|
103 |
| - **pagination_links("{+api}/oaipmh/sets{?args*}"), |
104 |
| - "oai-listsets": Link("{+ui}/oai2d?verb=ListSets"), |
105 |
| - "oai-listrecords": Link("{+ui}/oai2d?verb=ListRecords&metadataPrefix=oai_dc"), |
106 |
| - "oai-listidentifiers": Link( |
107 |
| - "{+ui}/oai2d?verb=ListIdentifiers&metadataPrefix=oai_dc" |
| 125 | + **pagination_endpoint_links("oaipmh-server.search"), |
| 126 | + "oai-listsets": EndpointLink( |
| 127 | + "invenio_oaiserver.response", |
| 128 | + vars=lambda obj, vars_: vars_.update({"args": {"verb": "ListSets"}}), |
| 129 | + ), |
| 130 | + "oai-listrecords": EndpointLink( |
| 131 | + "invenio_oaiserver.response", |
| 132 | + vars=lambda obj, vars_: vars_.update( |
| 133 | + { |
| 134 | + "args": { |
| 135 | + "verb": "ListRecords", |
| 136 | + "metadataPrefix": "oai_dc", |
| 137 | + } |
| 138 | + } |
| 139 | + ), |
| 140 | + ), |
| 141 | + "oai-listidentifiers": EndpointLink( |
| 142 | + "invenio_oaiserver.response", |
| 143 | + vars=lambda obj, vars_: vars_.update( |
| 144 | + { |
| 145 | + "args": { |
| 146 | + "verb": "ListIdentifiers", |
| 147 | + "metadataPrefix": "oai_dc", |
| 148 | + } |
| 149 | + } |
| 150 | + ), |
| 151 | + ), |
| 152 | + "oai-identify": EndpointLink( |
| 153 | + "invenio_oaiserver.response", |
| 154 | + vars=lambda obj, vars_: vars_.update( |
| 155 | + { |
| 156 | + "args": { |
| 157 | + "verb": "Identify", |
| 158 | + } |
| 159 | + } |
| 160 | + ), |
108 | 161 | ),
|
109 |
| - "oai-identify": Link("{+ui}/oai2d?verb=Identify"), |
110 | 162 | }
|
0 commit comments