pitcher 0.0.2
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 +7 -0
- data/bin/pitcher +29 -0
- data/lib/pitcher.rb +59 -0
- data/lib/pitcher/options.rb +30 -0
- data/lib/pitcher/settings.rb +20 -0
- data/lib/pitcher/version.rb +3 -0
- metadata +92 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2e3ee77f4fb83a1cbe86eae678d661dbaab44cde
|
4
|
+
data.tar.gz: cd544bc218bdc783f4cf16dd9fb7c04932a537c4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2801d727896f0b0e6764f7c24ffa1a7166da8c2e5fb564948d325564ec348c4e68f4442856af034299908bf7ba44842726e97638b6238f6848b6e4a58ee0bddf
|
7
|
+
data.tar.gz: bf91c34dd16816eb2813074b5d4df15d3e37b2105d32710ade15587ec4ed04bf634b93657f439f3142f80bbafb2665ef6f3dc1088b3179d983aebc88d413d480
|
data/bin/pitcher
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'pitcher'
|
4
|
+
require 'pitcher/settings'
|
5
|
+
|
6
|
+
pitcher = Pitcher::Pitcher.new
|
7
|
+
|
8
|
+
pitcheropts = Pitcher::PitcherOpts.new
|
9
|
+
options = pitcheropts::parse(ARGV)
|
10
|
+
|
11
|
+
|
12
|
+
if (!options[:settings] || !options[:csv])
|
13
|
+
puts 'The --settings and --csv paramters are required'
|
14
|
+
exit
|
15
|
+
end
|
16
|
+
|
17
|
+
if (options[:settings])
|
18
|
+
settings = Settings.new(options[:settings])
|
19
|
+
p settings
|
20
|
+
else
|
21
|
+
exit
|
22
|
+
end
|
23
|
+
|
24
|
+
if (options[:csv])
|
25
|
+
csv = pitcher.load_csv(options[:csv])
|
26
|
+
pitcher.create_message(csv,settings)
|
27
|
+
else
|
28
|
+
exit
|
29
|
+
end
|
data/lib/pitcher.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'pitcher/version'
|
2
|
+
require 'pitcher/options'
|
3
|
+
require 'savon'
|
4
|
+
require 'CSV'
|
5
|
+
|
6
|
+
module Pitcher
|
7
|
+
class Pitcher
|
8
|
+
attr_accessor :message
|
9
|
+
|
10
|
+
# load the csv and parse
|
11
|
+
def load_csv(file)
|
12
|
+
metadata = File.open(file, 'r')
|
13
|
+
metadata_parsed = CSV.new(metadata, :headers => true, :header_converters => :symbol)
|
14
|
+
return metadata_parsed
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_message(metadata_parsed,settings)
|
18
|
+
self.message = {}
|
19
|
+
self.message[:cdmurl] = settings.cdmurl
|
20
|
+
self.message[:username] = settings.username
|
21
|
+
self.message[:password] = settings.password
|
22
|
+
self.message[:license] = settings.license
|
23
|
+
|
24
|
+
metadata_parsed.each do |line|
|
25
|
+
self.message[:action] = line[:action]
|
26
|
+
self.message[:collection] = line[:collection]
|
27
|
+
|
28
|
+
contentdm_record = {
|
29
|
+
'field' => 'dmrecord' ,
|
30
|
+
'value' => line[:cdmnumber]
|
31
|
+
}
|
32
|
+
|
33
|
+
file_name = {
|
34
|
+
'field' => line[:field],
|
35
|
+
'value' => line[:value]
|
36
|
+
}
|
37
|
+
|
38
|
+
metadata = {'metadata' => [contentdm_record, file_name]}
|
39
|
+
|
40
|
+
metadataList = {'metadataList' => metadata}
|
41
|
+
|
42
|
+
self.message[:metadata] = metadataList
|
43
|
+
# Define the server creds and the alias for the collection you want to use
|
44
|
+
send_message(self.message)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def send_message(message)
|
49
|
+
# Initialize the SOAP client with the catcher service url
|
50
|
+
client = Savon.client(
|
51
|
+
wsdl: 'https://worldcat.org/webservices/contentdm/catcher/6.0/CatcherService.wsdl',
|
52
|
+
pretty_print_xml: true,
|
53
|
+
log: true
|
54
|
+
)
|
55
|
+
# Create the hash that will be sent as a message to the service with the creds and data above
|
56
|
+
client.call(:process_conten_tdm, message: message)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
module Pitcher
|
5
|
+
class PitcherOpts
|
6
|
+
|
7
|
+
def parse(args)
|
8
|
+
options = OpenStruct.new
|
9
|
+
|
10
|
+
OptionParser.new do |opts|
|
11
|
+
opts.banner = 'Usage: pitcher -csv /path/to/csv.file'
|
12
|
+
|
13
|
+
opts.on("-csv", "--csv", 'Path to CSV file') do |csv|
|
14
|
+
options.csv = csv
|
15
|
+
end
|
16
|
+
|
17
|
+
opts.on("-settings", "--settings", "Path to the settings file") do |settings|
|
18
|
+
options.settings = settings
|
19
|
+
end
|
20
|
+
|
21
|
+
opts.on("-h", "--help", "Pitcher Help") do
|
22
|
+
puts opts
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
26
|
+
end.parse!
|
27
|
+
options
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
class Settings
|
4
|
+
attr_accessor :cdmurl
|
5
|
+
attr_accessor :username
|
6
|
+
attr_accessor :password
|
7
|
+
attr_accessor :license
|
8
|
+
attr_accessor :settings
|
9
|
+
|
10
|
+
def initialize(file)
|
11
|
+
settings = YAML.load_file(file)
|
12
|
+
@cdmurl = settings['cdmurl']
|
13
|
+
@username = settings['username']
|
14
|
+
@password = settings['password']
|
15
|
+
@license = settings['license']
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
end
|
20
|
+
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pitcher
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jamie Little
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: savon
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- jamielittle@outlook.com
|
58
|
+
executables:
|
59
|
+
- pitcher
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- lib/pitcher/options.rb
|
64
|
+
- lib/pitcher/settings.rb
|
65
|
+
- lib/pitcher/version.rb
|
66
|
+
- lib/pitcher.rb
|
67
|
+
- bin/pitcher
|
68
|
+
homepage: ''
|
69
|
+
licenses:
|
70
|
+
- BSD
|
71
|
+
metadata: {}
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.0.2
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: CLI utility to work with CONTENTdm's Catcher API
|
92
|
+
test_files: []
|