zenodo 0.0.7 → 0.0.8

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: e6153bc89b1c47f039c53c1ba75a2534196ad77f
4
- data.tar.gz: 636baf182e8874f1f7dc286968388af74503c4d8
3
+ metadata.gz: 89fa4a10e36778e6d9f6c874a4268126f0bd0499
4
+ data.tar.gz: b59b1061ab1faebb8c8697a093f1989d4f48d175
5
5
  SHA512:
6
- metadata.gz: e951ea20795e76dd03c3d6733bab2099c3e08111894d689d2848548e400ca4add3c9198e93a326e60f2e1536211392471db306c98c866e36f706f732f5b137e9
7
- data.tar.gz: cb71634a7505cfb3e1dbf3fdca9f9292838934b7785e23e0198b294b919e3ca2a1810d5104fc04eec20c7e7a7483b62a13316988b5e57e9ef62f633fc9def4e0
6
+ metadata.gz: 9e1819983359266f8d722eaede929bf42b8fc2db999bf23a6d53395475ad52daa683e0463babb6fd21d110d9f61b56ff29a95810be14c15e8a27dc8cb020b989
7
+ data.tar.gz: 9599cc6a849cd1003953a957582c45fdc60a24f0849c789191668ff13d55515da23260f13262e5db1d05ba4c545d67b2e4fc59077d822e983f00e83a60fac2a2
@@ -10,13 +10,16 @@ module Zenodo
10
10
  class << self
11
11
  # @return [String]
12
12
  attr_accessor :api_key
13
+ attr_accessor :url
13
14
  attr_accessor :logger
14
15
  end
15
16
 
17
+ self.url = 'https://zenodo.org/api/'
18
+
16
19
  module_function
17
20
 
18
21
  # @return [Zenodo::Client]
19
22
  def client
20
- @client ||= Client.new(Zenodo.api_key)
23
+ @client ||= Client.new(Zenodo.api_key, Zenodo.url)
21
24
  end
22
25
  end
@@ -12,13 +12,13 @@ module Zenodo
12
12
  include Errors
13
13
  include Utils
14
14
 
15
- URL = 'https://zenodo.org/api/'
16
15
  REQUESTS = [:get, :post, :put, :delete]
17
16
  HEADERS = {'Accept' => 'application/json', 'Content-Type' => 'application/json'}
18
17
 
19
18
  # @param [String] api_key
20
- def initialize(api_key = Zenodo.api_key)
19
+ def initialize(api_key = Zenodo.api_key, url = Zenodo.url)
21
20
  @api_key = api_key
21
+ @url = url
22
22
 
23
23
  # Setup HTTP request connection to Zenodo.
24
24
  @connection ||= Faraday.new do |builder|
@@ -40,7 +40,7 @@ module Zenodo
40
40
  def request(method, path, query = {}, headers = HEADERS)
41
41
  raise ArgumentError, "Unsupported method #{method.inspect}. Only :get, :post, :put, :delete are allowed" unless REQUESTS.include?(method)
42
42
 
43
- token_url = UrlHelper.build_url(path: "#{URL}#{path}", params: {access_token: @api_key})
43
+ token_url = UrlHelper.build_url(path: "#{@url}#{path}", params: {access_token: @api_key})
44
44
  payload = nil
45
45
  if query.present?
46
46
  accept = headers.present? ? headers['Accept'] : nil
@@ -5,32 +5,35 @@ module Zenodo
5
5
  # Publish POST deposit/depositions/:id/actions/publish
6
6
  # Publishes a deposition.
7
7
  # Note publishing will fail if no files are associated with the deposition.
8
- # @param [String, Fixnum] id A deposition's ID.
9
- # @raise [ArgumentError] If the method arguments are blank.
8
+ # @param [Hash] options The options to publish a deposition with.
9
+ # @option options [String, Fixnum] :id A deposition's ID.
10
+ # @raise [ArgumentError] If the given :id is blank.
10
11
  # @return [Zenodo::Resources::deposition, nil].
11
- def publish_deposition(id:)
12
- raise ArgumentError, "ID cannot be blank" if id.blank?
12
+ def publish_deposition(options={})
13
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
13
14
  Resources::Deposition.parse(request(:post, "deposit/depositions/#{id}/actions/publish", nil, nil))
14
15
  end
15
16
 
16
17
  # Edit POST deposit/depositions/:id/actions/edit
17
18
  # Unlock already submitted deposition for editing.
18
- # @param [String, Fixnum] id A deposition's ID.
19
- # @raise [ArgumentError] If the method arguments are blank.
19
+ # @param [Hash] options The options to edit a deposition with.
20
+ # @option options [String, Fixnum] :id A deposition's ID.
21
+ # @raise [ArgumentError] If the given :id is blank.
20
22
  # @return [Zenodo::Resources::deposition, nil].
21
- def edit_deposition(id:)
22
- raise ArgumentError, "ID cannot be blank" if id.blank?
23
+ def edit_deposition(options={})
24
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
23
25
  Resources::Deposition.parse(request(:post, "deposit/depositions/#{id}/actions/edit", nil, nil))
24
26
  end
25
27
 
26
28
  # Discard POST deposit/depositions/:id/actions/discard
27
29
  # Discard changes in the current editing session.
28
- # @param [String, Fixnum] id A deposition's ID.
29
- # @raise [ArgumentError] If the method arguments are blank.
30
+ # @param [Hash] options The options to discard a deposition with.
31
+ # @option options [String, Fixnum] :id A deposition's ID.
32
+ # @raise [ArgumentError] If the given :id is blank.
30
33
  # @return [Zenodo::Resources::deposition, nil].
31
- def discard_deposition(id:)
32
- raise ArgumentError, "ID cannot be blank" if id.blank?
34
+ def discard_deposition(options={})
35
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
33
36
  Resources::Deposition.parse(request(:post, "deposit/depositions/#{id}/actions/discard", nil, nil))
34
37
  end
35
38
  end
36
- end
39
+ end
@@ -4,26 +4,30 @@ module Zenodo
4
4
  module DSL::DepositionFiles
5
5
  # List GET deposit/depositions/:id/files
6
6
  # List all deposition files for a given deposition.
7
- # @param [String, Fixnum] id A deposition's ID.
8
- # @raise [ArgumentError] If the method arguments are blank.
7
+ # @param [Hash] options The options to get a deposition with.
8
+ # @option options [String, Fixnum] :id A deposition's ID.
9
+ # @raise [ArgumentError] If the given :id is blank.
9
10
  # @return [Array, nil].
10
- def get_deposition_files(id:)
11
- raise ArgumentError, "ID cannot be blank" if id.blank?
11
+ def get_deposition_files(options={})
12
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
12
13
  Resources::DepositionFile.parse(request(:get, "deposit/depositions/#{id}/files", nil))
13
14
  end
14
15
 
15
16
  # Create (upload) POST deposit/depositions/:id/files
16
17
  # Upload a new file.
17
18
  # Note the upload will fail if the filename already exists.
18
- # @param [String, Fixnum] id A deposition's ID.
19
- # @param [String] file_or_io The file or already open IO to upload.
20
- # @param [String] filename The name of the file (optional except when an IO).
21
- # @param [String] content_type The content type of the file (optional except when an IO).
22
- # @raise [ArgumentError] If the required method arguments are blank.
19
+ # @param [Hash] options The options to create a deposition file with.
20
+ # @option options [String, Fixnum] :id A deposition's ID.
21
+ # @option options [String, IO] file_or_io The file or already open IO to upload.
22
+ # @option options [String] filename The name of the file (optional except when an IO).
23
+ # @option options [String] content_type The content type of the file (optional except when an IO).
24
+ # @raise [ArgumentError] If the :id or :file_or_io arguments are blank.
23
25
  # @return [Zenodo::Resources::DepositionFile].
24
- def create_deposition_file(id:, file_or_io:, filename: nil, content_type: nil)
25
- raise ArgumentError, "ID cannot be blank" if id.blank?
26
- raise ArgumentError, "File or IO cannot be blank" if file_or_io.blank?
26
+ def create_deposition_file(options={})
27
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
28
+ file_or_io = options[:file_or_io] || raise(ArgumentError, "Must supply :file_or_io")
29
+ filename = options[:filename]
30
+ content_type = options[:content_type]
27
31
 
28
32
  content_type = MIME::Types.type_for(file_or_io).first.content_type if content_type.blank?
29
33
  io = Faraday::UploadIO.new(file_or_io, content_type, filename)
@@ -36,54 +40,58 @@ module Zenodo
36
40
 
37
41
  # Sort PUT deposit/depositions/:id/files
38
42
  # Sort the files for a deposition. By default, the first file is shown in the file preview.
39
- # @param [String, Fixnum] id A deposition's ID.
40
- # @param [Array] deposition_files The deposition files to sort.
41
- # @raise [ArgumentError] If the method arguments are blank.
43
+ # @param [Hash] options The options to sort a deposition's files with.
44
+ # @option options [String, Fixnum] :id A deposition's ID.
45
+ # @option options [Array] :deposition_files The deposition files to sort.
46
+ # @raise [ArgumentError] If :id or :deposition_files arguments are blank.
42
47
  # @return [Array, nil].
43
- def sort_deposition_files(id:, deposition_files:)
44
- raise ArgumentError, "ID cannot be blank" if id.blank?
45
- raise ArgumentError, "Deposition files cannot be blank" if deposition_files.blank?
48
+ def sort_deposition_files(options={})
49
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
50
+ deposition_files = options[:deposition_files] || raise(ArgumentError, "Must supply :deposition_files")
46
51
  Resources::DepositionFile.parse(request(:put, "deposit/depositions/#{id}/files", deposition_files))
47
52
  end
48
53
 
49
54
  # Retrieve GET deposit/depositions/:id/files/:file_id
50
55
  # Retrieve a single deposition file.
51
- # @param [String, Fixnum] id A deposition's ID.
52
- # @param [String] file_id A deposition file ID.
53
- # @raise [ArgumentError] If the method arguments are blank.
56
+ # @param [Hash] options The options to get a deposition's file with.
57
+ # @option options [String, Fixnum] :id A deposition's ID.
58
+ # @option options [String] :file_id A deposition file ID.
59
+ # @raise [ArgumentError] If :id or :file_id arguments are blank.
54
60
  # @return [Zenodo::Resources::DepositionFile].
55
- def get_deposition_file(id:, file_id:)
56
- raise ArgumentError, "ID cannot be blank" if id.blank?
57
- raise ArgumentError, "File ID cannot be blank" if file_id.blank?
61
+ def get_deposition_file(options={})
62
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
63
+ file_id = options[:file_id] || raise(ArgumentError, "Must supply :file_id")
58
64
  Resources::DepositionFile.parse(request(:get, "deposit/depositions/#{id}/files/#{file_id}", nil))
59
65
  end
60
66
 
61
67
  # Update PUT deposit/depositions/:id/files/:file_id
62
68
  # Update a deposition file resource. Currently the only use is renaming an already uploaded file.
63
69
  # If you one to replace the actual file, please delete the file and upload a new file.
64
- # @param [String, Fixnum] id A deposition's ID.
65
- # @param [String] file_id A deposition file ID.
66
- # @param [Hash] deposition_file The deposition file to update.
67
- # @raise [ArgumentError] If the method arguments are blank.
70
+ # @param [Hash] options The options to update a deposition's file with.
71
+ # @options option [String, Fixnum] :id A deposition's ID.
72
+ # @options option [String] :file_id A deposition file ID.
73
+ # @options option [Hash] :deposition_file The deposition file to update.
74
+ # @raise [ArgumentError] If the :id, :file_id, or :deposition_file arguments are blank.
68
75
  # @return [Zenodo::Resources::DepositionFile].
69
- def update_deposition_file(id:, file_id:, deposition_file:)
70
- raise ArgumentError, "ID cannot be blank" if id.blank?
71
- raise ArgumentError, "File ID cannot be blank" if file_id.blank?
72
- raise ArgumentError, "Deposition file cannot be blank" if deposition_file.blank?
76
+ def update_deposition_file(options={})
77
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
78
+ file_id = options[:file_id] || raise(ArgumentError, "Must supply :file_id")
79
+ deposition_file = options[:deposition_file] || raise(ArgumentError, "Must supply :deposition_file")
73
80
  Resources::DepositionFile.parse(request(:put, "deposit/depositions/#{id}/files/#{file_id}", deposition_file))
74
81
  end
75
82
 
76
83
  # Delete DELETE deposit/depositions/:id/files/:file_id
77
84
  # Delete an existing deposition file resource.
78
85
  # Note, only deposition files for unpublished depositions may be deleted.
79
- # @param [String, Fixnum] id A deposition's ID.
80
- # @param [String] file_id A deposition file ID.
81
- # @raise [ArgumentError] If the method arguments are blank.
86
+ # @param [Hash] options The options to delete a deposition's file with.
87
+ # @options option [String, Fixnum] :id A deposition's ID.
88
+ # @options option [String] :file_id A deposition file ID.
89
+ # @raise [ArgumentError] If the :id or :file_id arguments are blank.
82
90
  # @return [Faraday::Response].
83
- def delete_deposition_file(id:, file_id:)
84
- raise ArgumentError, "ID cannot be blank" if id.blank?
85
- raise ArgumentError, "File ID cannot be blank" if file_id.blank?
91
+ def delete_deposition_file(options={})
92
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
93
+ file_id = options[:file_id] || raise(ArgumentError, "Must supply :file_id")
86
94
  request(:delete, "deposit/depositions/#{id}/files/#{file_id}", nil, nil)
87
95
  end
88
96
  end
89
- end
97
+ end
@@ -11,43 +11,47 @@ module Zenodo
11
11
 
12
12
  # GET /Deposit/Deposition/{id}
13
13
  # Get a deposition.
14
- # @param [String, Fixnum] id A deposition's ID.
15
- # @raise [ArgumentError] If the method arguments are blank.
14
+ # @param [Hash] options The options to get a deposition with.
15
+ # @option options [String, Fixnum] :id A deposition's ID.
16
+ # @raise [ArgumentError] If the :id is blank
16
17
  # @return [Zenodo::Resources::deposition, nil].
17
- def get_deposition(id:)
18
- raise ArgumentError, "ID cannot be blank" if id.blank?
18
+ def get_deposition(options={})
19
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
19
20
  Resources::Deposition.parse(request(:get, "deposit/depositions/#{id}"))
20
21
  end
21
22
 
22
23
  # POST /Deposit/Depositions
23
24
  # Creates a deposition.
24
- # @param [Hash] deposition The deposition to create.
25
- # @raise [ArgumentError] If the method arguments are blank.
25
+ # @param [Hash] options The options to create a deposition with.
26
+ # @option options [Hash] :deposition The deposition to create.
27
+ # @raise [ArgumentError] If the :deposition arguments are blank.
26
28
  # @return [Zenodo::Resources::deposition, nil].
27
- def create_deposition(deposition:)
28
- raise ArgumentError, "Deposition cannot be blank" if deposition.blank?
29
+ def create_deposition(options={})
30
+ deposition = options[:deposition] || raise(ArgumentError, "Must supply :deposition")
29
31
  Resources::Deposition.parse(request(:post, "deposit/depositions/", deposition))
30
32
  end
31
33
 
32
34
  # PUT /Deposit/Depositions
33
35
  # Updates a deposition.
34
- # @param [String, Fixnum] id A deposition's ID.
35
- # @param [Hash] deposition The deposition to update.
36
- # @raise [ArgumentError] If the method arguments are blank.
36
+ # @param [Hash] options The options to update a deposition with.
37
+ # @option options [String, Fixnum] :id A deposition's ID.
38
+ # @option options [Hash] :deposition The deposition to update.
39
+ # @raise [ArgumentError] If the :id or :deposition arguments are blank.
37
40
  # @return [Zenodo::Resources::deposition, nil].
38
- def update_deposition(id:, deposition:)
39
- raise ArgumentError, "ID cannot be blank" if id.blank?
40
- raise ArgumentError, "Deposition cannot be blank" if deposition.blank?
41
+ def update_deposition(options={})
42
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
43
+ deposition = options[:deposition] || raise(ArgumentError, "Must supply :deposition")
41
44
  Resources::Deposition.parse(request(:put, "deposit/depositions/#{id}", deposition))
42
45
  end
43
46
 
44
47
  # DELETE /Deposit/Depositions/{id}
45
48
  # Deletes a deposition.
46
- # @param [String, Fixnum] id A deposition's ID.
47
- # @raise [ArgumentError] If the method arguments are blank.
49
+ # @param [Hash] options The options to delete a deposition with.
50
+ # @option optoins [String, Fixnum] :id A deposition's ID.
51
+ # @raise [ArgumentError] If the :id argument is blank.
48
52
  # @return [Faraday::Response].
49
- def delete_deposition(id:)
50
- raise ArgumentError, "ID cannot be blank" if id.blank?
53
+ def delete_deposition(options={})
54
+ id = options[:id] || raise(ArgumentError, "Must supply :id")
51
55
  request(:delete, "deposit/depositions/#{id}")
52
56
  end
53
57
  end
@@ -1,7 +1,12 @@
1
1
  module Zenodo
2
2
  module Errors
3
3
  class ClientError < StandardError
4
- def initialize(method:, url:, headers:, response:)
4
+ def initialize(options={})
5
+ method = options[:method] || raise(ArgumentError, "Must supply :method")
6
+ url = options[:url] || raise(ArgumentError, "Must supply :url")
7
+ response = options[:response] || raise(ArgumentError, "Must supply :response")
8
+ headers = options[:headers]
9
+
5
10
  super <<-STR.gsub(/^\s*/, '')
6
11
  HTTP #{method} #{url}
7
12
  Request Headers: #{headers}
@@ -2,10 +2,14 @@ module Zenodo
2
2
  module Utils
3
3
  class UrlHelper
4
4
  # Build a URL with a querystring containing optional params if supplied.
5
- # @param [UrlHelper] path The name of the resource path as per the URL e.g. contacts.
6
- # @param [Hash] params A hash of params we're turning into a querystring.
5
+ # @param [Hash] options The options to build a URL with.
6
+ # @options option [String] :path The name of the resource path as per the URL e.g. contacts.
7
+ # @options option [Hash] :params A hash of params we're turning into a querystring.
8
+ # @raise [ArgumentError] If the :path or :params arguments are blank.
7
9
  # @return [UrlHelper] The URL of the resource with required params.
8
- def self.build_url(path:, params:)
10
+ def self.build_url(options={})
11
+ path = options[:path] || raise(ArgumentError, "Must supply :path")
12
+ params = options[:params] || raise(ArgumentError, "Must supply :params")
9
13
  params.delete_if {|k,v| v.blank?}
10
14
  params = params.to_query
11
15
  query = path
@@ -14,4 +18,4 @@ module Zenodo
14
18
  end
15
19
  end
16
20
  end
17
- end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Zenodo
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -6,8 +6,8 @@ require 'zenodo/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "zenodo"
8
8
  spec.version = Zenodo::VERSION
9
- spec.authors = ["David Iorns"]
10
- spec.email = ["david.iorns@gmail.com"]
9
+ spec.authors = ["David Iorns", "Zach Dennis"]
10
+ spec.email = ["david.iorns@gmail.com", "zach.dennis@gmail.com"]
11
11
  spec.summary = 'A Ruby wrapper for the Zenodo API. https://zenodo.org/dev'
12
12
  spec.description = "A Ruby wrapper for the Zenodo API. https://zenodo.org/dev.
13
13
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenodo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Iorns
8
+ - Zach Dennis
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-07-03 00:00:00.000000000 Z
12
+ date: 2015-07-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
@@ -130,6 +131,7 @@ description: |-
130
131
  that are not part of the existing institutional or subject-based repositories of the research communities.
131
132
  email:
132
133
  - david.iorns@gmail.com
134
+ - zach.dennis@gmail.com
133
135
  executables: []
134
136
  extensions: []
135
137
  extra_rdoc_files: []