stash-sword 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +4 -0
- data/lib/stash/sword/client.rb +1 -0
- data/lib/stash/sword/module_info.rb +1 -1
- data/spec/unit/stash/sword2/client_spec.rb +30 -5
- data/stash-sword.gemspec +1 -1
- metadata +10 -6
- data/notes/Dash_Submission_To_Merritt.txt +0 -40
- data/notes/service-document.xml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b9630eb6e13c298e5510adc24a284f80cd2782d
|
4
|
+
data.tar.gz: c84b4010037183af57468e22b0b33032f989cedd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ab2af3fea1f8d220075abe287baeb531265a4483814a7aae7766721c649d5a62099368d943a550e6a0ff6bebc04a36e250d9390df7952bb1f6089624de67e6d
|
7
|
+
data.tar.gz: ee6a6857b1c898f73312b60086a6cd3cb0af2ca9a177dbcdeca489ab60af8f9cd1c0bd04a9b2f9b61d17ffb77eee24abe56768b062ea680010b875f9b9d3141b
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 0.1.3 (15 August 2016)
|
2
|
+
|
3
|
+
- Use 2.0.0 release version of `rest-client` to fix issues with cookie handling in redirection
|
4
|
+
|
1
5
|
## 0.1.2 (11 July 2016)
|
2
6
|
|
3
7
|
- Use `Content-disposition: attachment` (per [SWORD spec](http://swordapp.github.io/SWORDv2-Profile/SWORDProfile.html))
|
data/lib/stash/sword/client.rb
CHANGED
@@ -55,6 +55,7 @@ module Stash
|
|
55
55
|
#
|
56
56
|
# @param edit_iri [URI, String] the Atom Edit-IRI
|
57
57
|
# @param zipfile [String] the zipfile path
|
58
|
+
# @return [Integer] the response code (if the request succeeds)
|
58
59
|
def update(edit_iri:, zipfile:)
|
59
60
|
log.debug("Stash::Sword::Client.update(edit_iri: #{edit_iri}, zipfile: #{zipfile})")
|
60
61
|
uri = to_uri(edit_iri).to_s
|
@@ -53,8 +53,19 @@ module Stash
|
|
53
53
|
it 'returns the entry'
|
54
54
|
it "gets the entry from the Edit-IRI in the Location: header if it isn't returned in the body"
|
55
55
|
it 'forwards a success response'
|
56
|
-
|
57
|
-
it 'forwards a
|
56
|
+
|
57
|
+
it 'forwards a 4xx error' do
|
58
|
+
authorized_uri = collection_uri.sub('http://', "http://#{username}:#{password}@")
|
59
|
+
stub_request(:post, authorized_uri).to_return(status: [403, 'Forbidden'])
|
60
|
+
expect { client.create(zipfile: zipfile, doi: doi) }.to raise_error(RestClient::Forbidden)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'forwards a 5xx error' do
|
64
|
+
authorized_uri = collection_uri.sub('http://', "http://#{username}:#{password}@")
|
65
|
+
stub_request(:post, authorized_uri).to_return(status: [500, 'Internal Server Error'])
|
66
|
+
expect { client.create(zipfile: zipfile, doi: doi) }.to raise_error(RestClient::InternalServerError)
|
67
|
+
end
|
68
|
+
|
58
69
|
it 'forwards an internal exception'
|
59
70
|
end
|
60
71
|
|
@@ -65,7 +76,8 @@ module Stash
|
|
65
76
|
|
66
77
|
stub_request(:put, authorized_uri)
|
67
78
|
|
68
|
-
client.update(edit_iri: edit_iri, zipfile: zipfile)
|
79
|
+
code = client.update(edit_iri: edit_iri, zipfile: zipfile)
|
80
|
+
expect(code).to eq(200)
|
69
81
|
|
70
82
|
md5 = Digest::MD5.file(zipfile).to_s
|
71
83
|
|
@@ -105,8 +117,21 @@ module Stash
|
|
105
117
|
|
106
118
|
it 'does something clever and asynchronous'
|
107
119
|
it 'forwards a success response'
|
108
|
-
|
109
|
-
it 'forwards a
|
120
|
+
|
121
|
+
it 'forwards a 4xx error' do
|
122
|
+
edit_iri = "http://merritt.cdlib.org/sword/v2/object/#{doi}"
|
123
|
+
authorized_uri = edit_iri.sub('http://', "http://#{username}:#{password}@")
|
124
|
+
stub_request(:put, authorized_uri).to_return(status: [403, 'Forbidden'])
|
125
|
+
expect { client.update(edit_iri: edit_iri, zipfile: zipfile) }.to raise_error(RestClient::Forbidden)
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'forwards a 5xx error' do
|
129
|
+
edit_iri = "http://merritt.cdlib.org/sword/v2/object/#{doi}"
|
130
|
+
authorized_uri = edit_iri.sub('http://', "http://#{username}:#{password}@")
|
131
|
+
stub_request(:put, authorized_uri).to_return(status: [500, 'Internal Server Error'])
|
132
|
+
expect { client.update(edit_iri: edit_iri, zipfile: zipfile) }.to raise_error(RestClient::InternalServerError)
|
133
|
+
end
|
134
|
+
|
110
135
|
it 'forwards an internal exception'
|
111
136
|
end
|
112
137
|
|
data/stash-sword.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
25
25
|
spec.require_paths = ['lib']
|
26
26
|
|
27
|
-
spec.add_dependency 'rest-client', '2.0.0.
|
27
|
+
spec.add_dependency 'rest-client', '~> 2.0', '2.0.0'
|
28
28
|
spec.add_dependency 'typesafe_enum', '~> 0.1', '>= 0.1.7'
|
29
29
|
spec.add_dependency 'xml-mapping_extensions', '~> 0.4', '>= 0.4.1'
|
30
30
|
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stash-sword
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Moles
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
17
20
|
- - '='
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.0.0
|
22
|
+
version: 2.0.0
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.0'
|
24
30
|
- - '='
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.0.0
|
32
|
+
version: 2.0.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: typesafe_enum
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -224,8 +230,6 @@ files:
|
|
224
230
|
- lib/stash/sword/module_info.rb
|
225
231
|
- lib/stash/sword/namespace.rb
|
226
232
|
- lib/stash/sword/sequence_io.rb
|
227
|
-
- notes/Dash_Submission_To_Merritt.txt
|
228
|
-
- notes/service-document.xml
|
229
233
|
- spec/.rubocop.yml
|
230
234
|
- spec/data/deposit_receipt_merritt.xml
|
231
235
|
- spec/data/deposit_receipt_spec.xml
|
@@ -1,40 +0,0 @@
|
|
1
|
-
Status of submission is tracked - merritt_response {PROCESSING, “User not authorized for Merritt submission”,
|
2
|
-
|
3
|
-
How is dublincore called?
|
4
|
-
|
5
|
-
Review & Submit button —> record.review()
|
6
|
-
creates datacite.xml file and places it in the uploads/<local_id>/ directory
|
7
|
-
|
8
|
-
Submit button —> record.send_archive_to_merritt
|
9
|
-
|
10
|
-
Set up the user_email request headers
|
11
|
-
Create a new thread
|
12
|
-
Record.Generate Merritt Zip()
|
13
|
-
Record.Send Archive to Merritt
|
14
|
-
Create a submission Log
|
15
|
-
|
16
|
-
|
17
|
-
If submission successful, remove files from local storage and add logging information
|
18
|
-
Record.Purge_Files()
|
19
|
-
|
20
|
-
Generate_Merritt_Zip()
|
21
|
-
set file path to uploads_dir - this is a linked directory shared/uploads so it will stay persistent across releases
|
22
|
-
local_id is used to name the uploads directory for a dataset.
|
23
|
-
calls self.review
|
24
|
-
calls self.dublincore
|
25
|
-
calls self.dataone
|
26
|
-
creates the zip file
|
27
|
-
purges all temp files, etc
|
28
|
-
|
29
|
-
Record.Send_Archive_to_merritt
|
30
|
-
gets info to send in curl command from MERRITT_CONFIG and user and camps
|
31
|
-
sends curl command - no notification sent if no email
|
32
|
-
No DOI/EZID is not created. Merritt does this.
|
33
|
-
returns sys_output
|
34
|
-
|
35
|
-
|
36
|
-
SWORD - Slug identifier is the local_id
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
if @user_email.nil?
|
41
|
sys_output = "curl --insecure --verbose -u #{merritt_username}:#{merritt_password} -F \"file=@./#{DATASHARE_CONFIG['uploads_dir']}/#{self.local_id}/#{self.local_id}.zip\" -F \"type=container\" -F \"submitter=Dash/#{external_id}\" -F \"responseForm=xml\" -F \"profile=#{merritt_profile}\" -F \"localIdentifier=#{self.local_id}\" #{merritt_endpoint} 2>&1"
|
42
1
|
else
|
43
2
|
sys_output = "curl --insecure --verbose -u #{merritt_username}:#{merritt_password} -F \"file=@./#{DATASHARE_CONFIG['uploads_dir']}/#{self.local_id}/#{self.local_id}.zip\" -F \"notification=#{@user_email}\" -F \"type=container\" -F \"submitter=Dash/#{external_id}\" -F \"responseForm=xml\" -F \"profile=#{merritt_profile}\" -F \"localIdentifier=#{self.local_id}\" #{merritt_endpoint} 2>&1"
|
44
3
|
end
|
data/notes/service-document.xml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
|
2
|
-
<workspace>
|
3
|
-
<atom:title type="text">Merritt</atom:title>
|
4
|
-
<collection href="http://merritt.cdlib.org/sword/v2/dash_ucb">
|
5
|
-
<atom:title type="text">UCB Dash</atom:title>
|
6
|
-
<accept>*/*</accept>
|
7
|
-
<accept alternate="multipart-related">*/*</accept>
|
8
|
-
<mediation xmlns="http://purl.org/net/sword/terms/">true</mediation>
|
9
|
-
<acceptPackaging xmlns="http://purl.org/net/sword/terms/">http://purl.org/net/sword/package/SimpleZip</acceptPackaging>
|
10
|
-
</collection>
|
11
|
-
</workspace>
|
12
|
-
<generator xmlns="http://www.w3.org/2005/Atom" uri="http://www.swordapp.org/" version="2.0" />
|
13
|
-
<version xmlns="http://purl.org/net/sword/terms/">2.0</version>
|
14
|
-
<maxUploadSize xmlns="http://purl.org/net/sword/terms/">10000000</maxUploadSize>
|
15
|
-
</service>
|