From 304c1b016dc11a7db36a8152faef538f3221d720 Mon Sep 17 00:00:00 2001 From: Martin Fenner Date: Wed, 8 Apr 2020 21:02:55 +0200 Subject: [PATCH] query orcid api directly. #463 --- app/graphql/schema.graphql | 20 +++ app/graphql/types/affiliation_type.rb | 8 ++ app/graphql/types/person_type.rb | 1 + app/graphql/types/query_type.rb | 2 +- app/models/person.rb | 2 +- .../Person/find_by_id/also_found.yml | 53 ++++++++ .../returns_people_information.yml | 116 +++++++----------- .../returns_person_information.yml | 58 ++++----- spec/graphql/types/person_type_spec.rb | 6 +- spec/models/person_spec.rb | 11 ++ 10 files changed, 167 insertions(+), 110 deletions(-) create mode 100644 app/graphql/types/affiliation_type.rb create mode 100644 spec/fixtures/vcr_cassettes/Person/find_by_id/also_found.yml diff --git a/app/graphql/schema.graphql b/app/graphql/schema.graphql index 570702e2b..f5b9941c9 100644 --- a/app/graphql/schema.graphql +++ b/app/graphql/schema.graphql @@ -33,6 +33,21 @@ type Address { type: String } +""" +Information about affiliations +""" +type Affiliation { + """ + Unique identifier for each affiliation + """ + id: ID + + """ + Affiliation name + """ + name: String +} + type Audiovisual implements DoiItem { """ The DOI registration agency for the resource @@ -6380,6 +6395,11 @@ type PageInfo { A person. """ type Person { + """ + Affiliations(s) of the person. + """ + affiliation: [Affiliation!] + """ The number of citations. """ diff --git a/app/graphql/types/affiliation_type.rb b/app/graphql/types/affiliation_type.rb new file mode 100644 index 000000000..21ee1dacd --- /dev/null +++ b/app/graphql/types/affiliation_type.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AffiliationType < BaseObject + description "Information about affiliations" + + field :id, ID, null: true, description: "Unique identifier for each affiliation" + field :name, String, null: true, description: "Affiliation name" +end diff --git a/app/graphql/types/person_type.rb b/app/graphql/types/person_type.rb index 2d19ddf7c..7871447e9 100644 --- a/app/graphql/types/person_type.rb +++ b/app/graphql/types/person_type.rb @@ -8,6 +8,7 @@ class PersonType < BaseObject field :name, String, null: true, description: "The name of the person." field :given_name, String, null: true, description: "Given name. In the U.S., the first name of a Person." field :family_name, String, null: true, description: "Family name. In the U.S., the last name of an Person." + field :affiliation, [AffiliationType], null: true, description: "Affiliations(s) of the person." field :view_count, Integer, null: true, description: "The number of views according to the Counter Code of Practice." field :download_count, Integer, null: true, description: "The number of downloads according to the Counter Code of Practice." field :citation_count, Integer, null: true, description: "The number of citations." diff --git a/app/graphql/types/query_type.rb b/app/graphql/types/query_type.rb index baec85075..538438429 100644 --- a/app/graphql/types/query_type.rb +++ b/app/graphql/types/query_type.rb @@ -132,7 +132,7 @@ def person(id:) end def people(**args) - Person.query(args[:query], limit: args[:first]).fetch(:data, []) + Person.query(args[:query], rows: args[:first]).fetch(:data, []) end field :works, WorkConnectionType, null: false, connection: true, max_page_size: 1000 do diff --git a/app/models/person.rb b/app/models/person.rb index 143a99830..e03149b5f 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -16,7 +16,7 @@ def self.find_by_id(id) "given-names" => message.dig("name", "given-names", "value"), "family-names" => message.dig("name", "family-name", "value"), "other-name" => message.dig("name", "other-names", "other-name"), - "credit-name" => message.dig("name", "credit-name"), + "credit-name" => message.dig("name", "credit-name", "value"), } data = [parse_message(message: message)] diff --git a/spec/fixtures/vcr_cassettes/Person/find_by_id/also_found.yml b/spec/fixtures/vcr_cassettes/Person/find_by_id/also_found.yml new file mode 100644 index 000000000..82f460dc0 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Person/find_by_id/also_found.yml @@ -0,0 +1,53 @@ +--- +http_interactions: +- request: + method: get + uri: https://pub.orcid.org/v3.0/0000-0003-3484-6875/person + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Mozilla/5.0 (compatible; Maremma/4.6.1; mailto:info@datacite.org) + Accept: + - application/json;charset=UTF-8 + Accept-Encoding: + - gzip,deflate + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx/1.16.1 + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/json;charset=UTF-8 + Content-Encoding: + - gzip + Date: + - Wed, 08 Apr 2020 17:40:43 GMT + Expires: + - '0' + Pragma: + - no-cache + X-Xss-Protection: + - 1; mode=block + Access-Control-Allow-Origin: + - "*" + X-Content-Type-Options: + - nosniff + Connection: + - keep-alive + Set-Cookie: + - X-Mapping-fjhppofk=1F5FD8D0B8B1A8DD0F8680D854A2C10B; path=/ + X-Frame-Options: + - DENY + body: + encoding: ASCII-8BIT + string: !binary |- + H4sIAAAAAAAAA+1Y227bOBD9FYPPlnUnKT8V2BZdtNgvWOwDLdEya1kSSMqpG/jfd6iLbdmyZKdInxIgQMQ5c+HMITmTV5Qxpa1dkYi14ImVMM3R8hXtWVbBH25IA+w4fuS5gXeco5ztanEsOQBv4QAmOIgil9bwcdtX4FTseW4ZD+oChb5LobRgOQLImu1EdrC6KDrIVyZ/MSOHsBKhb+TfF7Nvi9kJpYpKxrCeV1k2R3uhxEpkQh8AWVarTMRojkqmN/DtwI8Fv77lBzSwMCWhsVDoDZfnUCe26YSRS4jreNTp6aLlvyOZ7Gs95aLb4Gv7l1XIWCTmu5ICdrXRulRL266XF4VM7aF9jiZhjjaF0iA82Thn1oozwXNtGZdNjtv1ibowpbjUosghXpGKvAu7sXEjvfFyg2j8GaHhRpFrwF8wavaN7QWXTQCzr5WGD8l/oQlODCXLvmCE7XlhhKlRqLQVFwnE0CzNUSJUmbGDJfKE/0RL5/jfw2ZNhlaiSCUrN4duy5IrzmRsQJXMHiBjSH0HR57vBWF0vNYfJeSV5lNu7hGyx46Let4nagM65cq1cECo5WMnuOVrXzjC12tefskUr5lhzf7hUKmMH96fn5D/dgF1TmelLNYi46iWXkbYJebl5WWxa9GLuNjZrYayty3JrdQ2sT/P6Ctq2W5ECMZej9bt2vO8vuYtRMh3TDzG4N6LVKuN36TE81wvDCn16APENdY9gokffNykw0xtU462qfH3CVLIYqF5HXq31bG3dc9lnXy01LLioCHFjsnD6fNEr8bfSGVDGoUBjrCDvQcre+LNR2XHKvtj0dQ2NQvmYvm9wq4Z3KjPVNYnUFTXDYMo8CcrW4N9J4ITjt/w2Ayk/06u3iXXdaLTavspVosdyxcsXlTbP5zu9iBR7IQPtO01mLjQvZOPgzRxkNpzBIWFx05pLt+vvhNPbhOS2XmSwPOrHhldQhe7rh+BEeqeNcfbxL7KU/Y/qDQ4t1S5NlU/+//85W0tXVs/m5KAuk6vk2uWbho5d4pVHSUgni0/vBQyuUurZrMtCjg0Yflkzhynn3BycpZB0iB1xqh8ZPCOPEKo6f2IM2xkvG88qWMyfSn2fb3jwEOdKLJwRAcHnkvhEwPPZ2jh/oIW7g9cjOciWPpQ1v+9EfrvaoX6si6y7Y/6Ar2S3pmGUqE31aqegzq9K5eSZ8zEpjaiBEXFs/Wbxv0hQtow8EakP/c3S8/PR4OEP47rlIApcnT8H6WhxmzTEwAA + http_version: null + recorded_at: Wed, 08 Apr 2020 17:40:43 GMT +recorded_with: VCR 5.1.0 diff --git a/spec/fixtures/vcr_cassettes/PersonType/query_people/returns_people_information.yml b/spec/fixtures/vcr_cassettes/PersonType/query_people/returns_people_information.yml index 661795563..2b0f26021 100644 --- a/spec/fixtures/vcr_cassettes/PersonType/query_people/returns_people_information.yml +++ b/spec/fixtures/vcr_cassettes/PersonType/query_people/returns_people_information.yml @@ -2,7 +2,7 @@ http_interactions: - request: method: get - uri: https://api.datacite.org/users?page%5Bnumber%5D=1&page%5Bsize%5D=25&query=Fenner + uri: https://pub.orcid.org/v3.0/expanded-search/?q=Fenner&rows=25&start=1 body: encoding: US-ASCII string: '' @@ -10,7 +10,7 @@ http_interactions: User-Agent: - Mozilla/5.0 (compatible; Maremma/4.6.1; mailto:info@datacite.org) Accept: - - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + - application/json;charset=UTF-8 Accept-Encoding: - gzip,deflate response: @@ -18,53 +18,41 @@ http_interactions: code: 200 message: OK headers: - Date: - - Sun, 05 Apr 2020 06:45:50 GMT - Content-Type: - - application/json; charset=utf-8 - Connection: - - keep-alive - Status: - - 200 OK - X-Anonymous-Consumer: - - 'true' + Server: + - nginx/1.16.1 Cache-Control: - - max-age=0, private, must-revalidate - Vary: - - Accept-Encoding, Origin + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/json;charset=UTF-8 Content-Encoding: - gzip - Referrer-Policy: - - strict-origin-when-cross-origin - X-Permitted-Cross-Domain-Policies: - - none + Date: + - Wed, 08 Apr 2020 17:29:18 GMT + Expires: + - '0' + Pragma: + - no-cache X-Xss-Protection: - 1; mode=block - X-Request-Id: - - c75deb4e-c059-4f5e-9522-407029711597 - X-Download-Options: - - noopen - Etag: - - W/"768c7af88e478c31ab042225aec0e272" - X-Frame-Options: - - SAMEORIGIN - X-Runtime: - - '0.112203' + Access-Control-Allow-Origin: + - "*" X-Content-Type-Options: - nosniff - X-Powered-By: - - Phusion Passenger 6.0.4 - Server: - - nginx/1.14.0 + Phusion Passenger 6.0.4 + Connection: + - keep-alive + Set-Cookie: + - X-Mapping-fjhppofk=26484D0F5DA32D2D6AF64AA1C9DBBA16; path=/ + X-Frame-Options: + - DENY body: encoding: ASCII-8BIT string: !binary |- - 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 http_version: null - recorded_at: Sun, 05 Apr 2020 06:45:50 GMT + recorded_at: Wed, 08 Apr 2020 17:29:18 GMT - request: method: get - uri: https://api.datacite.org/users?page%5Bnumber%5D=1&page%5Bsize%5D=25&query=Fenner + uri: https://pub.orcid.org/v3.0/expanded-search/?q=Fenner&rows=25&start=1 body: encoding: US-ASCII string: '' @@ -72,7 +60,7 @@ http_interactions: User-Agent: - Mozilla/5.0 (compatible; Maremma/4.6.1; mailto:info@datacite.org) Accept: - - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + - application/json;charset=UTF-8 Accept-Encoding: - gzip,deflate response: @@ -80,48 +68,36 @@ http_interactions: code: 200 message: OK headers: - Date: - - Sun, 05 Apr 2020 06:45:50 GMT - Content-Type: - - application/json; charset=utf-8 - Connection: - - keep-alive - Status: - - 200 OK - X-Anonymous-Consumer: - - 'true' + Server: + - nginx/1.16.1 Cache-Control: - - max-age=0, private, must-revalidate - Vary: - - Accept-Encoding, Origin + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/json;charset=UTF-8 Content-Encoding: - gzip - Referrer-Policy: - - strict-origin-when-cross-origin - X-Permitted-Cross-Domain-Policies: - - none + Date: + - Wed, 08 Apr 2020 17:29:19 GMT + Expires: + - '0' + Pragma: + - no-cache X-Xss-Protection: - 1; mode=block - X-Request-Id: - - 2f703065-9166-4a92-be30-95d324ec659e - X-Download-Options: - - noopen - Etag: - - W/"768c7af88e478c31ab042225aec0e272" - X-Frame-Options: - - SAMEORIGIN - X-Runtime: - - '0.036301' + Access-Control-Allow-Origin: + - "*" X-Content-Type-Options: - nosniff - X-Powered-By: - - Phusion Passenger 6.0.4 - Server: - - nginx/1.14.0 + Phusion Passenger 6.0.4 + Connection: + - keep-alive + Set-Cookie: + - X-Mapping-fjhppofk=26484D0F5DA32D2D6AF64AA1C9DBBA16; path=/ + X-Frame-Options: + - DENY body: encoding: ASCII-8BIT string: !binary |- - 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 http_version: null - recorded_at: Sun, 05 Apr 2020 06:45:50 GMT + recorded_at: Wed, 08 Apr 2020 17:29:19 GMT recorded_with: VCR 5.1.0 diff --git a/spec/fixtures/vcr_cassettes/PersonType/query_person/returns_person_information.yml b/spec/fixtures/vcr_cassettes/PersonType/query_person/returns_person_information.yml index 2be2478a9..f4a979d8c 100644 --- a/spec/fixtures/vcr_cassettes/PersonType/query_person/returns_person_information.yml +++ b/spec/fixtures/vcr_cassettes/PersonType/query_person/returns_person_information.yml @@ -2,7 +2,7 @@ http_interactions: - request: method: get - uri: https://api.datacite.org/users/0000-0003-3484-6875 + uri: https://pub.orcid.org/v3.0/0000-0003-3484-6875/person body: encoding: US-ASCII string: '' @@ -10,7 +10,7 @@ http_interactions: User-Agent: - Mozilla/5.0 (compatible; Maremma/4.6.1; mailto:info@datacite.org) Accept: - - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 + - application/json;charset=UTF-8 Accept-Encoding: - gzip,deflate response: @@ -18,48 +18,36 @@ http_interactions: code: 200 message: OK headers: - Date: - - Sun, 05 Apr 2020 06:45:48 GMT - Content-Type: - - application/json; charset=utf-8 - Connection: - - keep-alive - Status: - - 200 OK - X-Anonymous-Consumer: - - 'true' + Server: + - nginx/1.16.1 Cache-Control: - - max-age=0, private, must-revalidate - Vary: - - Accept-Encoding, Origin + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/json;charset=UTF-8 Content-Encoding: - gzip - Referrer-Policy: - - strict-origin-when-cross-origin - X-Permitted-Cross-Domain-Policies: - - none + Date: + - Wed, 08 Apr 2020 17:29:28 GMT + Expires: + - '0' + Pragma: + - no-cache X-Xss-Protection: - 1; mode=block - X-Request-Id: - - dc0c49b2-02c5-4036-874b-dac3b7f3cd8f - X-Download-Options: - - noopen - Etag: - - W/"54da1f35dbdb9a6a2893befb555bdc3a" - X-Frame-Options: - - SAMEORIGIN - X-Runtime: - - '32.642347' + Access-Control-Allow-Origin: + - "*" X-Content-Type-Options: - nosniff - X-Powered-By: - - Phusion Passenger 6.0.4 - Server: - - nginx/1.14.0 + Phusion Passenger 6.0.4 + Connection: + - keep-alive + Set-Cookie: + - X-Mapping-fjhppofk=1F5FD8D0B8B1A8DD0F8680D854A2C10B; path=/ + X-Frame-Options: + - DENY body: encoding: ASCII-8BIT string: !binary |- - H4sIAJx+iV4AA6yTb2vbMBDGv0rRa9ux5fxx9G6sMNrB3iyvNsZQ5EuiTraMdGrWFX/3SbGJZdpCYTMYdI9/9+juZD2TmiMn7JnImjCS+yf1b5mWy2qZrqvNiiQEnzrwH50FY33IEY3cOwQb8o7yEdovvPFE65RKyIE3Uj3FSntZk8/ZzX1284mbP9y7aCMuW54QO8sWi0ucaXNcvF7EUeLJ7aOEQciEbha/Ho6jq9EK7oKtRX44/OR1I1svS/tBoC+UMDQOEiIMcITA0bxYp3mV5sWuWDO6YmWV+b2/+STX1VeI+orKtMh3tGC0YmU+QL3fERRHqVt7kl0YSO+1BoaZ1lp66fs43LBVmKZEBVMotGuRsGWfTNhmjm0mrIyxao5Vb7ht59h2wmiE0XyGXcIRK/ofCencXkl7CvOIGlrNvVdvVPrPfdP39U3/f98GrHZGwM5fgugwEX5jlLgbwjFxe/UXWikQ4f+I4I+x+KKkcCEtxOa3V+UFbPUBz9xARH+dpLiPRwnnUL9f1vrcKs3rMRQShz/4nSfr7fr+LwAAAP//AwDCYjxKOQQAAA== + H4sIAAAAAAAAA+1Y227bOBD9FYPPlnUnKT8V2BZdtNgvWOwDLdEya1kSSMqpG/jfd6iLbdmyZKdInxIgQMQ5c+HMITmTV5Qxpa1dkYi14ImVMM3R8hXtWVbBH25IA+w4fuS5gXeco5ztanEsOQBv4QAmOIgil9bwcdtX4FTseW4ZD+oChb5LobRgOQLImu1EdrC6KDrIVyZ/MSOHsBKhb+TfF7Nvi9kJpYpKxrCeV1k2R3uhxEpkQh8AWVarTMRojkqmN/DtwI8Fv77lBzSwMCWhsVDoDZfnUCe26YSRS4jreNTp6aLlvyOZ7Gs95aLb4Gv7l1XIWCTmu5ICdrXRulRL266XF4VM7aF9jiZhjjaF0iA82Thn1oozwXNtGZdNjtv1ibowpbjUosghXpGKvAu7sXEjvfFyg2j8GaHhRpFrwF8wavaN7QWXTQCzr5WGD8l/oQlODCXLvmCE7XlhhKlRqLQVFwnE0CzNUSJUmbGDJfKE/0RL5/jfw2ZNhlaiSCUrN4duy5IrzmRsQJXMHiBjSH0HR57vBWF0vNYfJeSV5lNu7hGyx46Let4nagM65cq1cECo5WMnuOVrXzjC12tefskUr5lhzf7hUKmMH96fn5D/dgF1TmelLNYi46iWXkbYJebl5WWxa9GLuNjZrYayty3JrdQ2sT/P6Ctq2W5ECMZej9bt2vO8vuYtRMh3TDzG4N6LVKuN36TE81wvDCn16APENdY9gokffNykw0xtU462qfH3CVLIYqF5HXq31bG3dc9lnXy01LLioCHFjsnD6fNEr8bfSGVDGoUBjrCDvQcre+LNR2XHKvtj0dQ2NQvmYvm9wq4Z3KjPVNYnUFTXDYMo8CcrW4N9J4ITjt/w2Ayk/06u3iXXdaLTavspVosdyxcsXlTbP5zu9iBR7IQPtO01mLjQvZOPgzRxkNpzBIWFx05pLt+vvhNPbhOS2XmSwPOrHhldQhe7rh+BEeqeNcfbxL7KU/Y/qDQ4t1S5NlU/+//85W0tXVs/m5KAuk6vk2uWbho5d4pVHSUgni0/vBQyuUurZrMtCjg0Yflkzhynn3BycpZB0iB1xqh8ZPCOPEKo6f2IM2xkvG88qWMyfSn2fb3jwEOdKLJwRAcHnkvhEwPPZ2jh/oIW7g9cjOciWPpQ1v+9EfrvaoX6si6y7Y/6Ar2S3pmGUqE31aqegzq9K5eSZ8zEpjaiBEXFs/Wbxv0hQtow8EakP/c3S8/PR4OEP47rlIApcnT8H6WhxmzTEwAA http_version: null - recorded_at: Sun, 05 Apr 2020 06:45:48 GMT + recorded_at: Wed, 08 Apr 2020 17:29:28 GMT recorded_with: VCR 5.1.0 diff --git a/spec/graphql/types/person_type_spec.rb b/spec/graphql/types/person_type_spec.rb index 34a96410a..b45760fec 100644 --- a/spec/graphql/types/person_type_spec.rb +++ b/spec/graphql/types/person_type_spec.rb @@ -115,11 +115,11 @@ it "returns people information" do response = LupoSchema.execute(query).as_json - expect(response.dig("data", "people", "totalCount")).to eq(20) + expect(response.dig("data", "people", "totalCount")).to eq(241) person = response.dig("data", "people", "nodes", 0) - expect(person.fetch("id")).to eq("https://orcid.org/0000-0001-5508-9039") - expect(person.fetch("name")).to eq("Andriel Evandro Fenner") + expect(person.fetch("id")).to eq("https://orcid.org/0000-0002-6028-9323") + expect(person.fetch("name")).to eq("Stephen A. Fenner") end end end diff --git a/spec/models/person_spec.rb b/spec/models/person_spec.rb index c9f2e2142..e26314443 100644 --- a/spec/models/person_spec.rb +++ b/spec/models/person_spec.rb @@ -13,6 +13,17 @@ expect(person.family_name).to eq("Ebenberger") end + it "also found" do + id = "https://orcid.org/0000-0003-3484-6875" + people = Person.find_by_id(id) + expect(people[:data].size).to eq(1) + person = people[:data].first + expect(person.id).to eq("https://orcid.org/0000-0003-3484-6875") + expect(person.name).to eq("K. J. Garza") + expect(person.given_name).to eq("Kristian") + expect(person.family_name).to eq("Garza") + end + it "not found" do id = "https://orcid.org/xxxxx" people = Person.find_by_id(id)