Class: CardDB::Resources::ScanTemplates
- Defined in:
- lib/carddb/resources/scan_templates.rb
Overview
Scan template resource for publisher-managed scan layouts.
Constant Summary collapse
- SCOPE_KEY_MAP =
{ publisher_slug: 'publisherSlug', game_key: 'gameKey', dataset_key: 'datasetKey', template_id: 'templateId', include_archived: 'includeArchived' }.freeze
- TEMPLATE_KEY_MAP =
SCOPE_KEY_MAP.merge( is_default: 'isDefault', example_file_id: 'exampleFileId', card_aspect_ratio: 'cardAspectRatio', region_ocr_hints: 'regionOcrHints' ).freeze
- REGION_KEY_MAP =
{ sort_order: 'sortOrder', shape_type: 'shapeType', semantic_type: 'semanticType', extraction_mode: 'extractionMode', lookup_mode: 'lookupMode', is_required: 'isRequired' }.freeze
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#create(input = nil, **params) ⇒ Object
Create a publisher-managed scan template.
-
#list(input = nil, **params) ⇒ Object
List publisher-managed scan templates for a game or dataset scope.
-
#preview(input = nil, **params) ⇒ Object
Validate a draft scan template and normalize provided region OCR hints.
-
#resolve(input = nil, **params) ⇒ Object
Resolve the active scan template for a game or dataset scope.
-
#update(id = nil, input = nil, **params) ⇒ Object
Replace a publisher-managed scan template.
Methods inherited from Base
Constructor Details
This class inherits a constructor from CardDB::Resources::Base
Instance Method Details
#create(input = nil, **params) ⇒ Object
Create a publisher-managed scan template. Requires a server-side secret credential.
56 57 58 59 60 61 62 63 |
# File 'lib/carddb/resources/scan_templates.rb', line 56 def create(input = nil, **params) config.require_secret_credential!('scan_templates.create') request = template_input(coerce_input(input, params)) data = connection.execute(QueryBuilder.create_scan_template, { input: request }) ScanTemplatePayload.new(data['createScanTemplate'], client: client) end |
#list(input = nil, **params) ⇒ Object
List publisher-managed scan templates for a game or dataset scope.
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/carddb/resources/scan_templates.rb', line 43 def list(input = nil, **params) request = scoped_input(graphql_input(coerce_input(input, params), SCOPE_KEY_MAP)) key = cache_key('scan_templates', 'list', **request) with_cache(key, resource: :scan_templates, cache: params[:cache]) do data = connection.execute(QueryBuilder.scan_templates, { input: request }) (data.dig('scanTemplates', 'templates') || []).map do |template| ScanTemplate.new(template, client: client) end end end |
#preview(input = nil, **params) ⇒ Object
Validate a draft scan template and normalize provided region OCR hints.
79 80 81 82 83 84 |
# File 'lib/carddb/resources/scan_templates.rb', line 79 def preview(input = nil, **params) request = template_input(coerce_input(input, params)) data = connection.execute(QueryBuilder.preview_scan_template, { input: request }) ScanTemplatePreview.new(data['previewScanTemplate'], client: client) end |
#resolve(input = nil, **params) ⇒ Object
Resolve the active scan template for a game or dataset scope.
32 33 34 35 36 37 38 39 40 |
# File 'lib/carddb/resources/scan_templates.rb', line 32 def resolve(input = nil, **params) request = scoped_input(graphql_input(coerce_input(input, params), SCOPE_KEY_MAP)) key = cache_key('scan_templates', 'resolve', **request) with_cache(key, resource: :scan_templates, cache: params[:cache]) do data = connection.execute(QueryBuilder.resolve_scan_template, { input: request }) ScanTemplateResolution.new(data['resolveScanTemplate'], client: client) end end |
#update(id = nil, input = nil, **params) ⇒ Object
Replace a publisher-managed scan template. Requires a server-side secret credential.
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/carddb/resources/scan_templates.rb', line 66 def update(id = nil, input = nil, **params) config.require_secret_credential!('scan_templates.update') id, request_source = update_args(id, input, params) raise ArgumentError, 'scan template id is required' unless id request = template_input(request_source) data = connection.execute(QueryBuilder.update_scan_template, { id: id, input: request }) ScanTemplatePayload.new(data['updateScanTemplate'], client: client) end |