Class: MaisOrcidClient
- Inherits:
-
Object
- Object
- MaisOrcidClient
- Includes:
- Singleton
- Defined in:
- lib/mais_orcid_client.rb,
lib/mais_orcid_client/version.rb,
lib/mais_orcid_client/authenticator.rb,
lib/mais_orcid_client/token_wrapper.rb,
lib/mais_orcid_client/unexpected_response.rb
Overview
Client for interacting with MAIS’s ORCID API
Defined Under Namespace
Classes: Authenticator, OrcidUser, TokenWrapper, UnexpectedResponse
Constant Summary collapse
- VERSION =
'1.0.2'
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
Class Method Summary collapse
Instance Method Summary collapse
-
#fetch_orcid_user(sunetid: nil, orcidid: nil) ⇒ <OrcidUser>?
Fetch a user details, including scope and token, given either a SUNetID or ORCIDID.
-
#fetch_orcid_users(limit: nil, page_size: nil) ⇒ Array<OrcidUser>
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize.
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
51 52 53 |
# File 'lib/mais_orcid_client.rb', line 51 def config @config end |
Class Method Details
.configure(client_id:, client_secret:, base_url:, token_url:, user_agent: 'stanford-library-sul-pub') ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/mais_orcid_client.rb', line 33 def configure(client_id:, client_secret:, base_url:, token_url:, user_agent: 'stanford-library-sul-pub') # rubocop:disable Style/OpenStructUse instance.config = OpenStruct.new( token: Authenticator.token(client_id, client_secret, token_url), client_id:, client_secret:, base_url:, token_url:, user_agent: ) # rubocop:enable Style/OpenStructUse self end |
Instance Method Details
#fetch_orcid_user(sunetid: nil, orcidid: nil) ⇒ <OrcidUser>?
Fetch a user details, including scope and token, given either a SUNetID or ORCIDID
79 80 81 82 83 |
# File 'lib/mais_orcid_client.rb', line 79 def fetch_orcid_user(sunetid: nil, orcidid: nil) raise 'must provide either a sunetid or orcidid' unless sunetid || orcidid sunetid ? fetch_by_sunetid(sunetid) : fetch_by_orcidid(orcidid) end |
#fetch_orcid_users(limit: nil, page_size: nil) ⇒ Array<OrcidUser>
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/mais_orcid_client.rb', line 58 def fetch_orcid_users(limit: nil, page_size: nil) orcid_users = [] next_page = first_page(page_size) loop do response = get_response(next_page) response[:results].each do |result| orcid_users << OrcidUser.new(result[:sunet_id], result[:orcid_id], result[:scope], result[:access_token], result[:last_updated]) return orcid_users if limit && limit == orcid_users.size end next_page = response.dig(:links, :next) return orcid_users if next_page.nil? || next_page.empty? end end |