lagotto-rb 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: