primo_central_counter 0.2.0 → 0.3.0

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
  SHA1:
3
- metadata.gz: e47cedcc636353d5b8623c3693ace12af43eea52
4
- data.tar.gz: 34f1cd2abf6c872a71cd69c23a79b6411b7ba312
3
+ metadata.gz: eedacf0ca23e92ecd8f1254d0193d8a21059c302
4
+ data.tar.gz: f63fadf9400ec532277d29e0e93212f2aa9c8e74
5
5
  SHA512:
6
- metadata.gz: cfea6a88d35200f722856f356e709fa2e70912f4a39c07a71b5b8cf3414d238c27e24c044b14a3a67451860bcfe1f9b1b19acff9cf973e967de84c7ba425ded8
7
- data.tar.gz: 7c0a88a1b36ada00437370da2928ae0790ff673db98af980d4125faf1f5a780818e8147f7ac9291a8a0a163232c7fefb7ce09dfe74dd9177730c57cf7f660dcc
6
+ metadata.gz: a56477fbd5f7c599564334676eb677e6d039d03f2594559766d9b7e819c04924e98c78ffd5ee5a139ea6c573e41f39db7a09ddd479d8ad1d8b718c099ddfc240
7
+ data.tar.gz: 739846bdcdebab65e7432b26bbfda7582ccf62458e183254bb9f6f22be79acf73bd2a5e2f6bb49355d2f3f3a2e7b6c104a20156d556b8966e57e8c216aa93e31
data/README.md CHANGED
@@ -20,16 +20,16 @@ Usage: primo_central_counter [options]
20
20
  -h, --help Display usage informations
21
21
  ```
22
22
 
23
- The output is (Excel) CSV on STDOUT. If you enable logging, this will be outputted on STDERR.
23
+ The output is total record cound on STDOUT. If you enable logging, this will be outputted on STDERR.
24
24
 
25
25
  ### Examples
26
26
 
27
27
  ```
28
- primo_central_counter -u http://primo.kobv.de -i PAD > ./output.csv
28
+ primo_central_counter -u http://primo.kobv.de -i PAD
29
29
  ```
30
30
 
31
31
  ```
32
- primo_central_counter -u http://primo.kobv.de -i PAD -l info 1> ./output.csv 2> ./messages.txt
32
+ primo_central_counter -u http://primo.kobv.de -i PAD -l info 1> ./sum.txt 2> ./messages.txt
33
33
  ```
34
34
 
35
35
  ## Development
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
3
  require "primo_central_counter"
5
4
 
6
5
  PrimoCentralCounter::Cli.new(ARGV)
@@ -1,5 +1,6 @@
1
1
  require "logger"
2
2
  require_relative "../primo_central_counter"
3
+ require_relative "./connection_checker"
3
4
  require_relative "./counter"
4
5
  require_relative "./option_parser"
5
6
  require_relative "./soap_discoverer"
@@ -28,19 +29,30 @@ class PrimoCentralCounter::Cli
28
29
  end
29
30
 
30
31
  def call
31
- searcher_url = PrimoCentralCounter::SoapDiscoverer.call(@options[:base_url], logger: @logger)
32
- queries = [("a".."z").to_a, (0..9).to_a.map(&:to_s)].flatten(1).map { |_char| "#{_char}*" }
33
- result = PrimoCentralCounter::Counter.call(searcher_url, queries, @options.merge(logger: @logger))
34
- sum = result.inject(0) do |_sum, (_query, _count)|
35
- _sum + _count
36
- end
32
+ if PrimoCentralCounter::ConnectionChecker.call(@options[:base_url], logger: @logger)
33
+ searcher_url = PrimoCentralCounter::SoapDiscoverer.call(@options[:base_url], logger: @logger)
34
+ queries = [("a".."z").to_a, (0..9).to_a.map(&:to_s)].flatten(1).map { |_char| "#{_char}*" }
35
+ result = PrimoCentralCounter::Counter.call(searcher_url, queries, @options.merge(logger: @logger))
36
+ sum = result.inject(0) do |_sum, (_query, _count)|
37
+ _sum + _count
38
+ end
37
39
 
38
- puts sum
40
+ puts sum
41
+ else
42
+ log_error(@logger, "Cannot connect to Primo Central! Please check the given url and if you are allowed to access the API.")
43
+ log_error(@logger, "The following primo backoffice settings control the API access privileges:")
44
+ log_error(@logger, "- Advanced Configuration > All Mapping Tables > WS and XS IP")
45
+ log_error(@logger, "- Deploy All > All Client IP Ranges (WS and XS IP mapping table)")
46
+ end
39
47
  end
40
48
 
41
49
  #
42
50
  private
43
51
  #
52
+ def log_error(logger, message)
53
+ logger.error(message) if logger
54
+ end
55
+
44
56
  def option_parser(result = {})
45
57
  PrimoCentralCounter::OptionParser.new(nil, 38) do |_option_parser|
46
58
  _option_parser.banner = "Usage: primo_central_counter [options]\n\n"
@@ -0,0 +1,27 @@
1
+ require "net/http"
2
+ require "uri"
3
+ require_relative "../primo_central_counter"
4
+
5
+ class PrimoCentralCounter::ConnectionChecker
6
+ def self.call(primo_base_url, options = {})
7
+ logger = options[:logger]
8
+
9
+ log_info(logger, "Checking connection to Primo Central")
10
+ url = URI.parse("#{primo_base_url}/PrimoWebServices/services/searcher")
11
+ response = Net::HTTP.get_response(url)
12
+
13
+ if response.body[/IP address rejected/]
14
+ false
15
+ else
16
+ true
17
+ end
18
+ rescue Errno::ECONNREFUSED
19
+ false
20
+ end
21
+
22
+ private
23
+
24
+ def self.log_info(logger, message)
25
+ logger.info(message) if logger
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module PrimoCentralCounter
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primo_central_counter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Sievers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-20 00:00:00.000000000 Z
11
+ date: 2016-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -57,6 +57,7 @@ files:
57
57
  - exe/primo_central_counter
58
58
  - lib/primo_central_counter.rb
59
59
  - lib/primo_central_counter/cli.rb
60
+ - lib/primo_central_counter/connection_checker.rb
60
61
  - lib/primo_central_counter/counter.rb
61
62
  - lib/primo_central_counter/option_parser.rb
62
63
  - lib/primo_central_counter/soap_discoverer.rb