omeka_client 0.0.2 → 0.0.3

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: 9ff4f2bddc2555b7645ff60265bf425785d5ea97
4
- data.tar.gz: d6333149ed0684f15812558ca5941b57dc0a8bf8
3
+ metadata.gz: ad08751ec7991ecc76863bf3f80e24e82e5a34f9
4
+ data.tar.gz: 65f8d081ee86f044ba6a8da39606a18395da6488
5
5
  SHA512:
6
- metadata.gz: b5c3269e51e86f0d63044227ad2de0e103691703733624246abd630bc7e5d971cc587db22f99ddc5b67292b6ab885029a1c9ddff8d6d30903381a0981df5b5f3
7
- data.tar.gz: 7143ea1c58405c9c0ff7bd5a214da4004008b178e87ce67b9a3925e91a983c4f88cde103f17d2f6ed3e8e80ebea586bf4a88541a80eb3627a1f5134273f8dd38
6
+ metadata.gz: 836c522e5ffe3984195df0b833ca1a8df3a6f18f7f2f04e184759839e846fffac0c6915b378ce56812bdaa044b6efb242fbec99cbb4b77d94c2d85b66fb724c2
7
+ data.tar.gz: 877faf52eb48ef0d1cec2765c6c254597c7634c2f13d806602357b8e27abceb0db117e76f524a87288007d79838a488fb1ee5b98019cae93c421fd6fb00b3604
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ ## v0.0.3 (July 30, 2013)
4
+
5
+ Added low-level POST, PUT, and DELETE methods
6
+
7
+ ## v0.0.2 (July 15, 2013)
8
+
9
+ Added OmekaItem class for getting items as a class
10
+
11
+ ## v0.0.1 (July 13, 2013)
12
+
13
+ Initial release with GET methods
@@ -60,10 +60,60 @@ module OmekaClient
60
60
  end
61
61
  end
62
62
 
63
- # Other generic methods to write
64
- # TODO: post
65
- # TODO: put
66
- # TODO: delete
63
+ # Generic POST request to the Omeka site
64
+ # @param resource [String] The Omeka resource to request, e.g.
65
+ # "items", "collections"
66
+ # @param body [String] A string containing a JSON representation of the body of the item
67
+ # @param query = {} [Hash] Additional query parameters (optional)
68
+ #
69
+ # @return [NetHttpPersistentResponseWrapper] A wrapper around the object
70
+ # @since 0.0.3
71
+ def post(resource, body = nil, query = {} )
72
+ url = self.endpoint + "/" + resource
73
+ query['key'] = self.api_key unless self.api_key.nil?
74
+ self.connection.post(url, :body => body, :params => query)
75
+ end
76
+
77
+ # Generic DELETE request to the Omeka site
78
+ # @param resource [String] The type of Omeka resource to delete, e.g.
79
+ # "items", "collections"
80
+ # @param id [Integer] The id number of the Omeka resource to delete
81
+ # @param query = {} [Hash] Additional query parameters
82
+ #
83
+ # @return [NetHttpPersistentResponseWrapper] A wrapper around the object
84
+ # @since 0.0.3
85
+ def delete(resource, id, query = {} )
86
+ url = self.endpoint + "/" + resource
87
+ url += "/" + id.to_s unless id.nil?
88
+ query[:key] = self.api_key unless self.api_key.nil?
89
+
90
+ # The rest gem that provides out functionality has a bug. The Omeka API
91
+ # returns 204 No Content on DELETE, indicating that the item has been
92
+ # successfully deleted but that there is no body to return. The rest
93
+ # gem assumes there will be a body, so it throws a type error. Until
94
+ # this is fixed, we just rescue the error and don't worry about it.
95
+ begin
96
+ self.connection.delete(url, :params => query)
97
+ rescue TypeError
98
+ # Not putting the error to stdout
99
+ end
100
+
101
+ end
102
+
103
+ # Generic DELETE request to the Omeka site
104
+ # @param resource [String] The type of Omeka resource to update, e.g.
105
+ # "items", "collections"
106
+ # @param id [Integer] The id number of the Omeka resource to update
107
+ # @param query = {} [Hash] Additional query parameters
108
+ #
109
+ # @return [NetHttpPersistentResponseWrapper] A wrapper around the object
110
+ # @since 0.0.3
111
+ def put(resource, id, body, query = {} )
112
+ url = self.endpoint + "/" + resource
113
+ url += "/" + id.to_s unless id.nil?
114
+ query[:key] = self.api_key unless self.api_key.nil?
115
+ self.connection.put(url, :body => body, :params => query)
116
+ end
67
117
 
68
118
  # Methods that return classes
69
119
  # -------------------------------------------------------------------
@@ -1,4 +1,4 @@
1
1
  module OmekaClient
2
2
  # The version number
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
data/omeka_client.gemspec CHANGED
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", "~> 10.1.0"
23
23
  spec.add_development_dependency "minitest"
24
- spec.add_development_dependency "yard"
24
+ spec.add_development_dependency "yard", "~> 0.8.6.2"
25
25
 
26
26
  spec.add_dependency "rest", "~> 2.6.3"
27
27
  end
data/test/client_test.rb CHANGED
@@ -5,9 +5,9 @@ describe OmekaClient::Client do
5
5
 
6
6
  # Setup a test client
7
7
  test_endpoint = "http://localhost/omeka-2.1-rc1/api"
8
- test_api_key = "c56c8f542bc98483b71896523d4faa6321de193b"
9
- resources = ["items", "collections"]
10
- client = OmekaClient::Client.new(test_endpoint, test_api_key)
8
+ test_api_key = "3b036221e180af46bafa4b5e4a1db30e84e78e89" # contributor
9
+ resources = ["items", "collections"]
10
+ client = OmekaClient::Client.new(test_endpoint, test_api_key)
11
11
 
12
12
  it "must have an endpoint" do
13
13
  client.endpoint.must_equal test_endpoint
@@ -68,15 +68,37 @@ describe OmekaClient::Client do
68
68
  end
69
69
 
70
70
  it "must return an OmekaItem class" do
71
- puts client.omeka_items(1).must_be_instance_of OmekaClient::OmekaItem
72
- end
71
+ client.omeka_items(1).must_be_instance_of OmekaClient::OmekaItem
72
+ end
73
73
 
74
74
  it "must return an array of OmekaItem classes" do
75
- puts client.omeka_items.must_be_instance_of Array
75
+ client.omeka_items.must_be_instance_of Array
76
76
  [0,1].each do |number|
77
- puts client.omeka_items[number].must_be_instance_of \
78
- OmekaClient::OmekaItem
77
+ client.omeka_items[number].must_be_instance_of \
78
+ OmekaClient::OmekaItem
79
79
  end
80
80
  end
81
81
 
82
+ it "must be able to POST an item and then DELETE it" do
83
+ body = '{"public":true,"featured":false,"element_texts":[{"html":false,"text":"Item Added via API","element_set":{"id":1,"url":"http:\/\/localhost\/omeka-2.1-rc1\/api\/element_sets\/1","name":"Dublin Core","resource":"element_sets"},"element":{"id":50,"url":"http:\/\/localhost\/omeka-2.1-rc1\/api\/elements\/50","name":"Title","resource":"elements"}}]}'
84
+ client.post("items", body).code.must_equal 201
85
+ id = client.omeka_items.last.id
86
+
87
+ # We can't make an assertion yet, because of a bug in the rest gem.
88
+ client.delete("items", id)
89
+ end
90
+
91
+ it "must be able to update an item via PUT" do
92
+ body_original = '{"public":true,"featured":false,"element_texts":[{"html":false,"text":"Item Added via API","element_set":{"id":1,"url":"http:\/\/localhost\/omeka-2.1-rc1\/api\/element_sets\/1","name":"Dublin Core","resource":"element_sets"},"element":{"id":50,"url":"http:\/\/localhost\/omeka-2.1-rc1\/api\/elements\/50","name":"Title","resource":"elements"}}]}'
93
+ body_updated = '{"featured":true,"element_texts":[{"html":false,"text":"Item Updated via API","element_set":{"id":1,"url":"http:\/\/localhost\/omeka-2.1-rc1\/api\/element_sets\/1","name":"Dublin Core","resource":"element_sets"},"element":{"id":50,"url":"http:\/\/localhost\/omeka-2.1-rc1\/api\/elements\/50","name":"Title","resource":"elements"}}]}'
94
+ client.post("items", body_original)
95
+ item_original = client.omeka_items.last
96
+ item_original.dublin_core.title.must_equal "Item Added via API"
97
+ item_original.featured.must_equal false
98
+ client.put("items", item_original.id, body_updated).code.must_equal 200
99
+ item_updated = client.omeka_items(item_original.id)
100
+ item_updated.dublin_core.title.must_equal "Item Updated via API"
101
+ item_updated.featured.must_equal true
102
+ end
103
+
82
104
  end
@@ -4,7 +4,6 @@ require "omeka_client"
4
4
  # Set up an test client
5
5
  test_endpoint = "http://localhost/omeka-2.1-rc1/api"
6
6
  test_api_key = "c56c8f542bc98483b71896523d4faa6321de193b"
7
- resources = ["items", "collections"]
8
7
  client = OmekaClient::Client.new(test_endpoint, test_api_key)
9
8
  # item_array = client.omeka_items
10
9
  item_single = client.omeka_items(1)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omeka_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lincoln Mullen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-15 00:00:00.000000000 Z
11
+ date: 2013-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 10.1.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 10.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.8.6.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.8.6.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rest
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - .gitignore
91
+ - CHANGELOG.md
91
92
  - Gemfile
92
93
  - LICENSE.txt
93
94
  - README.md