alexandrite 0.1.3.pre.alpha → 0.1.4.pre.alpha

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35890f7e1386bc1f6d60ac0d68efd032288f1b4c448e5414c4a6bde38469a262
4
- data.tar.gz: 5b29ae9057b620bc9649889b86587a77b1ecaf9eee4549d339293657e44ff95c
3
+ metadata.gz: 43a1742c1305de531ba2b4c3b7c68b28763fc0c3193a1e2ab74d47c35a44b260
4
+ data.tar.gz: 9b3e16191969c872fa000ca8e9fc4c44e9c028b141da68f7d7e54cd911abf2c8
5
5
  SHA512:
6
- metadata.gz: 4655704b09257367b07cb36ffaa6ecfc6bd5fd7991f5066791b48a351dfd39f297a517497595122f6312eff2d98c4999593a999a72d96653a6ded608e92fb39f
7
- data.tar.gz: 5d12307befe3fee203ed3e0e5c8fe66cb8fa13e10e7b3586023062ad7be124c96f2fd174755181a20ce9290a334efc3720749dcdc1610cd8f9def5608095771b
6
+ metadata.gz: d2461c44fc9d3324db7bcf84bc060112094f7a17412b3dcf4c339030b08b1b2c8cd5cee52e70e35aa7cb1339a1c6a8d9300cfe5d36a85f64286acb1cb6943f14
7
+ data.tar.gz: c2bf54e156474abf8a5424b7e953f8e60e646a2ad56fd4f1e33a42fb69775444df92ab90e81bc3c05b8d486df755f0a02be9467f2a17169847b09c4bd82672d7
data/Gemfile CHANGED
@@ -6,6 +6,8 @@ source 'https://rubygems.org'
6
6
  gemspec
7
7
 
8
8
  gem 'faraday'
9
- gem 'logger'
10
9
  gem 'faraday-decode_xml'
10
+ gem 'logger'
11
+ gem 'rbs'
12
+ gem 'bump'
11
13
  gem 'rubocop'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alexandrite
4
- VERSION = '0.1.3-alpha'
4
+ VERSION = '0.1.4-alpha'
5
5
  end
data/lib/alexandrite.rb CHANGED
@@ -21,6 +21,8 @@ module Alexandrite
21
21
  @result = search_with(key, query)
22
22
  end
23
23
 
24
+ # @param [String] key
25
+ # @param [String] query
24
26
  # @return [nil]
25
27
  def self.create_from_google(key, query)
26
28
  Alexandrite::BookData.create_data(get_volume_info(key, query))
@@ -74,7 +76,7 @@ module Alexandrite
74
76
 
75
77
  # @param key [String]
76
78
  # @param data [Array<String>]
77
- # @return [Array<Alexandrite::BookData]
79
+ # @return [Array<Alexandrite::BookData>]
78
80
  def bulk_create(key, data)
79
81
  bookshelf = []
80
82
  log = Logger.new(STDOUT)
@@ -40,20 +40,37 @@ module Alexandrite
40
40
  def self.add_industry_identifiers(volume_info, data)
41
41
  return data unless volume_info[:error_message].nil?
42
42
 
43
- if data[:data_source] == 'OCLC API'
43
+ assign_isbn(data, volume_info)
44
+
45
+ data
46
+ end
47
+
48
+ private
49
+
50
+ def assign_isbn(data, volume_info)
51
+ case data[:data_source]
52
+ when 'OCLC API'
44
53
  data[:isbn10] = volume_info['ISBN_10']
45
54
  data[:isbn13] = volume_info['ISBN_13']
46
- return data
55
+ else
56
+ select_identifiers(data, volume_info)
47
57
  end
48
- begin
49
- volume_info['industryIdentifiers'].each do |identifier|
50
- data[:isbn10] = identifier['identifier'] if identifier['type'] == 'ISBN_10'
51
- data[:isbn13] = identifier['identifier'] if identifier['type'] == 'ISBN_13'
52
- end
53
- rescue NoMethodError
54
58
  data
59
+ end
60
+
61
+ def select_identifiers(data, volume_info)
62
+ return data unless volume_info['industryIdentifiers']
63
+
64
+ volume_info['industryIdentifiers'].each do |identifier|
65
+ data[:isbn10] = identifier['identifier'] if isbn10?(identifier)
66
+ data[:isbn13] = identifier['identifier'] if isbn13?(identifier)
55
67
  end
68
+
56
69
  data
57
70
  end
71
+
72
+ def isbn10?(identifier) = identifier['type'] == 'ISBN_10'
73
+
74
+ def isbn13?(identifier) = identifier['type'] == 'ISBN_13'
58
75
  end
59
76
  end
@@ -0,0 +1,10 @@
1
+ module Alexandrite
2
+ VERSION: String
3
+ API: {google: singleton(Google), oclc: singleton(OCLC)}
4
+ include BookData
5
+ include ErrorType
6
+
7
+ def search_with: (String key, String query, ?api: :google | :oclc) -> (Nokogiri::XML::Document | {error_message: String, results_size: Integer, books: untyped})
8
+ def create_book: (String key, String query) -> {title: String?, authors: String?, published_date: String?, page_count: String?, description: String?, categories: String?, language: String?, data_source: String, isbn10: String?, isbn13: String?, error_message: String?}
9
+ def bulk_create: (String key, Array[String] data) -> Array[Hash[Symbol,Object]]
10
+ end
@@ -0,0 +1,16 @@
1
+ module Alexandrite
2
+ module BookData
3
+ def self.create_data: (Hash[:books | :error_message | :results_size | String, String?] volume_info) -> {title: String?, authors: String?, published_date: String?, page_count: String?, description: String?, categories: String?, language: String?, data_source: String, isbn10: String?, isbn13: String?, error_message: String?}
4
+ def self.add_basic_values: (Hash[:books | :error_message | :results_size | String, String?] volume_info) -> {title: String?, authors: String?, published_date: String?, page_count: String?, description: String?, categories: String?, language: String?}
5
+ def self.add_origin: (Hash[:books | :error_message | :results_size | String, String?] volume_info) -> String
6
+ def self.add_industry_identifiers: (Hash[:books | :error_message | :results_size | String, String?] volume_info, {title: String?, authors: String?, published_date: String?, page_count: String?, description: String?, categories: String?, language: String?, data_source: String} data) -> {title: String?, authors: String?, published_date: String?, page_count: String?, description: String?, categories: String?, language: String?, data_source: String, isbn10: String?, isbn13: String?}
7
+
8
+ private
9
+
10
+ def assign_isbn: (Hash[Symbol,Object] data, Hash[Symbol,Object] volume_info) -> Hash[Symbol,Object]
11
+ def select_identifiers: (Hash[Symbol,Object] data, Hash[Symbol,Object] volume_info) -> Hash[Symbol,Object]
12
+ def isbn10?: (Hash[String, String] identifier)-> bool
13
+ def isbn13?: -> (Hash[String, String] identifier)-> bool
14
+
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alexandrite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3.pre.alpha
4
+ version: 0.1.4.pre.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - J. P. Pérez-Tejada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-05 00:00:00.000000000 Z
11
+ date: 2023-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,8 @@ files:
164
164
  - lib/helpers/file_handler.rb
165
165
  - lib/helpers/format.rb
166
166
  - lib/helpers/validation.rb
167
+ - sig/alexandrite/alexandrite.rbs
168
+ - sig/alexandrite/book_data.rbs
167
169
  - spec/alexandrite_spec.rb
168
170
  - spec/factories/book.rb
169
171
  - spec/helpers/format_spec.rb
@@ -189,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
191
  - !ruby/object:Gem::Version
190
192
  version: 1.3.1
191
193
  requirements: []
192
- rubygems_version: 3.4.6
194
+ rubygems_version: 3.3.7
193
195
  signing_key:
194
196
  specification_version: 4
195
197
  summary: Tools for fetching books data from Google and OCLC