timdex-ruby 0.1.4 → 0.1.5.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f609eae928cfb941e550c9e62fe2685a5bf200e93aeecc0fcd109b48d2dcf05c
4
- data.tar.gz: 0bdc2724cab8a3792da224a79491bbb9706dd2ce1b841cf3818be305edf6bfb1
3
+ metadata.gz: 144298a47fb383556a0b1b47e3bd302be31fb6be359b2fffebf2d5cbd6c09749
4
+ data.tar.gz: 7e5e139232a21c9515ab9d0bb7ba4052298616afdf451c03dd1f34e4ab87b0f5
5
5
  SHA512:
6
- metadata.gz: 317c01c4bf57d675264dea3f9510bb878141e96a52279fc1596386fe8843365e3e9134059cb7efcf66b536f0c6eb2fff7c16a01c1094639bf52f34491a3092fc
7
- data.tar.gz: ce29415efd3f468d871ac72abc9a08f8100041077df32e51d4620f4c840254620eec0fa5292530aef335fae8cf37aeeb6d6ac281aa008cb2ce0fbe1bf85bd250
6
+ metadata.gz: abea8b0eb61ba57125b5b1b20f9a020b3c9b33525d989c2cca8ea990d79ad96a2cd3a5fc7ebd250f95b5ff8cca8652a355a62048c6ce708029123c38bf12c294
7
+ data.tar.gz: 99f63155f117685f3b53902158895c56850c4f190ed9033eb8b600daf7d9c86ea565a63a25374c02df235d9d34f945e7a35b94615d15b804c2972e1cd5f218a3
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- timdex-ruby (0.1.4)
4
+ timdex-ruby (0.1.5)
5
5
  faraday (~> 0)
6
+ jwt
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -10,13 +11,21 @@ GEM
10
11
  byebug (5.0.0)
11
12
  columnize (= 0.9.0)
12
13
  columnize (0.9.0)
13
- dotenv (2.7.2)
14
+ docile (1.3.2)
14
15
  faraday (0.15.4)
15
16
  multipart-post (>= 1.2, < 3)
17
+ json (2.2.0)
16
18
  jwt (2.1.0)
17
19
  minitest (5.11.3)
18
- multipart-post (2.0.0)
20
+ multipart-post (2.1.1)
19
21
  rake (10.5.0)
22
+ simplecov (0.17.0)
23
+ docile (~> 1.1)
24
+ json (>= 1.8, < 3)
25
+ simplecov-html (~> 0.10.0)
26
+ simplecov-html (0.10.2)
27
+ timecop (0.9.1)
28
+ vcr (5.0.0)
20
29
 
21
30
  PLATFORMS
22
31
  ruby
@@ -24,11 +33,12 @@ PLATFORMS
24
33
  DEPENDENCIES
25
34
  bundler (~> 2)
26
35
  byebug (~> 5.0)
27
- dotenv (~> 2)
28
- jwt
29
36
  minitest (~> 5.0)
30
37
  rake (~> 10.0)
38
+ simplecov
31
39
  timdex-ruby!
40
+ timecop
41
+ vcr
32
42
 
33
43
  BUNDLED WITH
34
- 2.0.1
44
+ 2.0.2
data/lib/record.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Record
2
4
  def initialize(record)
3
5
  @record = record
data/lib/timdex.rb CHANGED
@@ -1,5 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'timdex/version'
2
- require 'dotenv/load'
3
4
  require 'record'
4
5
  require 'faraday'
5
6
  require 'json'
@@ -7,7 +8,7 @@ require 'jwt'
7
8
 
8
9
  # Timdex modules wraps interaction with the public TIMDEX API
9
10
  class Timdex
10
- def initialize(username, password)
11
+ def initialize(username = nil, password = nil)
11
12
  @jwt = false
12
13
  @username = username
13
14
  @password = password
@@ -15,7 +16,10 @@ class Timdex
15
16
 
16
17
  def setup
17
18
  timdex_url = ENV.fetch('TIMDEX_URL', 'https://timdex.mit.edu')
18
- @conn = Faraday.new(url: timdex_url)
19
+ @conn = Faraday.new(url: timdex_url) do |faraday|
20
+ faraday.response :logger if ENV['DEBUG']
21
+ faraday.adapter Faraday.default_adapter
22
+ end
19
23
  end
20
24
 
21
25
  def ping
@@ -29,19 +33,36 @@ class Timdex
29
33
  @conn.basic_auth(@username, @password)
30
34
  response = @conn.get('/api/v1/auth')
31
35
 
32
- @jwt = JSON.parse(response.body)
36
+ if response.status == 200
37
+ @jwt = JSON.parse(response.body)
38
+ else
39
+ @jwt = nil
40
+ JSON.parse(response.body)
41
+ end
42
+ end
43
+
44
+ def auth?
45
+ if @username.nil? || @password.nil?
46
+ false
47
+ else
48
+ true
49
+ end
33
50
  end
34
51
 
35
52
  def search(term)
36
53
  setup
37
- auth unless validate_jwt
38
- @conn.token_auth(@jwt)
54
+
55
+ if auth?
56
+ auth unless validate_jwt
57
+ @conn.token_auth(@jwt)
58
+ end
59
+
39
60
  response = @conn.get do |req|
40
61
  req.url '/api/v1/search', q: term
41
- req.headers['Authorization'] = "Bearer #{@jwt}"
62
+ req.headers['Authorization'] = "Bearer #{@jwt}" if auth?
42
63
  end
43
- json_results = JSON.parse(response.body)
44
- parse_results(json_results, response.status)
64
+
65
+ parse_results(response.body, response.status)
45
66
  end
46
67
 
47
68
  def retrieve(id)
@@ -50,7 +71,7 @@ class Timdex
50
71
  @conn.token_auth(@jwt)
51
72
  response = @conn.get do |req|
52
73
  req.url '/api/v1/record/' + id
53
- req.headers['Authorization'] = "Bearer #{@jwt}"
74
+ req.headers['Authorization'] = "Bearer #{@jwt}" if auth?
54
75
  end
55
76
  json_result = JSON.parse(response.body)
56
77
  parse_record(json_result, response.status)
@@ -64,7 +85,8 @@ class Timdex
64
85
  response
65
86
  end
66
87
 
67
- def parse_results(json_results, status)
88
+ def parse_results(results, status)
89
+ json_results = JSON.parse(results)
68
90
  results = {}
69
91
  results['status'] = status
70
92
  results['hits'] = json_results['hits']
@@ -82,7 +104,7 @@ class Timdex
82
104
  decoded_token = JWT.decode(@jwt, nil, false)
83
105
  expires = decoded_token[0]['exp']
84
106
 
85
- return @jwt if Time.now.to_i < expires
107
+ return true if Time.now.to_i < expires
86
108
 
87
109
  @jwt = nil
88
110
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Timdex
2
- VERSION = "0.1.4"
4
+ VERSION = '0.1.5.pre'
3
5
  end
data/timdex_ruby.gemspec CHANGED
@@ -1,31 +1,33 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "timdex/version"
5
+ require 'timdex/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "timdex-ruby"
8
+ spec.name = 'timdex-ruby'
8
9
  spec.version = Timdex::VERSION
9
- spec.authors = ["Jeremy Prevost"]
10
- spec.email = ["jprevost@mit.edu"]
10
+ spec.authors = ['Jeremy Prevost']
11
+ spec.email = ['jprevost@mit.edu']
11
12
 
12
13
  spec.summary = "Ruby wrapper for MIT Libraries' TIMDEX Discovery API"
13
- spec.homepage = "https://github.com/MITLibraries/timdex_ruby"
14
- spec.license = "MIT"
14
+ spec.homepage = 'https://github.com/MITLibraries/timdex_ruby'
15
+ spec.license = 'MIT'
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
18
  f.match(%r{^(test|spec|features)/})
18
19
  end
19
- spec.bindir = "exe"
20
+ spec.bindir = 'exe'
20
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
22
+ spec.require_paths = ['lib']
22
23
 
23
- spec.add_development_dependency "bundler", "~> 2"
24
- spec.add_development_dependency "byebug", "~> 5.0"
25
- spec.add_development_dependency "dotenv", "~> 2"
26
- spec.add_development_dependency "jwt"
27
- spec.add_development_dependency "minitest", "~> 5.0"
28
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency 'bundler', '~> 2'
25
+ spec.add_development_dependency 'byebug', '~> 5.0'
26
+ spec.add_dependency 'jwt'
27
+ spec.add_development_dependency 'minitest', '~> 5.0'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
29
  spec.add_dependency 'faraday', '~> 0'
30
-
30
+ spec.add_development_dependency 'simplecov'
31
+ spec.add_development_dependency 'timecop'
32
+ spec.add_development_dependency 'vcr'
31
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timdex-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Prevost
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-09 00:00:00.000000000 Z
11
+ date: 2019-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5.0'
41
- - !ruby/object:Gem::Dependency
42
- name: dotenv
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '2'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '2'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: jwt
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +45,7 @@ dependencies:
59
45
  - - ">="
60
46
  - !ruby/object:Gem::Version
61
47
  version: '0'
62
- type: :development
48
+ type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
@@ -108,6 +94,48 @@ dependencies:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: timecop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: vcr
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
111
139
  description:
112
140
  email:
113
141
  - jprevost@mit.edu
@@ -145,9 +173,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
173
  version: '0'
146
174
  required_rubygems_version: !ruby/object:Gem::Requirement
147
175
  requirements:
148
- - - ">="
176
+ - - ">"
149
177
  - !ruby/object:Gem::Version
150
- version: '0'
178
+ version: 1.3.1
151
179
  requirements: []
152
180
  rubygems_version: 3.0.3
153
181
  signing_key: