diff --git a/CHANGES.md b/CHANGES.md index 6bf13ae..79f786a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,7 @@ +# 4.1.0 (2025-01-10) + +- Fixed token refresh function and test + # 4.0.0 (2025-01-08) - Update from Worldcat API v1 to API v2 diff --git a/lib/berkeley_library/location/module_info.rb b/lib/berkeley_library/location/module_info.rb index 5f101b6..bd88838 100644 --- a/lib/berkeley_library/location/module_info.rb +++ b/lib/berkeley_library/location/module_info.rb @@ -7,7 +7,7 @@ module ModuleInfo SUMMARY = 'Locaton-related utilities for the UC Berkeley Library'.freeze DESCRIPTION = 'A collection of location-related utilities for the UC Berkeley Library'.freeze LICENSE = 'MIT'.freeze - VERSION = '4.0.0'.freeze + VERSION = '4.1.0'.freeze HOMEPAGE = 'https://github.com/BerkeleyLibrary/location'.freeze end end diff --git a/lib/berkeley_library/location/world_cat/oclc_auth.rb b/lib/berkeley_library/location/world_cat/oclc_auth.rb index 95aed84..2aab315 100644 --- a/lib/berkeley_library/location/world_cat/oclc_auth.rb +++ b/lib/berkeley_library/location/world_cat/oclc_auth.rb @@ -10,6 +10,7 @@ class OCLCAuth attr_accessor :token def initialize + # Sorry Rubocop - needs to be ||= because we're dealing with a singleton # rubocop:disable Lint/DisjunctiveAssignmentInConstructor @token ||= fetch_token # rubocop:enable Lint/DisjunctiveAssignmentInConstructor: @@ -29,18 +30,13 @@ def fetch_token JSON.parse(response.body, symbolize_names: true) end - # def token - # @token = get_token if token_expired? - # @token - # end - def oclc_token_url URI.parse("#{Config.token_uri}?#{URI.encode_www_form(token_params)}") end # Before every request check if the token is expired (OCLC tokens expire after 20 minutes) def access_token - @token = token if token_expired? + @token = fetch_token if token_expired? @token[:access_token] end diff --git a/spec/berkeley_library/location/world_cat/oclc_auth_spec.rb b/spec/berkeley_library/location/world_cat/oclc_auth_spec.rb index 058df5b..74d1823 100644 --- a/spec/berkeley_library/location/world_cat/oclc_auth_spec.rb +++ b/spec/berkeley_library/location/world_cat/oclc_auth_spec.rb @@ -1,4 +1,5 @@ require 'spec_helper' +require 'time' module BerkeleyLibrary module Location @@ -12,17 +13,26 @@ module WorldCat end end - it 'refreshes a token' do + it 'refreshes an expired token' do VCR.use_cassette('oclc_auth/refresh_token') do + # First get a token.... token = OCLCAuth.instance.token # Need to set the token expiration to a time in the past - token[:expires_at] = (Time.now - 1).to_s + token[:expires_at] = (Time.now - 60).to_s + token[:access_token] = 'expired_token' + + # Now we need to set the token instance to the token with the updated expiration OCLCAuth.instance.token = token + # Trigger a refresh by calling access_token OCLCAuth.instance.access_token - expect(OCLCAuth.instance.token[:access_token]).to be_a(String) + # Now check that the token has been refreshed + token = OCLCAuth.instance.token + + expect(token[:access_token]).not_to eq('expired_token') + expect(Time.parse(token[:expires_at])).to be >= Time.now end end diff --git a/spec/cassettes/libraries_request/execute_holdings_1.yml b/spec/cassettes/libraries_request/execute_holdings_1.yml index 5755489..7725903 100644 --- a/spec/cassettes/libraries_request/execute_holdings_1.yml +++ b/spec/cassettes/libraries_request/execute_holdings_1.yml @@ -23,60 +23,60 @@ http_interactions: message: '' headers: Date: - - Tue, 07 Jan 2025 23:01:08 GMT + - Mon, 13 Jan 2025 23:13:44 GMT Content-Type: - application/json;charset=UTF-8 Transfer-Encoding: - chunked Connection: - keep-alive - X-Ratelimit-Remaining-Day: - - '149987' - Ratelimit-Reset: - - '349132' - Ratelimit-Limit: - - '150000' - Ratelimit-Remaining: - - '149942' X-Ratelimit-Remaining-Month: - - '149942' + - '149995' + Ratelimit-Remaining: + - '149995' X-Ratelimit-Limit-Month: - '150000' X-Ratelimit-Limit-Day: - '150000' + X-Ratelimit-Remaining-Day: + - '149995' + Ratelimit-Limit: + - '150000' + Ratelimit-Reset: + - '2421977' X-Oclc-Requestid: - - a062aace-ab26-4b9c-a6e3-7d771e999109 + - 02ac90aa-995c-4e46-8903-9699c67da4af X-Oclc-Selfid: - - d31de33f-dbb7-4fd5-872a-735b4edf2d81 + - 18d1642c-e750-44ed-9f3c-d13b295ed46e Cache-Control: - max-age=3600 Kong-Request-Id: - - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#9337598 + - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#12758324 X-Kong-Upstream-Latency: - - '398' + - '1026' X-Kong-Proxy-Latency: - - '43' + - '42' Via: - 1.1 kong/3.8.0.0-enterprise-edition X-Kong-Request-Id: - - f3e16f310fe30b6629416b1f34784544 + - de4481399d965a1f9fa509747fa17c39 Strict-Transport-Security: - max-age=31536000; includeSubDomains Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=kenfR_c7QHh79juoV.79IGtcF06i84rZDUoE2IMPDhw-1736290868-1.0.1.1-9Meyw_ExEXnF3K3KFB.GDW0SJjMTwzsUTJD92jB4qwKn2nPTZvN.MjUxiXohAP2rvklVMjqhRvDN7HsHIUWFLw; - path=/; expires=Tue, 07-Jan-25 23:31:08 GMT; domain=.oclc.org; HttpOnly; Secure; + - __cf_bm=Z1Vfe.6PiZieFpJgoNc3hFWRTR0ZRYfQZWQjkhK3hXA-1736810024-1.0.1.1-6pioyKOetbDIBcsg0tFfjf4CVSFqWS4pcr9dUkUMqTd_pld9eU6lFTMXF4Mkv3No5AlxfYMsz1QAuUUjjJKz1g; + path=/; expires=Mon, 13-Jan-25 23:43:44 GMT; domain=.oclc.org; HttpOnly; Secure; SameSite=None - - _cfuvid=iaAhvllttb35avPAbwMTC0WxDhOsbjp6CrW64Ri6VsU-1736290868688-0.0.1.1-604800000; + - _cfuvid=ZJdwHkMRBf.CzVNCCIg1NhSEJdeJsli1rZe80WsnmZw-1736810024761-0.0.1.1-604800000; path=/; domain=.oclc.org; HttpOnly; Secure; SameSite=None Server: - cloudflare Cf-Ray: - - 8fe79164ee4f1510-LAX + - 901914165abf2ee4-LAX body: encoding: ASCII-8BIT string: !binary |- eyJudW1iZXJPZlJlY29yZHMiOjEsImJyaWVmUmVjb3JkcyI6W3sib2NsY051bWJlciI6Ijg1ODMzMjg1IiwidGl0bGUiOiJUaGUgcXVpZXQgZ2lybCIsImNyZWF0b3IiOiJQZXRlciBIw7hlZyIsImRhdGUiOiLCqTIwMDciLCJtYWNoaW5lUmVhZGFibGVEYXRlIjoiMjAwNyIsImxhbmd1YWdlIjoiZW5nIiwiZ2VuZXJhbEZvcm1hdCI6IkJvb2siLCJzcGVjaWZpY0Zvcm1hdCI6IlByaW50Qm9vayIsImVkaXRpb24iOiIxc3QgQW1lcmljYW4gZWQiLCJwdWJsaXNoZXIiOiJGYXJyYXIsIFN0cmF1cywgYW5kIEdpcm91eCIsInB1YmxpY2F0aW9uUGxhY2UiOiJOZXcgWW9yayIsImlzYm5zIjpbIjk3ODAzNzQyNjM2OTAiLCIwMzc0MjYzNjk4Il0sIm1lcmdlZE9jbGNOdW1iZXJzIjpbIjk2NjQ5Mzg4NiIsIjk2Nzg0MjE0OSIsIjEwMjI3MTU1MzAiLCIxMDYwNjk1OTE0IiwiMTIwMTQ2NDAzNiIsIjEyMzAzNzE4ODYiLCIxMzAzODAxODEyIl0sImNhdGFsb2dpbmdJbmZvIjp7ImNhdGFsb2dpbmdBZ2VuY3kiOiJETEMiLCJjYXRhbG9naW5nTGFuZ3VhZ2UiOiJlbmciLCJsZXZlbE9mQ2F0YWxvZ2luZyI6IiAiLCJ0cmFuc2NyaWJpbmdBZ2VuY3kiOiJETEMifSwiaW5zdGl0dXRpb25Ib2xkaW5nIjp7InRvdGFsSG9sZGluZ0NvdW50Ijo0LCJicmllZkhvbGRpbmdzIjpbeyJjb3VudHJ5IjoiVVMiLCJzdGF0ZSI6IlVTLUNBIiwib2NsY1N5bWJvbCI6Ik1FUlVDIiwicmVnaXN0cnlJZCI6NDY5MSwiaW5zdGl0dXRpb25OdW1iZXIiOjM2MjEzLCJpbnN0aXR1dGlvbk5hbWUiOiJVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIE1lcmNlZCIsImFsc29DYWxsZWQiOiJVQyBNZXJjZWQgTGlicmFyeSIsImhhc09QQUNMaW5rIjp0cnVlLCJzZWxmIjoiaHR0cHM6Ly93b3JsZGNhdC5vcmcvb2NsYy1jb25maWcvaW5zdGl0dXRpb24vZGF0YS80NjkxIiwiYWRkcmVzcyI6eyJzdHJlZXQxIjoiTGVvICZhbXA7IERvdHRpZSBLb2xsaWdpYW4gTGlicmFyeSIsInN0cmVldDIiOiI1MjAwIE4gTGFrZSBSb2FkIiwiY2l0eSI6Ik1lcmNlZCIsInN0YXRlIjoiVVMtQ0EiLCJwb3N0YWxDb2RlIjoiOTUzNDMiLCJjb3VudHJ5IjoiVVMiLCJsYXQiOjM3LjM2NjI1NywibG9uIjotMTIwLjQyNDU3fSwiaW5zdGl0dXRpb25UeXBlIjoiQUNBREVNSUMifSx7ImNvdW50cnkiOiJVUyIsInN0YXRlIjoiVVMtQ0EiLCJvY2xjU3ltYm9sIjoiWkFQIiwicmVnaXN0cnlJZCI6NTY5MCwiaW5zdGl0dXRpb25OdW1iZXIiOjQyMTgsImluc3RpdHV0aW9uTmFtZSI6IlVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwgTlJMRiIsImFsc29DYWxsZWQiOiJOb3J0aGVybiBSZWdpb25hbCBMaWJyYXJ5IEZhY2lsaXR5IiwiaGFzT1BBQ0xpbmsiOnRydWUsInNlbGYiOiJodHRwczovL3dvcmxkY2F0Lm9yZy9vY2xjLWNvbmZpZy9pbnN0aXR1dGlvbi9kYXRhLzU2OTAiLCJhZGRyZXNzIjp7InN0cmVldDEiOiJSaWNobW9uZCBGaWVsZCBTdGF0aW9uIEJsZGcuIDQwMCIsInN0cmVldDIiOiJNZWFkZSBhbmQgU291dGggNDd0aCBTdC4iLCJjaXR5IjoiUmljaG1vbmQiLCJzdGF0ZSI6IlVTLUNBIiwicG9zdGFsQ29kZSI6Ijk0ODA0LTQ2OTgiLCJjb3VudHJ5IjoiVVMiLCJsYXQiOjM3LjkxNzY3LCJsb24iOi0xMjIuMzMxNjh9LCJpbnN0aXR1dGlvblR5cGUiOiJBQ0FERU1JQyJ9LHsiY291bnRyeSI6IlVTIiwic3RhdGUiOiJVUy1DQSIsIm9jbGNTeW1ib2wiOiJDVUkiLCJyZWdpc3RyeUlkIjo1NjU2LCJpbnN0aXR1dGlvbk51bWJlciI6MTEwMSwiaW5zdGl0dXRpb25OYW1lIjoiVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBJcnZpbmUiLCJhbHNvQ2FsbGVkIjoiTGFuZ3NvbiBMaWJyYXJ5IiwiaGFzT1BBQ0xpbmsiOnRydWUsInNlbGYiOiJodHRwczovL3dvcmxkY2F0Lm9yZy9vY2xjLWNvbmZpZy9pbnN0aXR1dGlvbi9kYXRhLzU2NTYiLCJhZGRyZXNzIjp7InN0cmVldDEiOiJVbml2IG9mIENhbGlmb3JuaWEgSXJ2aW5lIiwiY2l0eSI6IklydmluZSIsInN0YXRlIjoiVVMtQ0EiLCJwb3N0YWxDb2RlIjoiOTI2OTciLCJjb3VudHJ5IjoiVVMiLCJsYXQiOjMzLjY0NzI2NiwibG9uIjotMTE3Ljg0MTAzNH0sImluc3RpdHV0aW9uVHlwZSI6IkFDQURFTUlDIn0seyJjb3VudHJ5IjoiVVMiLCJzdGF0ZSI6IlVTLUNBIiwib2NsY1N5bWJvbCI6IkNVWSIsInJlZ2lzdHJ5SWQiOjU2ODksImluc3RpdHV0aW9uTnVtYmVyIjoxOTkzLCJpbnN0aXR1dGlvbk5hbWUiOiJVQyBCZXJrZWxleSBMaWJyYXJpZXMiLCJoYXNPUEFDTGluayI6dHJ1ZSwic2VsZiI6Imh0dHBzOi8vd29ybGRjYXQub3JnL29jbGMtY29uZmlnL2luc3RpdHV0aW9uL2RhdGEvNTY4OSIsImFkZHJlc3MiOnsic3RyZWV0MSI6IjEzMyBEb2UgTGlicmFyeSIsInN0cmVldDIiOiJVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEiLCJjaXR5IjoiQmVya2VsZXkiLCJzdGF0ZSI6IlVTLUNBIiwicG9zdGFsQ29kZSI6Ijk0NzIwLTYwMDAiLCJjb3VudHJ5IjoiVVMiLCJsYXQiOjM3Ljg3NTc1LCJsb24iOi0xMjIuMjQzNDF9LCJpbnN0aXR1dGlvblR5cGUiOiJBQ0FERU1JQyJ9XX19XX0= - recorded_at: Tue, 07 Jan 2025 23:01:08 GMT + recorded_at: Mon, 13 Jan 2025 23:13:44 GMT recorded_with: VCR 6.3.1 diff --git a/spec/cassettes/libraries_request/execute_holdings_2.yml b/spec/cassettes/libraries_request/execute_holdings_2.yml index 0feb99d..d4041d9 100644 --- a/spec/cassettes/libraries_request/execute_holdings_2.yml +++ b/spec/cassettes/libraries_request/execute_holdings_2.yml @@ -23,60 +23,60 @@ http_interactions: message: '' headers: Date: - - Tue, 07 Jan 2025 23:01:09 GMT + - Mon, 13 Jan 2025 23:13:45 GMT Content-Type: - application/json;charset=UTF-8 Transfer-Encoding: - chunked Connection: - keep-alive - X-Ratelimit-Remaining-Day: - - '149986' - Ratelimit-Reset: - - '349131' - Ratelimit-Limit: - - '150000' - Ratelimit-Remaining: - - '149941' X-Ratelimit-Remaining-Month: - - '149941' + - '149994' + Ratelimit-Remaining: + - '149994' X-Ratelimit-Limit-Month: - '150000' X-Ratelimit-Limit-Day: - '150000' + X-Ratelimit-Remaining-Day: + - '149994' + Ratelimit-Limit: + - '150000' + Ratelimit-Reset: + - '2421975' X-Oclc-Requestid: - - da247e04-f561-45b0-bb30-b983c095af44 + - b09e9457-bad9-4d1a-a6c3-9d29e6a304e1 X-Oclc-Selfid: - - 13bcfcf8-8bb1-427c-823b-d3ac418af368 + - f89f6389-35c9-4f33-8120-0adb77298526 Cache-Control: - max-age=3600 Kong-Request-Id: - - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#9337606 + - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#12758341 X-Kong-Upstream-Latency: - - '101' + - '59' X-Kong-Proxy-Latency: - - '1' + - '2' Via: - 1.1 kong/3.8.0.0-enterprise-edition X-Kong-Request-Id: - - 98eef44e0830d5567b07fb3d38ecff0a + - 261a904cbcbc0b7c0169ed7d79a59b38 Strict-Transport-Security: - max-age=31536000; includeSubDomains Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=4GS_FLWe.bI_.8ZWGDaatJAyarhnNiJwhV8Vqyji5Ow-1736290869-1.0.1.1-Blgh2Y3z53SyWn99TdoUnytdauoVpttvnhN90YkSakbpevoRuVAlEPaPYwC.ODWv9vAw.YcDkEzsAyL.wyAM_A; - path=/; expires=Tue, 07-Jan-25 23:31:09 GMT; domain=.oclc.org; HttpOnly; Secure; + - __cf_bm=VafgAPnEMRdYBqbFx.wjCPjgqrHQcLtuYco1Z5sShWM-1736810025-1.0.1.1-tncICuQIzFn_DyXiAvzSpKC.CbgN4flE5_lFmSZQz6l4iTVrzZJ5rRV2r5G1YcpdPy0.ld4h63tzlp39O8khmQ; + path=/; expires=Mon, 13-Jan-25 23:43:45 GMT; domain=.oclc.org; HttpOnly; Secure; SameSite=None - - _cfuvid=I5j8K_bc10wLE7w08c5eh7QGDG3pLebr485txpupiVI-1736290869313-0.0.1.1-604800000; + - _cfuvid=mx2c9QMr8MIE5uYOKAIEDutn_0v3uhOt9Z6un9ar2EA-1736810025210-0.0.1.1-604800000; path=/; domain=.oclc.org; HttpOnly; Secure; SameSite=None Server: - cloudflare Cf-Ray: - - 8fe7916aae28101f-LAX + - 9019141f8b650fba-LAX body: encoding: ASCII-8BIT string: !binary |- eyJudW1iZXJPZlJlY29yZHMiOjEsImJyaWVmUmVjb3JkcyI6W3sib2NsY051bWJlciI6Ijg1ODMzMjg1IiwidGl0bGUiOiJUaGUgcXVpZXQgZ2lybCIsImNyZWF0b3IiOiJQZXRlciBIw7hlZyIsImRhdGUiOiLCqTIwMDciLCJtYWNoaW5lUmVhZGFibGVEYXRlIjoiMjAwNyIsImxhbmd1YWdlIjoiZW5nIiwiZ2VuZXJhbEZvcm1hdCI6IkJvb2siLCJzcGVjaWZpY0Zvcm1hdCI6IlByaW50Qm9vayIsImVkaXRpb24iOiIxc3QgQW1lcmljYW4gZWQiLCJwdWJsaXNoZXIiOiJGYXJyYXIsIFN0cmF1cywgYW5kIEdpcm91eCIsInB1YmxpY2F0aW9uUGxhY2UiOiJOZXcgWW9yayIsImlzYm5zIjpbIjk3ODAzNzQyNjM2OTAiLCIwMzc0MjYzNjk4Il0sIm1lcmdlZE9jbGNOdW1iZXJzIjpbIjk2NjQ5Mzg4NiIsIjk2Nzg0MjE0OSIsIjEwMjI3MTU1MzAiLCIxMDYwNjk1OTE0IiwiMTIwMTQ2NDAzNiIsIjEyMzAzNzE4ODYiLCIxMzAzODAxODEyIl0sImNhdGFsb2dpbmdJbmZvIjp7ImNhdGFsb2dpbmdBZ2VuY3kiOiJETEMiLCJjYXRhbG9naW5nTGFuZ3VhZ2UiOiJlbmciLCJsZXZlbE9mQ2F0YWxvZ2luZyI6IiAiLCJ0cmFuc2NyaWJpbmdBZ2VuY3kiOiJETEMifSwiaW5zdGl0dXRpb25Ib2xkaW5nIjp7InRvdGFsSG9sZGluZ0NvdW50IjoxLCJicmllZkhvbGRpbmdzIjpbeyJjb3VudHJ5IjoiVVMiLCJzdGF0ZSI6IlVTLUNBIiwib2NsY1N5bWJvbCI6IlpBUCIsInJlZ2lzdHJ5SWQiOjU2OTAsImluc3RpdHV0aW9uTnVtYmVyIjo0MjE4LCJpbnN0aXR1dGlvbk5hbWUiOiJVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIE5STEYiLCJhbHNvQ2FsbGVkIjoiTm9ydGhlcm4gUmVnaW9uYWwgTGlicmFyeSBGYWNpbGl0eSIsImhhc09QQUNMaW5rIjp0cnVlLCJzZWxmIjoiaHR0cHM6Ly93b3JsZGNhdC5vcmcvb2NsYy1jb25maWcvaW5zdGl0dXRpb24vZGF0YS81NjkwIiwiYWRkcmVzcyI6eyJzdHJlZXQxIjoiUmljaG1vbmQgRmllbGQgU3RhdGlvbiBCbGRnLiA0MDAiLCJzdHJlZXQyIjoiTWVhZGUgYW5kIFNvdXRoIDQ3dGggU3QuIiwiY2l0eSI6IlJpY2htb25kIiwic3RhdGUiOiJVUy1DQSIsInBvc3RhbENvZGUiOiI5NDgwNC00Njk4IiwiY291bnRyeSI6IlVTIiwibGF0IjozNy45MTc2NywibG9uIjotMTIyLjMzMTY4fSwiaW5zdGl0dXRpb25UeXBlIjoiQUNBREVNSUMifV19fV19 - recorded_at: Tue, 07 Jan 2025 23:01:09 GMT + recorded_at: Mon, 13 Jan 2025 23:13:45 GMT recorded_with: VCR 6.3.1 diff --git a/spec/cassettes/libraries_request/execute_holdings_3.yml b/spec/cassettes/libraries_request/execute_holdings_3.yml index 8392587..6699590 100644 --- a/spec/cassettes/libraries_request/execute_holdings_3.yml +++ b/spec/cassettes/libraries_request/execute_holdings_3.yml @@ -23,60 +23,60 @@ http_interactions: message: '' headers: Date: - - Tue, 07 Jan 2025 23:01:09 GMT + - Mon, 13 Jan 2025 23:13:46 GMT Content-Type: - application/json;charset=UTF-8 Transfer-Encoding: - chunked Connection: - keep-alive - X-Ratelimit-Remaining-Day: - - '149985' - Ratelimit-Reset: - - '349131' - Ratelimit-Limit: - - '150000' - Ratelimit-Remaining: - - '149940' X-Ratelimit-Remaining-Month: - - '149940' + - '149993' + Ratelimit-Remaining: + - '149993' X-Ratelimit-Limit-Month: - '150000' X-Ratelimit-Limit-Day: - '150000' + X-Ratelimit-Remaining-Day: + - '149993' + Ratelimit-Limit: + - '150000' + Ratelimit-Reset: + - '2421975' X-Oclc-Requestid: - - 18270473-aa58-4240-b6fb-ca27060d6026 + - 561090c2-ced0-44b5-a7ae-d55d65d5921b X-Oclc-Selfid: - - 5aaaa264-a1cf-4a23-8c44-bfc5df2eb264 + - e3ede4d1-dc72-49e7-96da-c6102d7e4b4c Cache-Control: - max-age=3600 Kong-Request-Id: - - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#9337611 + - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#12758345 X-Kong-Upstream-Latency: - - '67' + - '693' X-Kong-Proxy-Latency: - - '2' + - '1' Via: - 1.1 kong/3.8.0.0-enterprise-edition X-Kong-Request-Id: - - f2da9b21eb18203b70288c02375eb42c + - 8492190bdc6b5f36311be84f868f5357 Strict-Transport-Security: - max-age=31536000; includeSubDomains Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=pkZyzlIsu44s3J8uEFfQLZG96nyB38kADbk58EweVg8-1736290869-1.0.1.1-k_5cYJ2fKL6WE1EtmDFL7vCpAOf82twuICpLFkGz6HjOfL2D7mbQX8i1dFRIlFLwljBbkVl0CJt3.hbY9ZT_DQ; - path=/; expires=Tue, 07-Jan-25 23:31:09 GMT; domain=.oclc.org; HttpOnly; Secure; + - __cf_bm=W30ELwjVWhBnGA6cdQGbD0ua7VlMvjrN_FgPuLkb5g8-1736810026-1.0.1.1-2whzXAQq2OwaKSbAJKNw3VBK9H4d35OW9RQApR5o3qRllE40xTbFOmqv4SMrBtKpcMhiPvQNRxCnVqEd1DQs6g; + path=/; expires=Mon, 13-Jan-25 23:43:46 GMT; domain=.oclc.org; HttpOnly; Secure; SameSite=None - - _cfuvid=Wyvt_0JQhrkunbgPxSDnVEo8k5KurYZt1F1Dd5RFOT8-1736290869753-0.0.1.1-604800000; + - _cfuvid=NQvm4sTO9nwwUTIyhJ50vaTnhaxpiRs1pLh2S6jPLsQ-1736810026371-0.0.1.1-604800000; path=/; domain=.oclc.org; HttpOnly; Secure; SameSite=None Server: - cloudflare Cf-Ray: - - 8fe7916def047d5c-LAX + - 90191422befb2f03-LAX body: encoding: ASCII-8BIT string: !binary |- eyJudW1iZXJPZlJlY29yZHMiOjEsImJyaWVmUmVjb3JkcyI6W3sib2NsY051bWJlciI6Ijg1ODMzMjg1IiwidGl0bGUiOiJUaGUgcXVpZXQgZ2lybCIsImNyZWF0b3IiOiJQZXRlciBIw7hlZyIsImRhdGUiOiLCqTIwMDciLCJtYWNoaW5lUmVhZGFibGVEYXRlIjoiMjAwNyIsImxhbmd1YWdlIjoiZW5nIiwiZ2VuZXJhbEZvcm1hdCI6IkJvb2siLCJzcGVjaWZpY0Zvcm1hdCI6IlByaW50Qm9vayIsImVkaXRpb24iOiIxc3QgQW1lcmljYW4gZWQiLCJwdWJsaXNoZXIiOiJGYXJyYXIsIFN0cmF1cywgYW5kIEdpcm91eCIsInB1YmxpY2F0aW9uUGxhY2UiOiJOZXcgWW9yayIsImlzYm5zIjpbIjk3ODAzNzQyNjM2OTAiLCIwMzc0MjYzNjk4Il0sIm1lcmdlZE9jbGNOdW1iZXJzIjpbIjk2NjQ5Mzg4NiIsIjk2Nzg0MjE0OSIsIjEwMjI3MTU1MzAiLCIxMDYwNjk1OTE0IiwiMTIwMTQ2NDAzNiIsIjEyMzAzNzE4ODYiLCIxMzAzODAxODEyIl0sImNhdGFsb2dpbmdJbmZvIjp7ImNhdGFsb2dpbmdBZ2VuY3kiOiJETEMiLCJjYXRhbG9naW5nTGFuZ3VhZ2UiOiJlbmciLCJsZXZlbE9mQ2F0YWxvZ2luZyI6IiAiLCJ0cmFuc2NyaWJpbmdBZ2VuY3kiOiJETEMifSwiaW5zdGl0dXRpb25Ib2xkaW5nIjp7InRvdGFsSG9sZGluZ0NvdW50IjozLCJicmllZkhvbGRpbmdzIjpbeyJjb3VudHJ5IjoiVVMiLCJzdGF0ZSI6IlVTLUNBIiwib2NsY1N5bWJvbCI6Ik1FUlVDIiwicmVnaXN0cnlJZCI6NDY5MSwiaW5zdGl0dXRpb25OdW1iZXIiOjM2MjEzLCJpbnN0aXR1dGlvbk5hbWUiOiJVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIE1lcmNlZCIsImFsc29DYWxsZWQiOiJVQyBNZXJjZWQgTGlicmFyeSIsImhhc09QQUNMaW5rIjp0cnVlLCJzZWxmIjoiaHR0cHM6Ly93b3JsZGNhdC5vcmcvb2NsYy1jb25maWcvaW5zdGl0dXRpb24vZGF0YS80NjkxIiwiYWRkcmVzcyI6eyJzdHJlZXQxIjoiTGVvICZhbXA7IERvdHRpZSBLb2xsaWdpYW4gTGlicmFyeSIsInN0cmVldDIiOiI1MjAwIE4gTGFrZSBSb2FkIiwiY2l0eSI6Ik1lcmNlZCIsInN0YXRlIjoiVVMtQ0EiLCJwb3N0YWxDb2RlIjoiOTUzNDMiLCJjb3VudHJ5IjoiVVMiLCJsYXQiOjM3LjM2NjI1NywibG9uIjotMTIwLjQyNDU3fSwiaW5zdGl0dXRpb25UeXBlIjoiQUNBREVNSUMifSx7ImNvdW50cnkiOiJVUyIsInN0YXRlIjoiVVMtQ0EiLCJvY2xjU3ltYm9sIjoiQ1VJIiwicmVnaXN0cnlJZCI6NTY1NiwiaW5zdGl0dXRpb25OdW1iZXIiOjExMDEsImluc3RpdHV0aW9uTmFtZSI6IlVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwgSXJ2aW5lIiwiYWxzb0NhbGxlZCI6Ikxhbmdzb24gTGlicmFyeSIsImhhc09QQUNMaW5rIjp0cnVlLCJzZWxmIjoiaHR0cHM6Ly93b3JsZGNhdC5vcmcvb2NsYy1jb25maWcvaW5zdGl0dXRpb24vZGF0YS81NjU2IiwiYWRkcmVzcyI6eyJzdHJlZXQxIjoiVW5pdiBvZiBDYWxpZm9ybmlhIElydmluZSIsImNpdHkiOiJJcnZpbmUiLCJzdGF0ZSI6IlVTLUNBIiwicG9zdGFsQ29kZSI6IjkyNjk3IiwiY291bnRyeSI6IlVTIiwibGF0IjozMy42NDcyNjYsImxvbiI6LTExNy44NDEwMzR9LCJpbnN0aXR1dGlvblR5cGUiOiJBQ0FERU1JQyJ9LHsiY291bnRyeSI6IlVTIiwic3RhdGUiOiJVUy1DQSIsIm9jbGNTeW1ib2wiOiJDVVkiLCJyZWdpc3RyeUlkIjo1Njg5LCJpbnN0aXR1dGlvbk51bWJlciI6MTk5MywiaW5zdGl0dXRpb25OYW1lIjoiVUMgQmVya2VsZXkgTGlicmFyaWVzIiwiaGFzT1BBQ0xpbmsiOnRydWUsInNlbGYiOiJodHRwczovL3dvcmxkY2F0Lm9yZy9vY2xjLWNvbmZpZy9pbnN0aXR1dGlvbi9kYXRhLzU2ODkiLCJhZGRyZXNzIjp7InN0cmVldDEiOiIxMzMgRG9lIExpYnJhcnkiLCJzdHJlZXQyIjoiVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhIiwiY2l0eSI6IkJlcmtlbGV5Iiwic3RhdGUiOiJVUy1DQSIsInBvc3RhbENvZGUiOiI5NDcyMC02MDAwIiwiY291bnRyeSI6IlVTIiwibGF0IjozNy44NzU3NSwibG9uIjotMTIyLjI0MzQxfSwiaW5zdGl0dXRpb25UeXBlIjoiQUNBREVNSUMifV19fV19 - recorded_at: Tue, 07 Jan 2025 23:01:09 GMT + recorded_at: Mon, 13 Jan 2025 23:13:46 GMT recorded_with: VCR 6.3.1 diff --git a/spec/cassettes/libraries_request/execute_holdings_4.yml b/spec/cassettes/libraries_request/execute_holdings_4.yml index 18c0d90..876b644 100644 --- a/spec/cassettes/libraries_request/execute_holdings_4.yml +++ b/spec/cassettes/libraries_request/execute_holdings_4.yml @@ -23,60 +23,60 @@ http_interactions: message: '' headers: Date: - - Tue, 07 Jan 2025 23:01:10 GMT + - Mon, 13 Jan 2025 23:13:46 GMT Content-Type: - application/json;charset=UTF-8 Transfer-Encoding: - chunked Connection: - keep-alive - X-Ratelimit-Remaining-Day: - - '149984' - Ratelimit-Reset: - - '349130' - Ratelimit-Limit: - - '150000' - Ratelimit-Remaining: - - '149939' - X-Ratelimit-Remaining-Month: - - '149939' X-Ratelimit-Limit-Month: - '150000' + X-Ratelimit-Remaining-Month: + - '149992' X-Ratelimit-Limit-Day: - '150000' + X-Ratelimit-Remaining-Day: + - '149992' + Ratelimit-Remaining: + - '149992' + Ratelimit-Limit: + - '150000' + Ratelimit-Reset: + - '2421974' X-Oclc-Requestid: - - 18d86ace-2856-42ee-a167-0914f256aaf9 + - d4854fec-674b-488a-8fd0-1203a36034f7 X-Oclc-Selfid: - - 7ca5538a-26fa-424d-9439-c245e4a3cb64 + - 766664b8-e444-4217-9915-6c436b5c3bb4 Cache-Control: - max-age=3600 Kong-Request-Id: - - 7dc290f2-87f5-4e2f-81ca-094a9706b8e7#9337615 + - 27299ae4-e58f-4a3d-9c9d-1d539cf14d33#751811 X-Kong-Upstream-Latency: - - '21' + - '154' X-Kong-Proxy-Latency: - '2' Via: - 1.1 kong/3.8.0.0-enterprise-edition X-Kong-Request-Id: - - 50c70a3968e43e0628e70a293ca58939 + - de5a2a307ad5855f3e0bb50dff3f2d1b Strict-Transport-Security: - max-age=31536000; includeSubDomains Cf-Cache-Status: - DYNAMIC Set-Cookie: - - __cf_bm=EcJrMGZHWcR2qFk1t2cn0kzJ2_2k8n.1f73xNTAzDts-1736290870-1.0.1.1-81sIheAg2TEkFlNN05mnwcgnhXeqslV5tjV0_9lwB2Up7jxwUZ8OPyZoduT0ABmtKoDBBOH6weQ1oRNCLvFWAw; - path=/; expires=Tue, 07-Jan-25 23:31:10 GMT; domain=.oclc.org; HttpOnly; Secure; + - __cf_bm=ORttkfWGk90435YkLhbL200NZEj4jovFsomOl0XbP.w-1736810026-1.0.1.1-C4A0e4RlJghmgunm7gzZgh_dEzJohqZ6m9K6fFP4oeaLLZdR19rFHAKdW2YJb8wcU9m._uY3buBf_ekpJ8v3sA; + path=/; expires=Mon, 13-Jan-25 23:43:46 GMT; domain=.oclc.org; HttpOnly; Secure; SameSite=None - - _cfuvid=VvwCiq3xtZgjwjSI12oasOYzKOJg9XAE7Q3JREBqB70-1736290870173-0.0.1.1-604800000; + - _cfuvid=0bcUhvkERfqTTyzNzzvRDFCwOCPK2kAaMx6Jpl._5HQ-1736810026979-0.0.1.1-604800000; path=/; domain=.oclc.org; HttpOnly; Secure; SameSite=None Server: - cloudflare Cf-Ray: - - 8fe79170beb42b72-LAX + - 90191429bf400fd9-LAX body: encoding: ASCII-8BIT string: !binary |- eyJudW1iZXJPZlJlY29yZHMiOjEsImJyaWVmUmVjb3JkcyI6W3sib2NsY051bWJlciI6IjEwMDQ1MTkzIiwidGl0bGUiOiJEZSBTYWludC1Mb3VpcyBhIFRyaXBvbGkgcGFyIGxlIExhYyBUY2hhZCA6IHZveWFnZSBhdSB0cmF2ZXJzIGR1IFNvdWRhbiBldCBkdSBTYWhhcmEgYWNjb21wbGkgcGVuZGFudCBsZXMgYW5uZcyBZXMgMTg5MC05MS05MiIsImNyZWF0b3IiOiJQLi1MLiBNb250ZWlsIiwiZGF0ZSI6IlsxODk1P10iLCJtYWNoaW5lUmVhZGFibGVEYXRlIjoiMTg5NSIsImxhbmd1YWdlIjoiZnJlIiwiZ2VuZXJhbEZvcm1hdCI6IkJvb2siLCJzcGVjaWZpY0Zvcm1hdCI6IlByaW50Qm9vayIsInB1Ymxpc2hlciI6IkYuIEFsY2FuIiwicHVibGljYXRpb25QbGFjZSI6IlBhcmlzIiwibWVyZ2VkT2NsY051bWJlcnMiOlsiMTAwNzQ3MDU4MiJdLCJjYXRhbG9naW5nSW5mbyI6eyJjYXRhbG9naW5nQWdlbmN5IjoiQ1VGIiwiY2F0YWxvZ2luZ0xhbmd1YWdlIjoiZW5nIiwibGV2ZWxPZkNhdGFsb2dpbmciOiIgIiwidHJhbnNjcmliaW5nQWdlbmN5IjoiQ1VGIn0sImluc3RpdHV0aW9uSG9sZGluZyI6eyJ0b3RhbEhvbGRpbmdDb3VudCI6MH19XX0= - recorded_at: Tue, 07 Jan 2025 23:01:10 GMT + recorded_at: Mon, 13 Jan 2025 23:13:47 GMT recorded_with: VCR 6.3.1 diff --git a/spec/cassettes/oclc_auth/fetch_token.yml b/spec/cassettes/oclc_auth/fetch_token.yml new file mode 100644 index 0000000..cb3f456 --- /dev/null +++ b/spec/cassettes/oclc_auth/fetch_token.yml @@ -0,0 +1,58 @@ +--- +http_interactions: +- request: + method: post + uri: https://oauth.oclc.org/token?grant_type=client_credentials&scope=wcapi:view_institution_holdings + body: + encoding: UTF-8 + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - application/json + User-Agent: + - Ruby + Authorization: + - "" + response: + status: + code: 200 + message: '' + headers: + X-Oclc-Requestid: + - 471bbf56-055b-4040-9c39-080ba32dabcd + X-Oclc-Selfid: + - a7a2a1c5-57b2-447f-8598-64e7ae7a7947 + Set-Cookie: + - BIGipServermdc1_prdctn_p_oauth-m1-wskeyv3ws-443_8443=3660704266.64288.0000; + expires=Sat, 11-Jan-2025 00:14:58 GMT; path=/; Httponly; Secure + - JSESSIONID=634BDBCD22463783C6634B41F69E7650; Path=/; Secure; HttpOnly; SameSite=None + Vary: + - Access-Control-Request-Headers + - Access-Control-Request-Method + - Origin + Cache-Control: + - no-store + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 ; includeSubDomains + X-Xss-Protection: + - '0' + X-Frame-Options: + - DENY + X-Content-Type-Options: + - nosniff + Content-Type: + - application/json;charset=UTF-8 + Transfer-Encoding: + - chunked + Date: + - Fri, 10 Jan 2025 23:14:57 GMT + body: + encoding: UTF-8 + string: '{"access_token":"tk_rqkymSEsOeMKWgexlfy1GrXu4NcPH2yI4ysU","expires_at":"2025-01-10 + 23:34:58Z","authenticating_institution_id":"5689","scope":"wcapi:view_institution_holdings","principalID":"","context_institution_id":"5689","scopes":"wcapi:view_institution_holdings","token_type":"bearer","expires_in":1199,"principalIDNS":""}' + recorded_at: Fri, 10 Jan 2025 23:14:58 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/cassettes/oclc_auth/refresh_token.yml b/spec/cassettes/oclc_auth/refresh_token.yml new file mode 100644 index 0000000..02475ba --- /dev/null +++ b/spec/cassettes/oclc_auth/refresh_token.yml @@ -0,0 +1,58 @@ +--- +http_interactions: +- request: + method: post + uri: https://oauth.oclc.org/token?grant_type=client_credentials&scope=wcapi:view_institution_holdings + body: + encoding: UTF-8 + string: '' + headers: + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - application/json + User-Agent: + - Ruby + Authorization: + - "" + response: + status: + code: 200 + message: '' + headers: + X-Oclc-Requestid: + - 32040e79-4eb4-441c-b0b4-cd89c465fb14 + X-Oclc-Selfid: + - 5f76a91e-1a12-421c-91fb-ff0868d54de5 + Set-Cookie: + - BIGipServermdc1_prdctn_p_oauth-m1-wskeyv3ws-443_8443=3643927050.64288.0000; + expires=Tue, 14-Jan-2025 00:13:47 GMT; path=/; Httponly; Secure + - JSESSIONID=D3C312F07DAE52057E0C6A3B5F5CDDC0; Path=/; Secure; HttpOnly; SameSite=None + Vary: + - Access-Control-Request-Headers + - Access-Control-Request-Method + - Origin + Cache-Control: + - no-store + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000 ; includeSubDomains + X-Xss-Protection: + - '0' + X-Frame-Options: + - DENY + X-Content-Type-Options: + - nosniff + Content-Type: + - application/json;charset=UTF-8 + Transfer-Encoding: + - chunked + Date: + - Mon, 13 Jan 2025 23:13:46 GMT + body: + encoding: UTF-8 + string: '{"access_token":"tk_duMxBzoniydg88uTQYOaxP7YInAmKj46YNAW","expires_at":"2025-01-13 + 23:33:47Z","authenticating_institution_id":"5689","scope":"wcapi:view_institution_holdings","principalID":"","context_institution_id":"5689","scopes":"wcapi:view_institution_holdings","token_type":"bearer","expires_in":1199,"principalIDNS":""}' + recorded_at: Mon, 13 Jan 2025 23:13:47 GMT +recorded_with: VCR 6.3.1