cloudsight 0.0.1 → 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 +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/README.md +22 -0
- data/cloudsight.gemspec +1 -1
- data/lib/cloudsight.rb +41 -11
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb8badd51b892500316434b647052103df2287be
|
4
|
+
data.tar.gz: 241c9348620a066bfb4d67003e82e814c45f4b91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7c2c691cf71ca220e3a15d1652b757d7ed7b8911ba821a80c9e83bd9d52e6f6f0141b898fa25b4792cab4045dd42c2dd4e6892efebaef69b89afc4d9ccd0fed
|
7
|
+
data.tar.gz: b7743e4646dc36a3684e88bf9fce2306126010ef4bde5d72c4ccc71e72d4ff08e7504e93ceebcbd5edd9127f6697a34a0284fd2aa443a33644b288d40ae0e37d
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -3,6 +3,12 @@ cloudsight-ruby
|
|
3
3
|
|
4
4
|
A simple CloudSight API Client
|
5
5
|
|
6
|
+
| Project | Gem Release |
|
7
|
+
|------------------------ | ----------------- |
|
8
|
+
| gem name | gem-release |
|
9
|
+
| version | [](http://badge.fury.io/rb/gem-release) |
|
10
|
+
| continuous integration | [](https://travis-ci.org/cloudsight/cloudsight-ruby) |
|
11
|
+
|
6
12
|
Installation
|
7
13
|
============
|
8
14
|
|
@@ -10,11 +16,18 @@ Installation
|
|
10
16
|
$ gem install cloudsight
|
11
17
|
```
|
12
18
|
|
19
|
+
Install the `simple_oauth` gem to use with oauth options.
|
20
|
+
|
21
|
+
```
|
22
|
+
$ gem install simple_oauth
|
23
|
+
```
|
24
|
+
|
13
25
|
Configuration
|
14
26
|
=============
|
15
27
|
|
16
28
|
```ruby
|
17
29
|
require 'rubygems'
|
30
|
+
require 'simple_oauth'
|
18
31
|
require 'cloudsight'
|
19
32
|
|
20
33
|
Cloudsight.oauth_options = {
|
@@ -23,6 +36,15 @@ Cloudsight.oauth_options = {
|
|
23
36
|
}
|
24
37
|
```
|
25
38
|
|
39
|
+
or, using a single API key:
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
require 'rubygems'
|
43
|
+
require 'cloudsight'
|
44
|
+
|
45
|
+
Cloudsight.api_key = 'REPLACE WITH YOUR KEY'
|
46
|
+
```
|
47
|
+
|
26
48
|
Usage
|
27
49
|
=====
|
28
50
|
|
data/cloudsight.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'cloudsight/version'
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = 'cloudsight'
|
8
8
|
s.version = Cloudsight::VERSION
|
9
|
-
s.date = '
|
9
|
+
s.date = '2015-11-05'
|
10
10
|
s.summary = "CloudSight API Client"
|
11
11
|
s.description = "A simple CloudSight API Client for Image Recognition"
|
12
12
|
s.authors = ['Brad Folkens']
|
data/lib/cloudsight.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rest-client'
|
3
|
-
|
3
|
+
begin
|
4
|
+
require 'simple_oauth'
|
5
|
+
rescue LoadError => err
|
6
|
+
# Tolerate not having this unless it's actually configured
|
7
|
+
end
|
4
8
|
require 'json'
|
5
9
|
|
6
10
|
module Cloudsight
|
@@ -8,21 +12,25 @@ module Cloudsight
|
|
8
12
|
|
9
13
|
class << self
|
10
14
|
def oauth_options=(val)
|
15
|
+
raise RuntimeError.new("Could not load the simple_oauth gem. Install it with `gem install simple_oauth`.") unless defined?(SimpleOAuth::Header)
|
16
|
+
|
17
|
+
val = val.inject({}) {|memo, (k, v)| memo[k.to_sym] = v; memo }
|
11
18
|
@@oauth_options = val
|
19
|
+
end
|
12
20
|
|
21
|
+
def api_key=(val)
|
22
|
+
@@api_key = val
|
13
23
|
RestClient.add_before_execution_proc do |req, params|
|
14
|
-
|
15
|
-
filtered_payload = params[:payload].dup
|
16
|
-
filtered_payload.delete('image_request[image]')
|
17
|
-
end
|
18
|
-
|
19
|
-
oauth = SimpleOAuth::Header.new(params[:method], params[:url], filtered_payload, oauth_options)
|
20
|
-
req.add_field 'Authorization', oauth.to_s
|
24
|
+
req.add_field 'Authorization', "CloudSight #{val}"
|
21
25
|
end
|
22
26
|
end
|
23
27
|
|
28
|
+
def api_key
|
29
|
+
@@api_key if defined?(@@api_key)
|
30
|
+
end
|
31
|
+
|
24
32
|
def oauth_options
|
25
|
-
@@oauth_options
|
33
|
+
@@oauth_options if defined?(@@oauth_options)
|
26
34
|
end
|
27
35
|
|
28
36
|
def base_url=(val)
|
@@ -34,8 +42,30 @@ module Cloudsight
|
|
34
42
|
end
|
35
43
|
end
|
36
44
|
|
45
|
+
class Util
|
46
|
+
def self.wrap_request &block
|
47
|
+
RestClient.reset_before_execution_procs
|
48
|
+
RestClient.add_before_execution_proc do |req, params|
|
49
|
+
if params[:payload]
|
50
|
+
filtered_payload = params[:payload].dup
|
51
|
+
filtered_payload.delete('image_request[image]')
|
52
|
+
end
|
53
|
+
|
54
|
+
oauth = SimpleOAuth::Header.new(params[:method], params[:url], filtered_payload, Cloudsight.oauth_options)
|
55
|
+
req.add_field 'Authorization', oauth.to_s
|
56
|
+
end
|
57
|
+
|
58
|
+
retval = yield
|
59
|
+
|
60
|
+
RestClient.reset_before_execution_procs
|
61
|
+
|
62
|
+
return retval
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
37
66
|
class Request
|
38
67
|
def self.send(options = {})
|
68
|
+
raise RuntimeError.new("Need to define either oauth_options or api_key") unless Cloudsight.api_key || Cloudsight.oauth_options
|
39
69
|
url = "#{Cloudsight::base_url}/image_requests"
|
40
70
|
|
41
71
|
params = {}
|
@@ -51,7 +81,7 @@ module Cloudsight
|
|
51
81
|
params['image_request[remote_image_url]'] = options[:url] if options.has_key?(:url)
|
52
82
|
params['image_request[image]'] = options[:file] if options.has_key?(:file)
|
53
83
|
|
54
|
-
response = RestClient.post(url, params)
|
84
|
+
response = Util.wrap_request { RestClient.post(url, params) }
|
55
85
|
data = JSON.parse(response.body)
|
56
86
|
raise ResponseException.new(data['error']) if data['error']
|
57
87
|
raise UnexpectedResponseException.new(response.body) unless data['token']
|
@@ -64,7 +94,7 @@ module Cloudsight
|
|
64
94
|
def self.get(token, options = {})
|
65
95
|
url = "#{Cloudsight::base_url}/image_responses/#{token}"
|
66
96
|
|
67
|
-
response = RestClient.get(url)
|
97
|
+
response = Util.wrap_request { RestClient.get(url) }
|
68
98
|
data = JSON.parse(response.body)
|
69
99
|
raise ResponseException.new(data['error']) if data['error']
|
70
100
|
raise UnexpectedResponseException.new(response.body) unless data['status']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudsight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brad Folkens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -70,8 +70,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
70
|
version: '0'
|
71
71
|
requirements: []
|
72
72
|
rubyforge_project:
|
73
|
-
rubygems_version: 2.
|
73
|
+
rubygems_version: 2.4.7
|
74
74
|
signing_key:
|
75
75
|
specification_version: 4
|
76
76
|
summary: CloudSight API Client
|
77
77
|
test_files: []
|
78
|
+
has_rdoc:
|