class EzproxyProviders::Cambridge
Public Class Methods
parse(path, params, uri)
click to toggle source
# File lib/logstash/filters/ezproxy_providers/cambridge.rb, line 4 def self.parse (path, params, uri) url = uri.to_s data = { "provider" => "cambridge" } if (params.key?('url')) url = params['url'][0] end if (params.key?('fileId') && !/\|/.match(params['fileId'][0])) data['print_identifier'] = params['fileId'][0][1, 4] + '-' + params['fileId'][0][5, 4] data['unit_id'] = params['fileId'][0] end if params.key?('jid') data['title_id'] = params['jid'][0] end match = /\/action\/([a-z]+)/i.match(url) if (match) case (match[1]) when 'displayJournal' data['unit_id'] = params['jid'][0] data['rtype'] = 'TOC' data['mime'] = 'MISC' when 'displayJournalTab' data['rtype'] = 'TOC' data['mime'] = 'MISC' when 'displayIssue' data['rtype'] = 'TOC' data['mime'] = 'MISC' data['unit_id'] = params['iid'][0] data['volume'] = params['volumeId'][0] data['issue'] = params['issueId'][0] when 'displayFulltext' if (params.key?('pdftype')) data['unit_id'] = params['aid'][0] data['rtype'] = 'ARTICLE' data['mime'] = 'PDF' data['volume'] = params['volumeId'][0] data['issue'] = params['issueId'][0] else if (!data.key?('unit_id')) data['unit_id'] = params['aid'][0] end data['rtype'] = 'ARTICLE' data['mime'] = 'HTML' data['volume'] = params['volumeId'][0] data['issue'] = params['issueId'][0] if (params.key?('fileId')) data['doi'] = '10.1017/' + params['fileId'][0] end end when 'displayAbstract' data['rtype'] = 'ABS' data['mime'] = 'HTML' if (params.key?('fileId')) data['doi'] = '10.1017/' + params['fileId'][0] end else data['title_id'] = nil end elsif (match = /^\/core\/services\/aop-cambridge-core\/content\/view\/[a-z0-9]+\/(([SB]?[0-9]+)[a-z0-9._-]+)\.pdf\//i.match(path)) data['mime'] = 'PDF' data['unit_id'] = match[1] if (/^S/i.match(match[2])) data['rtype'] = 'ARTICLE' data['pii'] = match[2] else data['rtype'] = 'BOOK_SECTION' data['online_identifier'] = match[2] end elsif (match = /^\/core\/journals\/([a-z-]+)\/(article|issue)\/([a-z0-9-]+)/i.match(path)) case (match[2]) when 'article' data['mime'] = 'HTML' data['rtype'] = 'ARTICLE' data['unit_id'] = match[3].split('/')[0] data['title_id'] = match[1] when 'issue' data['mime'] = 'MISC' data['rtype'] = 'TOC' data['unit_id'] = match[1] + '/issue/' data['title_id'] = match[1] end elsif (match = /^\/core\/books\/([a-z0-9-]+)\/[a-z0-9]+$/i.match(path)) data['rtype'] = 'TOC' data['mime'] = 'MISC' data['unit_id'] = match[1] data['title_id'] = match[1] elsif (match = /^\/core\/books\/(([a-z0-9-]+)\/[a-z0-9-]+)\/[a-z0-9]+\/core-reader$/i.match(path)) data['rtype'] = 'BOOK_SECTION' data['mime'] = 'HTML' data['unit_id'] = match[1] data['title_id'] = match[2] else data['title_id'] = nil end return data end