lagotto-rb 0.2.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.
@@ -0,0 +1,103 @@
1
+ def response_ok(code)
2
+ # See CrossCite documentation http://crosscite.org/cn/
3
+ case code
4
+ when 200
5
+ return true
6
+ when 204
7
+ raise "The request was OK but there was no metadata available (response code: #{code})"
8
+ when 404
9
+ raise "The DOI requested doesn't exist (response code: #{code})"
10
+ when 406
11
+ raise "Can't serve any requested content type (response code: #{code})"
12
+ when 500...600
13
+ raise "ZOMG ERROR #{code}"
14
+ end
15
+ end
16
+
17
+ def type_check(arg, type=String)
18
+ raise TypeError unless arg.is_a? type
19
+ end
20
+
21
+ def test_length(input)
22
+ if !input.is_a? NilClass and str_length(input) > 1
23
+ raise TypeError('Parameter "source" must be either nil or length 1')
24
+ end
25
+ end
26
+
27
+ def str_length(x)
28
+ if x.is_a? String
29
+ 1
30
+ else
31
+ x.length
32
+ end
33
+ end
34
+
35
+ # def test_values(name, input, values)
36
+ # if input.class == String:
37
+ # input = input.split(' ')
38
+ # if type(input) != None:
39
+ # if len(input) > 1: raise TypeError('Parameter "%s" must be length 1' % name)
40
+ # if input[0] not in values: raise TypeError('Parameter "%s" must be one of %s' % (name, values))
41
+ # end
42
+
43
+ def join_ids(x)
44
+ if x.class != NilClass
45
+ if x.class != String
46
+ x.join(',')
47
+ else
48
+ x
49
+ end
50
+ else
51
+ x
52
+ end
53
+ end
54
+
55
+ def pick_url(x)
56
+ urls = {
57
+ "plos" => "http://alm.plos.org/api",
58
+ "crossref" => "http://det.labs.crossref.org/api",
59
+ "datacite" => "http://dlm.datacite.org/api",
60
+ "datacite_profiles" => "https://profiles.labs.datacite.org/api",
61
+ "elife" => "http://alm.svr.elifesciences.org/api/v5",
62
+ "pkp" => "http://pkp-alm.lib.sfu.ca/api/v5",
63
+ "copernicus" => "http://metricus.copernicus.org/api/v5",
64
+ "pensoft" => "http://alm.pensoft.net:81//api/v5"
65
+ }
66
+ url = urls[x]
67
+ if url == nil
68
+ raise TypeError('instance must be one of plos, elife, crossref, pkp, copernicus, or pensoft')
69
+ else
70
+ return url
71
+ end
72
+ end
73
+
74
+ def getuserinfo(x: nil, y: nil)
75
+ usr = ifnot(x, ENV["PLOS_ALERTS_USER"])
76
+ pwd = ifnot(y, ENV["PLOS_ALERTS_PWD"])
77
+ return { "key" => usr, "pwd" => pwd }
78
+ end
79
+
80
+ def ifnot(x, y)
81
+ if x == nil
82
+ return y
83
+ else
84
+ return x
85
+ end
86
+ end
87
+
88
+ def pick_url_alerts(x)
89
+ urls = {
90
+ "plos" => "http://alm.plos.org/api/alerts",
91
+ "elife" => "http://lagotto.svr.elifesciences.org/api/v4/alerts",
92
+ "crossref" => "http://det.labs.crossref.org/api/v4/alerts",
93
+ "pkp" => "http://pkp-alm.lib.sfu.ca/api/v4/alerts",
94
+ "copernicus" => "http://metricus.copernicus.org/api/v4/alerts",
95
+ "pensoft" => "http://alm.pensoft.net:81//api/v4/alerts"
96
+ }
97
+ url = urls[x]
98
+ if url == nil
99
+ raise TypeError('instance must be one of plos, elife, crossref, pkp, copernicus, or pensoft')
100
+ else
101
+ return url
102
+ end
103
+ end
@@ -0,0 +1,49 @@
1
+ require "faraday"
2
+ require "multi_json"
3
+
4
+ ##
5
+ # Lagotto::BasicRequest
6
+ module Lagotto
7
+ class BasicRequest #:nodoc:
8
+
9
+ attr_accessor :url
10
+ attr_accessor :path
11
+ attr_accessor :key
12
+ attr_accessor :options
13
+ attr_accessor :verbose
14
+ attr_accessor :addargs
15
+
16
+ def initialize(url, path, key, options, verbose, addargs)
17
+
18
+ self.url = url
19
+ self.path = path
20
+ self.key = key
21
+ self.options = options
22
+ self.verbose = verbose
23
+ self.addargs = addargs
24
+ end
25
+
26
+ def perform
27
+ args = { api_key: self.key }
28
+ args = args.merge(addargs)
29
+ opts = args.delete_if { |k, v| v.nil? }
30
+
31
+ if verbose
32
+ conn = Faraday.new(:url => self.url, :request => options) do |f|
33
+ f.response :logger
34
+ f.headers['Accept'] = 'application/json'
35
+ f.adapter Faraday.default_adapter
36
+ end
37
+ else
38
+ conn = Faraday.new(:url => self.url, :request => options) do |f|
39
+ f.headers['Accept'] = 'application/json'
40
+ f.adapter Faraday.default_adapter
41
+ end
42
+ end
43
+
44
+ res = conn.get self.path, opts
45
+
46
+ return MultiJson.load(res.body)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,66 @@
1
+ require "faraday"
2
+ require "multi_json"
3
+
4
+ ##
5
+ # Lagotto::Request
6
+ module Lagotto
7
+ class Request #:nodoc:
8
+
9
+ attr_accessor :url
10
+ attr_accessor :path
11
+ attr_accessor :ids
12
+ attr_accessor :type
13
+ attr_accessor :info
14
+ attr_accessor :source
15
+ attr_accessor :publisher
16
+ attr_accessor :order
17
+ attr_accessor :per_page
18
+ attr_accessor :page
19
+ attr_accessor :key
20
+ attr_accessor :options
21
+ attr_accessor :verbose
22
+
23
+ def initialize(url, path, ids, type, source,
24
+ publisher, order, per_page, page, key,
25
+ options, verbose)
26
+
27
+ self.url = url
28
+ self.path = path
29
+ self.ids = ids
30
+ self.type = type
31
+ self.source = source
32
+ self.publisher = publisher
33
+ self.order = order
34
+ self.per_page = per_page
35
+ self.page = page
36
+ self.key = key
37
+ self.options = options
38
+ self.verbose = verbose
39
+ end
40
+
41
+ def perform
42
+ args = { ids: self.ids, type: self.type,
43
+ source: self.source, publisher: self.publisher,
44
+ order: self.order, per_page: self.per_page,
45
+ page: self.page, api_key: self.key }
46
+ opts = args.delete_if { |k, v| v.nil? }
47
+
48
+ if verbose
49
+ conn = Faraday.new(:url => self.url, :request => options) do |f|
50
+ f.response :logger
51
+ f.headers['Accept'] = 'application/json'
52
+ f.adapter Faraday.default_adapter
53
+ end
54
+ else
55
+ conn = Faraday.new(:url => self.url, :request => options) do |f|
56
+ f.headers['Accept'] = 'application/json'
57
+ f.adapter Faraday.default_adapter
58
+ end
59
+ end
60
+
61
+ res = conn.get self.path, opts
62
+
63
+ return MultiJson.load(res.body)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,3 @@
1
+ module Lagotto
2
+ VERSION = "0.2.0"
3
+ end
metadata ADDED
@@ -0,0 +1,218 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lagotto-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Scott Chamberlain
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: codecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.18'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.18'
97
+ - !ruby/object:Gem::Dependency
98
+ name: launchy
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.4'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 2.4.2
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '2.4'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 2.4.2
117
+ - !ruby/object:Gem::Dependency
118
+ name: faraday
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.9.1
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.9.1
131
+ - !ruby/object:Gem::Dependency
132
+ name: faraday_middleware
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.10.0
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 0.10.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: multi_json
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '1.0'
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '1.0'
159
+ description: Lagotto client for Ruby - get altmetrics from any Lagotto installation.
160
+ email: myrmecocystus@gmail.com
161
+ executables:
162
+ - lagotto
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - ".gitignore"
167
+ - ".travis.yml"
168
+ - CHANGELOG.md
169
+ - CONDUCT.md
170
+ - Gemfile
171
+ - Gemfile.lock
172
+ - LICENSE
173
+ - README.md
174
+ - Rakefile
175
+ - bin/lagotto
176
+ - doc/index.html
177
+ - doc/js/jquery.js
178
+ - examples/alerts.rb
179
+ - examples/alm.rb
180
+ - examples/events.rb
181
+ - examples/requests.rb
182
+ - examples/sources.rb
183
+ - examples/status.rb
184
+ - ignore/alerts.rb
185
+ - ignore/other_methods.rb
186
+ - lagotto-rb.gemspec
187
+ - lib/lagotto-rb.rb
188
+ - lib/lagotto-rb/helpers.rb
189
+ - lib/lagotto-rb/req.rb
190
+ - lib/lagotto-rb/request.rb
191
+ - lib/lagotto-rb/version.rb
192
+ - pkg/lagotto-rb-0.1.1.9000.gem
193
+ homepage: http://github.com/lagotto/lagotto-rb
194
+ licenses:
195
+ - MIT
196
+ metadata: {}
197
+ post_install_message:
198
+ rdoc_options: []
199
+ require_paths:
200
+ - lib
201
+ required_ruby_version: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '2.0'
206
+ required_rubygems_version: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ requirements: []
212
+ rubyforge_project:
213
+ rubygems_version: 2.4.5.1
214
+ signing_key:
215
+ specification_version: 4
216
+ summary: Lagotto client for Ruby
217
+ test_files: []
218
+ has_rdoc: