kooaba 0.0.6 → 0.0.7
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.
- data/lib/kooaba/base.rb +7 -2
- data/lib/kooaba/update_request.rb +102 -0
- data/lib/kooaba/upload_request.rb +2 -5
- data/lib/kooaba/version.rb +1 -1
- data/test/test_update_request.rb +23 -0
- metadata +11 -8
data/lib/kooaba/base.rb
CHANGED
@@ -19,12 +19,17 @@ module Kooaba
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.upload(item, bucket_id)
|
22
|
-
raise ArgumentError, "You need to specify the Data Key before uploading an item" if Kooaba
|
22
|
+
raise ArgumentError, "You need to specify the Data Key before uploading an item" if !Kooaba.data_key
|
23
23
|
UploadRequest.new(item, bucket_id).start
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.query(image_path)
|
27
|
-
raise ArgumentError, "You need to specify the Query Key before making queries" if Kooaba.query_key
|
27
|
+
raise ArgumentError, "You need to specify the Query Key before making queries" if !Kooaba.query_key
|
28
28
|
QueryRequest.new(image_path).start
|
29
29
|
end
|
30
|
+
|
31
|
+
def self.update(item_uuid, params = {})
|
32
|
+
raise ArgumentError, "You need to specify the item uuid for the item you want to update" if !item_uuid
|
33
|
+
UpdateRequest.new(item_uuid, params).start
|
34
|
+
end
|
30
35
|
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'net/https'
|
5
|
+
require 'time'
|
6
|
+
require 'json'
|
7
|
+
|
8
|
+
module Kooaba
|
9
|
+
|
10
|
+
class UpdateRequest
|
11
|
+
|
12
|
+
attr_accessor :item_uuid
|
13
|
+
attr_accessor :params
|
14
|
+
|
15
|
+
CONTENT_TYPE = 'application/json'
|
16
|
+
|
17
|
+
ALLOWED_PARAMS = ["title", "enabled", "reference_id", "metadata"]
|
18
|
+
|
19
|
+
def initialize(item_uuid, params)
|
20
|
+
@item_uuid = item_uuid
|
21
|
+
puts "Warning! The following params are not allowed and will be ignored: #{notAllowedParams(params)}" if notAllowedParams(params) != ""
|
22
|
+
@params = cleanedParams(params)
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Clean params and only use those allowed.
|
27
|
+
#
|
28
|
+
def cleanedParams(params)
|
29
|
+
params.select {|k, v| ALLOWED_PARAMS.include? k}
|
30
|
+
end
|
31
|
+
|
32
|
+
def notAllowedParams(params)
|
33
|
+
params.select {|k, v| !ALLOWED_PARAMS.include? k}.keys.join(", ")
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Returns the http response from the Kooaba servers.
|
38
|
+
#
|
39
|
+
def start
|
40
|
+
url = URI.parse(Kooaba::UPLOAD_URL + "items/" + item_uuid)
|
41
|
+
|
42
|
+
resp = make_request(url)
|
43
|
+
parse_request(resp)
|
44
|
+
|
45
|
+
return resp
|
46
|
+
end
|
47
|
+
|
48
|
+
def make_request(url)
|
49
|
+
http = Net::HTTP.new(url.host, url.port)
|
50
|
+
http.use_ssl = true
|
51
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
52
|
+
http.read_timeout = 500
|
53
|
+
|
54
|
+
req = Net::HTTP::Put.new(url.path)
|
55
|
+
|
56
|
+
req.body = params.to_json
|
57
|
+
req['date'] = Time.new.httpdate
|
58
|
+
req['content-type'] = CONTENT_TYPE
|
59
|
+
req['authorization'] = "Token #{Kooaba.data_key}"
|
60
|
+
|
61
|
+
http.request(req)
|
62
|
+
end
|
63
|
+
|
64
|
+
def parse_request(http_resp)
|
65
|
+
case http_resp
|
66
|
+
when Net::HTTPSuccess
|
67
|
+
parse_2xx(http_resp)
|
68
|
+
when Net::HTTPClientError
|
69
|
+
parse_4xx(http_resp)
|
70
|
+
when Net::HTTPServerError
|
71
|
+
parse_5xx(http_resp)
|
72
|
+
else
|
73
|
+
unknown_response(http_resp)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def parse_2xx(http_resp)
|
78
|
+
# "Item has been updated.\n"
|
79
|
+
end
|
80
|
+
|
81
|
+
def parse_4xx(http_resp)
|
82
|
+
case http_resp.code
|
83
|
+
when 404
|
84
|
+
raise ArgumentError.new("Kooaba Response: #{http_resp.code} #{http_resp.body}. Perhaps your key is not allowed to access this item?")
|
85
|
+
when 422
|
86
|
+
raise ArgumentError.new("Kooaba Response: #{http_resp.code} #{http_resp.body}. Please check your params.")
|
87
|
+
else
|
88
|
+
raise ArgumentError.new("Kooaba Response: #{http_resp.code} #{http_resp.body}.")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def parse_5xx(http_resp)
|
93
|
+
raise StandardError.new("Internal Server Error: #{http_resp.code} #{http_resp.body}")
|
94
|
+
end
|
95
|
+
|
96
|
+
def unknown_response(http_resp)
|
97
|
+
raise StandardError.new("Unknown response: #{http_resp.code} #{http_resp.body} ")
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -3,10 +3,7 @@ require 'uri'
|
|
3
3
|
require 'net/http'
|
4
4
|
require 'net/https'
|
5
5
|
require 'time'
|
6
|
-
|
7
6
|
require 'json'
|
8
|
-
require 'net/http'
|
9
|
-
|
10
7
|
|
11
8
|
module Kooaba
|
12
9
|
|
@@ -82,11 +79,11 @@ module Kooaba
|
|
82
79
|
end
|
83
80
|
|
84
81
|
def parse_4xx(http_resp)
|
85
|
-
|
82
|
+
raise ArgumentError.new("Kooaba Response: #{http_resp.code} #{http_resp.body}.")
|
86
83
|
end
|
87
84
|
|
88
85
|
def parse_5xx(http_resp)
|
89
|
-
|
86
|
+
raise StandardError.new("Internal Server Error: #{http_resp.code} #{http_resp.body}")
|
90
87
|
end
|
91
88
|
|
92
89
|
def unknown_response(http_resp)
|
data/lib/kooaba/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'kooaba'
|
3
|
+
require 'mocha/setup'
|
4
|
+
|
5
|
+
class UpdateRequestTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include Kooaba
|
8
|
+
|
9
|
+
def test_disable_item
|
10
|
+
req = UpdateRequest.new("123", "enabled" => false)
|
11
|
+
|
12
|
+
http_resp = Net::HTTPSuccess.new(1.0, 200, "hi")
|
13
|
+
http_resp.stubs(:code).returns(204)
|
14
|
+
http_resp.stubs(:kind_of?).returns('Net::HTTPSuccess')
|
15
|
+
http_resp.stubs(:body).returns('')
|
16
|
+
|
17
|
+
req.stubs(:make_request).returns(http_resp)
|
18
|
+
|
19
|
+
req.expects(:parse_2xx).with(http_resp).returns("")
|
20
|
+
assert req.start
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kooaba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &8688880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *8688880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: mocha
|
27
|
-
requirement: &
|
27
|
+
requirement: &8688460 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *8688460
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: json
|
38
|
-
requirement: &
|
38
|
+
requirement: &8688020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *8688020
|
47
47
|
description: A lightweight gem for accessing the kooaba APIs. For more information
|
48
48
|
on the APIs check out http://kooaba.github.com
|
49
49
|
email:
|
@@ -66,11 +66,13 @@ files:
|
|
66
66
|
- lib/kooaba/multipart_message.rb
|
67
67
|
- lib/kooaba/query.rb
|
68
68
|
- lib/kooaba/query_request.rb
|
69
|
+
- lib/kooaba/update_request.rb
|
69
70
|
- lib/kooaba/upload_request.rb
|
70
71
|
- lib/kooaba/version.rb
|
71
72
|
- test/test_base.rb
|
72
73
|
- test/test_item.rb
|
73
74
|
- test/test_query.rb
|
75
|
+
- test/test_update_request.rb
|
74
76
|
- test/test_upload_request.rb
|
75
77
|
homepage: https://github.com/kooaba/kooaba-api-v4-rubygem
|
76
78
|
licenses: []
|
@@ -100,4 +102,5 @@ test_files:
|
|
100
102
|
- test/test_base.rb
|
101
103
|
- test/test_item.rb
|
102
104
|
- test/test_query.rb
|
105
|
+
- test/test_update_request.rb
|
103
106
|
- test/test_upload_request.rb
|