clarifai-rails 0.1.0 → 0.1.1
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/README.md +89 -2
- data/lib/clarifai/rails.rb +1 -0
- data/lib/clarifai/rails/detector.rb +29 -9
- data/lib/clarifai/rails/error.rb +60 -0
- data/lib/clarifai/rails/image.rb +17 -10
- data/lib/clarifai/rails/version.rb +1 -1
- data/lib/generators/templates/clarifai.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5be6cebafc81e05908db735da87c5fbdb0940102
|
4
|
+
data.tar.gz: 4f6cdf1efd108c823b239b056793e8c2e30c9a73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eada820d2430b077964e4453ddf8cad8fccae884ac4a16297079a8420db20d5092ce2b048ee2e64c6f926c6b3ae12d371d336dbc99bb01bdcfdd4ae36416b3db
|
7
|
+
data.tar.gz: dae8da72ef309e32ea535a553b24ba5b336240362b7e695fabffe8e04d7ee3e864b3099ed6fbc0cca20922078ce33c2d87f90539615bc718d65004a35daec6f6
|
data/README.md
CHANGED
@@ -22,7 +22,94 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
### Initialize
|
26
|
+
|
27
|
+
$ rails g clarifai:install
|
28
|
+
|
29
|
+
### Config Client ID, Client Secret
|
30
|
+
|
31
|
+
Insert your application info in ```config/initializers/clarifai.rb```
|
32
|
+
|
33
|
+
### How to detect image
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
Clarifai::Rails::Detector.new(image_url).image
|
37
|
+
```
|
38
|
+
|
39
|
+
Return ```Clarifai::Rails::Image``` object
|
40
|
+
|
41
|
+
### For multiple images
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
Clarifai::Rails::Detector.new([image_url_1, image_url_2]).images
|
45
|
+
```
|
46
|
+
|
47
|
+
Return array ```Clarifai::Rails::Image``` object
|
48
|
+
|
49
|
+
|
50
|
+
With ```image``` is ```Clarifai::Rails::Image``` object
|
51
|
+
|
52
|
+
#### Get tags
|
53
|
+
|
54
|
+
```
|
55
|
+
image.tags
|
56
|
+
```
|
57
|
+
Return for you is a String array, it is tags list
|
58
|
+
|
59
|
+
#### Get tags with percent in image
|
60
|
+
|
61
|
+
```
|
62
|
+
image.tags_with_percent
|
63
|
+
```
|
64
|
+
Return is a Hash with key is tag and value is percent
|
65
|
+
|
66
|
+
#### Get url
|
67
|
+
|
68
|
+
```
|
69
|
+
image.url
|
70
|
+
```
|
71
|
+
Return ia a String
|
72
|
+
|
73
|
+
#### Get docid
|
74
|
+
|
75
|
+
```
|
76
|
+
image.docid
|
77
|
+
```
|
78
|
+
Return ia a Number
|
79
|
+
|
80
|
+
#### Get docid_str
|
81
|
+
|
82
|
+
```
|
83
|
+
image.docid_str
|
84
|
+
```
|
85
|
+
Return ia a String
|
86
|
+
|
87
|
+
#### Check status
|
88
|
+
|
89
|
+
```
|
90
|
+
image.success?
|
91
|
+
```
|
92
|
+
AND
|
93
|
+
|
94
|
+
```
|
95
|
+
image.error?
|
96
|
+
```
|
97
|
+
|
98
|
+
#### Get status_code
|
99
|
+
|
100
|
+
```
|
101
|
+
image.status_code
|
102
|
+
```
|
103
|
+
Return ia a String
|
104
|
+
|
105
|
+
Can you see more info at https://developer.clarifai.com/docs/status_codes
|
106
|
+
|
107
|
+
#### Get status_msg
|
108
|
+
|
109
|
+
```
|
110
|
+
image.status_messages
|
111
|
+
```
|
112
|
+
Return ia a String
|
26
113
|
|
27
114
|
## Development
|
28
115
|
|
@@ -32,7 +119,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
119
|
|
33
120
|
## Contributing
|
34
121
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
122
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ThanhKhoaIT/clarifai-rails. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
36
123
|
|
37
124
|
|
38
125
|
## License
|
data/lib/clarifai/rails.rb
CHANGED
@@ -11,31 +11,51 @@ module Clarifai
|
|
11
11
|
@@clarifai_token_expire ||= Time.current
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def to_hash
|
15
15
|
@data_urls ||= fetch
|
16
|
-
|
16
|
+
JSON.parse(@data_urls).symbolize_keys
|
17
|
+
end
|
18
|
+
|
19
|
+
def results
|
20
|
+
to_hash[:results]
|
17
21
|
end
|
18
22
|
|
19
23
|
def images
|
20
|
-
|
21
|
-
@data_urls["results"].map do |json|
|
24
|
+
results.map do |json|
|
22
25
|
Clarifai::Rails::Image.new(json)
|
23
26
|
end
|
24
27
|
end
|
25
28
|
|
29
|
+
def image
|
30
|
+
Clarifai::Rails::Image.new(results.first)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Status method
|
34
|
+
|
35
|
+
def error
|
36
|
+
Clarifai::Rails::Error.detector(to_hash[:status_code])
|
37
|
+
end
|
38
|
+
|
39
|
+
def error?
|
40
|
+
error.present?
|
41
|
+
end
|
42
|
+
|
43
|
+
def success?
|
44
|
+
error.blank?
|
45
|
+
end
|
46
|
+
|
26
47
|
private
|
27
48
|
|
28
49
|
def fetch
|
29
50
|
new_token if @@clarifai_token_expire <= Time.current
|
30
51
|
params_string = @@urls.join("&url=")
|
31
|
-
response = open("https://api.clarifai.com/v1/tag?url=#{params_string}", "Authorization" => "Bearer #{@@clarifai_token[
|
32
|
-
|
33
|
-
JSON.parse(response.read)
|
52
|
+
response = open("https://api.clarifai.com/v1/tag?url=#{params_string}", "Authorization" => "Bearer #{@@clarifai_token[:access_token]}")
|
53
|
+
response.read
|
34
54
|
end
|
35
55
|
|
36
56
|
def new_token
|
37
|
-
@@clarifai_token = Clarifai::Rails::Token.new.create
|
38
|
-
@@clarifai_token_expire = Time.current + @@clarifai_token[
|
57
|
+
@@clarifai_token = Clarifai::Rails::Token.new.create.symbolize_keys
|
58
|
+
@@clarifai_token_expire = Time.current + @@clarifai_token[:expires_in]
|
39
59
|
end
|
40
60
|
|
41
61
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Clarifai
|
2
|
+
module Rails
|
3
|
+
|
4
|
+
class Error < StandardError
|
5
|
+
|
6
|
+
def initialize(code, text)
|
7
|
+
@error_code = code
|
8
|
+
@error_text = text
|
9
|
+
end
|
10
|
+
|
11
|
+
def code
|
12
|
+
@error_code
|
13
|
+
end
|
14
|
+
|
15
|
+
def message
|
16
|
+
@error_text
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.detector(status_code)
|
20
|
+
error = case status_code
|
21
|
+
when "PARTIAL_ERROR"
|
22
|
+
PartialError.new(200, "Some images in request have failed. Please review the error messages per image.")
|
23
|
+
when "ALL_ERROR"
|
24
|
+
AllError.new(400, "Bad request.")
|
25
|
+
when "CLIENT_ERROR"
|
26
|
+
error_code = 400
|
27
|
+
error_text = "Data loading failed, see results for details."
|
28
|
+
when "SERVER_ERROR"
|
29
|
+
error_code = 500
|
30
|
+
error_text = "Data failed to process, see results for details."
|
31
|
+
when "TOKEN_APP_INVALID"
|
32
|
+
error_code = 401
|
33
|
+
error_text = "Application for this token is not valid. Please ensure that you are using ID and SECRET from same application."
|
34
|
+
when "TOKEN_EXPIRED"
|
35
|
+
error_code = 401
|
36
|
+
error_text = "Token has expired, you must generate a new access token."
|
37
|
+
when "TOKEN_INVALID"
|
38
|
+
error_code = 401
|
39
|
+
error_text = "Token is not valid. Please use valid tokens for a application in your account."
|
40
|
+
when "TOKEN_NONE"
|
41
|
+
error_code = 401
|
42
|
+
error_text = "Authentication credentials were not provided in request."
|
43
|
+
when "TOKEN_NO_SCOPE"
|
44
|
+
error_code = 401
|
45
|
+
error_text = "Token does not have the required scope to access resources."
|
46
|
+
end
|
47
|
+
|
48
|
+
return error if error.present?
|
49
|
+
end
|
50
|
+
|
51
|
+
class PartialError < Error; end
|
52
|
+
class AllError < Error; end
|
53
|
+
class ClientError < Error; end
|
54
|
+
class ServerError < Error; end
|
55
|
+
class TokenAppInvalid < Error; end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
data/lib/clarifai/rails/image.rb
CHANGED
@@ -15,15 +15,14 @@ module Clarifai
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def tags
|
18
|
-
|
19
|
-
|
18
|
+
raise error if error?
|
19
|
+
result["tag"]["classes"]
|
20
20
|
end
|
21
21
|
|
22
22
|
def tags_with_percent
|
23
|
-
return nil if is_error?
|
24
23
|
tags_hash = {}
|
25
24
|
tags.each_with_index do |tag, index|
|
26
|
-
tags_hash["#{tag}"] =
|
25
|
+
tags_hash["#{tag}"] = result["tag"]["probs"][index]
|
27
26
|
end
|
28
27
|
tags_hash.symbolize_keys
|
29
28
|
end
|
@@ -37,21 +36,29 @@ module Clarifai
|
|
37
36
|
end
|
38
37
|
|
39
38
|
def docid_str
|
40
|
-
|
39
|
+
result["docid_str"]
|
41
40
|
end
|
42
41
|
|
43
|
-
def
|
44
|
-
status_code
|
42
|
+
def error
|
43
|
+
Clarifai::Rails::Error.detector(status_code)
|
45
44
|
end
|
46
45
|
|
47
|
-
def
|
48
|
-
|
46
|
+
def error?
|
47
|
+
error.present?
|
49
48
|
end
|
50
49
|
|
51
|
-
|
50
|
+
def success?
|
51
|
+
error.blank?
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
52
55
|
|
53
56
|
attr_reader :json
|
54
57
|
|
58
|
+
def result
|
59
|
+
json[:result]
|
60
|
+
end
|
61
|
+
|
55
62
|
end
|
56
63
|
end
|
57
64
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clarifai-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karl Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- lib/clarifai-rails.rb
|
59
59
|
- lib/clarifai/rails.rb
|
60
60
|
- lib/clarifai/rails/detector.rb
|
61
|
+
- lib/clarifai/rails/error.rb
|
61
62
|
- lib/clarifai/rails/image.rb
|
62
63
|
- lib/clarifai/rails/token.rb
|
63
64
|
- lib/clarifai/rails/version.rb
|