serrano 0.5.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +3 -1
- data/CHANGELOG.md +26 -0
- data/CODE_OF_CONDUCT.md +2 -2
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.md +21 -7
- data/Rakefile +12 -8
- data/bin/serrano +96 -98
- data/lib/serrano.rb +112 -63
- data/lib/serrano/cn.rb +4 -6
- data/lib/serrano/cnrequest.rb +36 -22
- data/lib/serrano/error.rb +2 -0
- data/lib/serrano/faraday.rb +16 -15
- data/lib/serrano/filterhandler.rb +26 -28
- data/lib/serrano/filters.rb +91 -85
- data/lib/serrano/helpers/configuration.rb +2 -2
- data/lib/serrano/request.rb +31 -29
- data/lib/serrano/request_cursor.rb +59 -58
- data/lib/serrano/styles.rb +14 -9
- data/lib/serrano/utils.rb +19 -17
- data/lib/serrano/version.rb +3 -1
- data/serrano.gemspec +41 -28
- metadata +75 -48
- data/.travis.yml +0 -8
- data/Gemfile.lock +0 -64
- data/lib/serrano/constants.rb +0 -36
- data/lib/serrano/cursor_testing.rb +0 -52
@@ -1,13 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "erb"
|
1
4
|
require "faraday"
|
2
|
-
require
|
5
|
+
require "faraday_middleware"
|
3
6
|
require "multi_json"
|
4
7
|
require "serrano/error"
|
5
|
-
require "serrano/
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require 'serrano/utils'
|
8
|
+
require "serrano/helpers/configuration"
|
9
|
+
require "serrano/filterhandler"
|
10
|
+
require "serrano/error"
|
11
|
+
require "serrano/faraday"
|
12
|
+
require "serrano/utils"
|
11
13
|
|
12
14
|
##
|
13
15
|
# Serrano::RequestCursor
|
@@ -15,7 +17,6 @@ require 'serrano/utils'
|
|
15
17
|
# Class to perform HTTP requests to the Crossref API
|
16
18
|
module Serrano
|
17
19
|
class RequestCursor #:nodoc:
|
18
|
-
|
19
20
|
attr_accessor :endpt
|
20
21
|
attr_accessor :id
|
21
22
|
attr_accessor :query
|
@@ -36,8 +37,8 @@ module Serrano
|
|
36
37
|
attr_accessor :args
|
37
38
|
|
38
39
|
def initialize(endpt, id, query, filter, offset,
|
39
|
-
limit, sample, sort, order, facet, select,
|
40
|
-
works, agency, options, verbose, cursor,
|
40
|
+
limit, sample, sort, order, facet, select,
|
41
|
+
works, agency, options, verbose, cursor,
|
41
42
|
cursor_max, args)
|
42
43
|
|
43
44
|
self.endpt = endpt
|
@@ -61,89 +62,89 @@ module Serrano
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def perform
|
64
|
-
filt = filter_handler(
|
65
|
-
fieldqueries = field_query_handler(
|
66
|
-
self.select =
|
65
|
+
filt = filter_handler(filter)
|
66
|
+
fieldqueries = field_query_handler(args)
|
67
|
+
self.select = select.join(",") if select && select.class == Array
|
67
68
|
|
68
|
-
|
69
|
-
|
70
|
-
raise "cursor_max must be of class int"
|
71
|
-
end
|
69
|
+
unless cursor_max.class.nil?
|
70
|
+
raise "cursor_max must be of class int" unless cursor_max.is_a?(Integer)
|
72
71
|
end
|
73
72
|
|
74
|
-
arguments = {
|
75
|
-
|
76
|
-
|
77
|
-
|
73
|
+
arguments = {query: query, filter: filt, offset: offset,
|
74
|
+
rows: limit, sample: sample, sort: sort,
|
75
|
+
order: order, facet: facet, select: select,
|
76
|
+
cursor: cursor}.tostrings
|
78
77
|
arguments = arguments.merge(fieldqueries)
|
79
|
-
opts = arguments.delete_if { |
|
78
|
+
opts = arguments.delete_if { |_k, v| v.nil? }
|
80
79
|
|
81
|
-
if verbose
|
82
|
-
|
80
|
+
conn = if verbose
|
81
|
+
Faraday.new(url: Serrano.base_url, request: options || []) do |f|
|
83
82
|
f.response :logger
|
84
83
|
f.use FaradayMiddleware::RaiseHttpException
|
85
84
|
f.adapter Faraday.default_adapter
|
86
85
|
end
|
87
86
|
else
|
88
|
-
|
87
|
+
Faraday.new(url: Serrano.base_url, request: options || []) do |f|
|
89
88
|
f.use FaradayMiddleware::RaiseHttpException
|
90
89
|
f.adapter Faraday.default_adapter
|
91
90
|
end
|
92
91
|
end
|
93
92
|
|
94
|
-
|
95
|
-
|
93
|
+
conn.headers[:user_agent] = make_ua
|
94
|
+
conn.headers["X-USER-AGENT"] = make_ua
|
95
|
+
|
96
|
+
if id.nil?
|
97
|
+
endpt2 = endpt
|
98
|
+
js = _req(conn, endpt, opts)
|
99
|
+
cu = js["message"]["next-cursor"]
|
100
|
+
max_avail = js["message"]["total-results"]
|
101
|
+
_redo_req(conn, js, opts, cu, max_avail)
|
96
102
|
|
97
|
-
if self.id.nil?
|
98
|
-
$endpt2 = self.endpt
|
99
|
-
js = self._req(self.endpt, opts)
|
100
|
-
cu = js['message']['next-cursor']
|
101
|
-
max_avail = js['message']['total-results']
|
102
|
-
res = self._redo_req(js, opts, cu, max_avail)
|
103
|
-
return res
|
104
103
|
else
|
104
|
+
self.id = Array(id)
|
105
|
+
# url encoding
|
106
|
+
self.id = id.map { |x| ERB::Util.url_encode(x) }
|
105
107
|
coll = []
|
106
|
-
|
107
|
-
if
|
108
|
-
|
108
|
+
id.each do |x|
|
109
|
+
endpt2 = if works
|
110
|
+
endpt + "/" + x.to_s + "/works"
|
109
111
|
else
|
110
|
-
if
|
111
|
-
|
112
|
+
endpt2 = if agency
|
113
|
+
endpt + "/" + x.to_s + "/agency"
|
112
114
|
else
|
113
|
-
|
115
|
+
endpt + "/" + x.to_s
|
114
116
|
end
|
115
117
|
end
|
116
118
|
|
117
|
-
js =
|
118
|
-
cu = js[
|
119
|
-
max_avail = js[
|
120
|
-
coll <<
|
119
|
+
js = _req(conn, endpt2, opts)
|
120
|
+
cu = js["message"]["next-cursor"]
|
121
|
+
max_avail = js["message"]["total-results"]
|
122
|
+
coll << _redo_req(conn, js, opts, cu, max_avail)
|
121
123
|
end
|
122
|
-
|
124
|
+
coll
|
123
125
|
end
|
124
126
|
end
|
125
127
|
|
126
|
-
def _redo_req(js, opts, cu, max_avail)
|
127
|
-
if !cu.nil?
|
128
|
+
def _redo_req(conn, js, opts, cu, max_avail)
|
129
|
+
if !cu.nil? && (cursor_max > js["message"]["items"].length)
|
128
130
|
res = [js]
|
129
|
-
total = js[
|
130
|
-
while !cu.nil?
|
131
|
+
total = js["message"]["items"].length
|
132
|
+
while !cu.nil? && (cursor_max > total) && (total < max_avail)
|
131
133
|
opts[:cursor] = cu
|
132
|
-
out =
|
133
|
-
cu = out[
|
134
|
+
out = _req(conn, endpt2, opts)
|
135
|
+
cu = out["message"]["next-cursor"]
|
134
136
|
res << out
|
135
|
-
total = res.collect {|x| x[
|
137
|
+
total = res.collect { |x| x["message"]["items"].length }.sum
|
136
138
|
end
|
137
|
-
|
139
|
+
res
|
138
140
|
else
|
139
|
-
|
141
|
+
js
|
140
142
|
end
|
141
143
|
end
|
142
144
|
|
143
|
-
def _req(path, opts)
|
144
|
-
res =
|
145
|
-
|
145
|
+
def _req(conn, path, opts)
|
146
|
+
res = conn.get path, opts
|
147
|
+
MultiJson.load(res.body)
|
146
148
|
end
|
147
|
-
|
148
149
|
end
|
149
150
|
end
|
data/lib/serrano/styles.rb
CHANGED
@@ -1,23 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "faraday"
|
2
4
|
require "multi_json"
|
3
5
|
|
4
|
-
def
|
6
|
+
def fetch_styles
|
5
7
|
base = "https://api.github.com/repos/citation-style-language/styles"
|
6
|
-
conn = Faraday.new(:
|
7
|
-
|
8
|
-
|
8
|
+
conn = Faraday.new(url: base) { |f|
|
9
|
+
f.use FaradayMiddleware::RaiseHttpException
|
10
|
+
f.adapter Faraday.default_adapter
|
11
|
+
}
|
12
|
+
args = {per_page: 1}
|
13
|
+
tt = conn.get "commits", args
|
9
14
|
commres = MultiJson.load(tt.body)
|
10
|
-
sha = commres[0][
|
15
|
+
sha = commres[0]["sha"]
|
11
16
|
sty = conn.get "git/trees/" + sha
|
12
17
|
res = MultiJson.load(sty.body)
|
13
|
-
files = res[
|
18
|
+
files = res["tree"].collect { |x| x["path"] }
|
14
19
|
matches = files.collect { |x|
|
15
|
-
if x.match(
|
20
|
+
if x.match("csl").nil?
|
16
21
|
nil
|
17
22
|
else
|
18
|
-
x.match(
|
23
|
+
x.match("csl").string
|
19
24
|
end
|
20
25
|
}
|
21
26
|
csls = matches.compact
|
22
|
-
|
27
|
+
csls.collect { |z| z.gsub(".csl", "") }
|
23
28
|
end
|
data/lib/serrano/utils.rb
CHANGED
@@ -1,33 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
def make_ua
|
2
|
-
requa =
|
3
|
-
habua =
|
4
|
-
ua = requa +
|
4
|
+
requa = "Faraday/v" + Faraday::VERSION
|
5
|
+
habua = "Serrano/v" + Serrano::VERSION
|
6
|
+
ua = requa + " " + habua
|
5
7
|
if Serrano.mailto
|
6
|
-
ua
|
8
|
+
ua += " (mailto:%s)" % Serrano.mailto
|
7
9
|
end
|
8
|
-
|
10
|
+
# ua += format(' (mailto:%s)', Serrano.mailto) if Serrano.mailto
|
11
|
+
ua
|
9
12
|
end
|
10
13
|
|
11
14
|
def field_query_handler(x)
|
12
|
-
|
13
|
-
|
15
|
+
tmp = x.keep_if { |z| z.match(/query_/) }
|
16
|
+
rename_query_filters(tmp)
|
14
17
|
end
|
15
18
|
|
16
19
|
def rename_query_filters(foo)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
return foo
|
20
|
+
foo = foo.tostrings
|
21
|
+
foo = foo.map { |x, y| [x.to_s.sub("container_title", "container-title"), y] }.to_h
|
22
|
+
foo.map { |x, y| [x.to_s.sub("query_", "query."), y] }.to_h
|
21
23
|
end
|
22
24
|
|
23
25
|
class Hash
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
def tostrings
|
27
|
+
Hash[map { |(k, v)| [k.to_s, v] }]
|
28
|
+
end
|
27
29
|
end
|
28
30
|
|
29
31
|
class Hash
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
def tosymbols
|
33
|
+
Hash[map { |(k, v)| [k.to_sym, v] }]
|
34
|
+
end
|
33
35
|
end
|
data/lib/serrano/version.rb
CHANGED
data/serrano.gemspec
CHANGED
@@ -1,38 +1,51 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require "serrano/version"
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
9
|
-
s.platform
|
10
|
-
s.required_ruby_version =
|
11
|
-
s.date
|
12
|
-
s.summary
|
8
|
+
s.name = "serrano"
|
9
|
+
s.version = Serrano::VERSION
|
10
|
+
s.platform = Gem::Platform::RUBY
|
11
|
+
s.required_ruby_version = ">= 2.1"
|
12
|
+
s.date = "2020-10-19"
|
13
|
+
s.summary = "Crossref Client"
|
13
14
|
s.description = "Low Level Ruby Client for the Crossref Search API"
|
14
|
-
s.authors
|
15
|
-
s.email
|
16
|
-
s.homepage
|
17
|
-
s.licenses
|
15
|
+
s.authors = "Scott Chamberlain"
|
16
|
+
s.email = "myrmecocystus@gmail.com"
|
17
|
+
s.homepage = "https://github.com/sckott/serrano"
|
18
|
+
s.licenses = "MIT"
|
18
19
|
|
19
|
-
s.files = `git ls-files -z`.split("\x0").reject
|
20
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
21
|
+
f.match(%r{^(test|spec|features)/})
|
22
|
+
end
|
20
23
|
s.require_paths = ["lib"]
|
21
24
|
|
22
|
-
s.bindir
|
23
|
-
s.executables = [
|
25
|
+
s.bindir = "bin"
|
26
|
+
s.executables = ["serrano"]
|
27
|
+
|
28
|
+
s.add_development_dependency "bundler", '~> 2.1', '>= 2.1.4'
|
29
|
+
s.add_development_dependency "codecov", "~> 0.2.0"
|
30
|
+
s.add_development_dependency "json", '~> 2.3', '>= 2.3.1'
|
31
|
+
s.add_development_dependency "rake", '~> 13.0', '>= 13.0.1'
|
32
|
+
s.add_development_dependency "standard", "~> 0.7"
|
33
|
+
s.add_development_dependency "simplecov", "~> 0.19.0"
|
34
|
+
s.add_development_dependency "test-unit", '~> 3.3', '>= 3.3.6'
|
35
|
+
s.add_development_dependency "vcr", "~> 6.0"
|
36
|
+
s.add_development_dependency "webmock", '~> 3.9', '>= 3.9.3'
|
24
37
|
|
25
|
-
s.
|
26
|
-
s.
|
27
|
-
s.
|
28
|
-
s.
|
29
|
-
s.add_development_dependency 'codecov', '~> 0.1.10'
|
30
|
-
s.add_development_dependency 'json', '~> 2.1'
|
31
|
-
s.add_development_dependency 'vcr', '~> 4.0'
|
32
|
-
s.add_development_dependency 'webmock', '~> 3.3'
|
38
|
+
s.add_runtime_dependency "faraday", "~> 1.1"
|
39
|
+
s.add_runtime_dependency "faraday_middleware", "~> 1.0"
|
40
|
+
s.add_runtime_dependency "multi_json", '~> 1.15'
|
41
|
+
s.add_runtime_dependency 'thor', '~> 1.0', '>= 1.0.1'
|
33
42
|
|
34
|
-
s.
|
35
|
-
|
36
|
-
|
37
|
-
|
43
|
+
s.metadata = {
|
44
|
+
"homepage_uri" => "https://github.com/sckott/serrano",
|
45
|
+
"documentation_uri" => "https://www.rubydoc.info/gems/serrano",
|
46
|
+
"changelog_uri" =>
|
47
|
+
"https://github.com/sckott/serrano/releases/tag/v#{s.version}",
|
48
|
+
"source_code_uri" => "https://github.com/sckott/serrano",
|
49
|
+
"bug_tracker_uri" => "https://github.com/sckott/serrano/issues"
|
50
|
+
}
|
38
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chamberlain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,192 +16,218 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 2.1.4
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '1
|
29
|
+
version: '2.1'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
32
|
+
version: 2.1.4
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: codecov
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 0.2.0
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.2.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: json
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.3'
|
40
54
|
- - ">="
|
41
55
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
56
|
+
version: 2.3.1
|
43
57
|
type: :development
|
44
58
|
prerelease: false
|
45
59
|
version_requirements: !ruby/object:Gem::Requirement
|
46
60
|
requirements:
|
47
61
|
- - "~>"
|
48
62
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
63
|
+
version: '2.3'
|
50
64
|
- - ">="
|
51
65
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
66
|
+
version: 2.3.1
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
68
|
+
name: rake
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
56
70
|
requirements:
|
57
71
|
- - "~>"
|
58
72
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
73
|
+
version: '13.0'
|
60
74
|
- - ">="
|
61
75
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
76
|
+
version: 13.0.1
|
63
77
|
type: :development
|
64
78
|
prerelease: false
|
65
79
|
version_requirements: !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
81
|
- - "~>"
|
68
82
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
83
|
+
version: '13.0'
|
70
84
|
- - ">="
|
71
85
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
86
|
+
version: 13.0.1
|
73
87
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
88
|
+
name: standard
|
75
89
|
requirement: !ruby/object:Gem::Requirement
|
76
90
|
requirements:
|
77
91
|
- - "~>"
|
78
92
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.
|
93
|
+
version: '0.7'
|
80
94
|
type: :development
|
81
95
|
prerelease: false
|
82
96
|
version_requirements: !ruby/object:Gem::Requirement
|
83
97
|
requirements:
|
84
98
|
- - "~>"
|
85
99
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0.
|
100
|
+
version: '0.7'
|
87
101
|
- !ruby/object:Gem::Dependency
|
88
|
-
name:
|
102
|
+
name: simplecov
|
89
103
|
requirement: !ruby/object:Gem::Requirement
|
90
104
|
requirements:
|
91
105
|
- - "~>"
|
92
106
|
- !ruby/object:Gem::Version
|
93
|
-
version: 0.
|
107
|
+
version: 0.19.0
|
94
108
|
type: :development
|
95
109
|
prerelease: false
|
96
110
|
version_requirements: !ruby/object:Gem::Requirement
|
97
111
|
requirements:
|
98
112
|
- - "~>"
|
99
113
|
- !ruby/object:Gem::Version
|
100
|
-
version: 0.
|
114
|
+
version: 0.19.0
|
101
115
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
116
|
+
name: test-unit
|
103
117
|
requirement: !ruby/object:Gem::Requirement
|
104
118
|
requirements:
|
105
119
|
- - "~>"
|
106
120
|
- !ruby/object:Gem::Version
|
107
|
-
version: '
|
121
|
+
version: '3.3'
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.3.6
|
108
125
|
type: :development
|
109
126
|
prerelease: false
|
110
127
|
version_requirements: !ruby/object:Gem::Requirement
|
111
128
|
requirements:
|
112
129
|
- - "~>"
|
113
130
|
- !ruby/object:Gem::Version
|
114
|
-
version: '
|
131
|
+
version: '3.3'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 3.3.6
|
115
135
|
- !ruby/object:Gem::Dependency
|
116
136
|
name: vcr
|
117
137
|
requirement: !ruby/object:Gem::Requirement
|
118
138
|
requirements:
|
119
139
|
- - "~>"
|
120
140
|
- !ruby/object:Gem::Version
|
121
|
-
version: '
|
141
|
+
version: '6.0'
|
122
142
|
type: :development
|
123
143
|
prerelease: false
|
124
144
|
version_requirements: !ruby/object:Gem::Requirement
|
125
145
|
requirements:
|
126
146
|
- - "~>"
|
127
147
|
- !ruby/object:Gem::Version
|
128
|
-
version: '
|
148
|
+
version: '6.0'
|
129
149
|
- !ruby/object:Gem::Dependency
|
130
150
|
name: webmock
|
131
151
|
requirement: !ruby/object:Gem::Requirement
|
132
152
|
requirements:
|
133
153
|
- - "~>"
|
134
154
|
- !ruby/object:Gem::Version
|
135
|
-
version: '3.
|
155
|
+
version: '3.9'
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 3.9.3
|
136
159
|
type: :development
|
137
160
|
prerelease: false
|
138
161
|
version_requirements: !ruby/object:Gem::Requirement
|
139
162
|
requirements:
|
140
163
|
- - "~>"
|
141
164
|
- !ruby/object:Gem::Version
|
142
|
-
version: '3.
|
165
|
+
version: '3.9'
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: 3.9.3
|
143
169
|
- !ruby/object:Gem::Dependency
|
144
170
|
name: faraday
|
145
171
|
requirement: !ruby/object:Gem::Requirement
|
146
172
|
requirements:
|
147
173
|
- - "~>"
|
148
174
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
175
|
+
version: '1.1'
|
150
176
|
type: :runtime
|
151
177
|
prerelease: false
|
152
178
|
version_requirements: !ruby/object:Gem::Requirement
|
153
179
|
requirements:
|
154
180
|
- - "~>"
|
155
181
|
- !ruby/object:Gem::Version
|
156
|
-
version:
|
182
|
+
version: '1.1'
|
157
183
|
- !ruby/object:Gem::Dependency
|
158
184
|
name: faraday_middleware
|
159
185
|
requirement: !ruby/object:Gem::Requirement
|
160
186
|
requirements:
|
161
187
|
- - "~>"
|
162
188
|
- !ruby/object:Gem::Version
|
163
|
-
version: 0
|
189
|
+
version: '1.0'
|
164
190
|
type: :runtime
|
165
191
|
prerelease: false
|
166
192
|
version_requirements: !ruby/object:Gem::Requirement
|
167
193
|
requirements:
|
168
194
|
- - "~>"
|
169
195
|
- !ruby/object:Gem::Version
|
170
|
-
version: 0
|
196
|
+
version: '1.0'
|
171
197
|
- !ruby/object:Gem::Dependency
|
172
|
-
name:
|
198
|
+
name: multi_json
|
173
199
|
requirement: !ruby/object:Gem::Requirement
|
174
200
|
requirements:
|
175
201
|
- - "~>"
|
176
202
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
203
|
+
version: '1.15'
|
178
204
|
type: :runtime
|
179
205
|
prerelease: false
|
180
206
|
version_requirements: !ruby/object:Gem::Requirement
|
181
207
|
requirements:
|
182
208
|
- - "~>"
|
183
209
|
- !ruby/object:Gem::Version
|
184
|
-
version:
|
210
|
+
version: '1.15'
|
185
211
|
- !ruby/object:Gem::Dependency
|
186
|
-
name:
|
212
|
+
name: thor
|
187
213
|
requirement: !ruby/object:Gem::Requirement
|
188
214
|
requirements:
|
189
215
|
- - "~>"
|
190
216
|
- !ruby/object:Gem::Version
|
191
|
-
version: '1.
|
217
|
+
version: '1.0'
|
192
218
|
- - ">="
|
193
219
|
- !ruby/object:Gem::Version
|
194
|
-
version: 1.
|
220
|
+
version: 1.0.1
|
195
221
|
type: :runtime
|
196
222
|
prerelease: false
|
197
223
|
version_requirements: !ruby/object:Gem::Requirement
|
198
224
|
requirements:
|
199
225
|
- - "~>"
|
200
226
|
- !ruby/object:Gem::Version
|
201
|
-
version: '1.
|
227
|
+
version: '1.0'
|
202
228
|
- - ">="
|
203
229
|
- !ruby/object:Gem::Version
|
204
|
-
version: 1.
|
230
|
+
version: 1.0.1
|
205
231
|
description: Low Level Ruby Client for the Crossref Search API
|
206
232
|
email: myrmecocystus@gmail.com
|
207
233
|
executables:
|
@@ -209,12 +235,11 @@ executables:
|
|
209
235
|
extensions: []
|
210
236
|
extra_rdoc_files: []
|
211
237
|
files:
|
238
|
+
- ".github/workflows/ruby.yml"
|
212
239
|
- ".gitignore"
|
213
|
-
- ".travis.yml"
|
214
240
|
- CHANGELOG.md
|
215
241
|
- CODE_OF_CONDUCT.md
|
216
242
|
- Gemfile
|
217
|
-
- Gemfile.lock
|
218
243
|
- LICENSE
|
219
244
|
- README.md
|
220
245
|
- Rakefile
|
@@ -222,8 +247,6 @@ files:
|
|
222
247
|
- lib/serrano.rb
|
223
248
|
- lib/serrano/cn.rb
|
224
249
|
- lib/serrano/cnrequest.rb
|
225
|
-
- lib/serrano/constants.rb
|
226
|
-
- lib/serrano/cursor_testing.rb
|
227
250
|
- lib/serrano/error.rb
|
228
251
|
- lib/serrano/faraday.rb
|
229
252
|
- lib/serrano/filterhandler.rb
|
@@ -238,7 +261,12 @@ files:
|
|
238
261
|
homepage: https://github.com/sckott/serrano
|
239
262
|
licenses:
|
240
263
|
- MIT
|
241
|
-
metadata:
|
264
|
+
metadata:
|
265
|
+
homepage_uri: https://github.com/sckott/serrano
|
266
|
+
documentation_uri: https://www.rubydoc.info/gems/serrano
|
267
|
+
changelog_uri: https://github.com/sckott/serrano/releases/tag/v1.0.0
|
268
|
+
source_code_uri: https://github.com/sckott/serrano
|
269
|
+
bug_tracker_uri: https://github.com/sckott/serrano/issues
|
242
270
|
post_install_message:
|
243
271
|
rdoc_options: []
|
244
272
|
require_paths:
|
@@ -254,8 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
282
|
- !ruby/object:Gem::Version
|
255
283
|
version: '0'
|
256
284
|
requirements: []
|
257
|
-
|
258
|
-
rubygems_version: 2.7.3
|
285
|
+
rubygems_version: 3.1.2
|
259
286
|
signing_key:
|
260
287
|
specification_version: 4
|
261
288
|
summary: Crossref Client
|