Top Level Namespace

Defined Under Namespace

Modules: Configuration, FaradayMiddleware, Helpers, Serrano Classes: Hash

Constant Summary collapse

CN_FORMAT_HEADERS =
{ 'rdf-xml' => 'application/rdf+xml',
'turtle' => 'text/turtle',
'citeproc-json' => 'transform/application/vnd.citationstyles.csl+json',
'text' => 'text/x-bibliography',
'ris' => 'application/x-research-info-systems',
'bibtex' => 'application/x-bibtex',
'crossref-xml' => 'application/vnd.crossref.unixref+xml',
'datacite-xml' => 'application/vnd.datacite.datacite+xml',
'bibentry' => 'application/x-bibtex',
'crossref-tdm' => 'application/vnd.crossref.unixsd+xml' }.freeze

Instance Method Summary collapse

Instance Method Details

#fetch_stylesObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/serrano/styles.rb', line 6

def fetch_styles
  base = 'https://api.github.com/repos/citation-style-language/styles'
  conn = Faraday.new(url: base) do |f|
    f.use FaradayMiddleware::RaiseHttpException
    f.adapter Faraday.default_adapter
  end
  args = { per_page: 1 }
  tt = conn.get 'commits', args
  commres = MultiJson.load(tt.body)
  sha = commres[0]['sha']
  sty = conn.get 'git/trees/' + sha
  res = MultiJson.load(sty.body)
  files = res['tree'].collect { |x| x['path'] }
  matches = files.collect do |x|
    if x.match('csl').nil?
      nil
    else
      x.match('csl').string
    end
  end
  csls = matches.compact
  csls.collect { |z| z.gsub('.csl', '') }
end

#field_query_handler(x) ⇒ Object



14
15
16
17
# File 'lib/serrano/utils.rb', line 14

def field_query_handler(x)
  tmp = x.keep_if { |z| z.match(/query_/) }
  rename_query_filters(tmp)
end

#make_request(conn, ids, format, style, locale) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/serrano/cnrequest.rb', line 68

def make_request(conn, ids, format, style, locale)
  type = CN_FORMAT_HEADERS.select { |x, _| x.include? format }.values[0]

  if format == 'citeproc-json'
    endpt = 'http://api.crossref.org/works/' + ids + '/' + type
    cr_works = Faraday.new(url: endpt)
    cr_works.headers[:user_agent] = make_ua
    cr_works.headers['X-USER-AGENT'] = make_ua
    res = cr_works.get
  else
    if format == 'text'
      type = type + '; style = ' + style + '; locale = ' + locale
    end

    res = conn.get do |req|
      req.url ids
      req.headers['Accept'] = type
      req.headers[:user_agent] = make_ua
      req.headers['X-USER-AGENT'] = make_ua
    end
  end

  res.body
end

#make_uaObject



3
4
5
6
7
8
9
10
11
12
# File 'lib/serrano/utils.rb', line 3

def make_ua
  requa = 'Faraday/v' + Faraday::VERSION
  habua = 'Serrano/v' + Serrano::VERSION
  ua = requa + ' ' + habua
  if Serrano.mailto
    ua = ua + " (mailto:%s)" % Serrano.mailto
  end
  # ua += format(' (mailto:%s)', Serrano.mailto) if Serrano.mailto
  ua
end

#rename_query_filters(foo) ⇒ Object



19
20
21
22
23
24
# File 'lib/serrano/utils.rb', line 19

def rename_query_filters(foo)
  foo = foo.tostrings
  foo = foo.map { |x, y| [x.to_s.sub('container_title', 'container-title'), y] }.to_h
  foo = foo.map { |x, y| [x.to_s.sub('query_', 'query.'), y] }.to_h
  foo
end