openamplify 0.2.0 → 0.2.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.
- data/History +3 -1
- data/Rakefile +8 -0
- data/VERSION.yml +2 -2
- data/lib/openamplify.rb +22 -9
- data/lib/openamplify/validations.rb +45 -0
- data/openamplify.gemspec +11 -3
- data/test/test_openamplify.rb +91 -0
- metadata +23 -6
data/History
CHANGED
data/Rakefile
CHANGED
@@ -10,7 +10,11 @@ begin
|
|
10
10
|
gem.email = "rubyoncloud@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/gregmoreno/openamplify"
|
12
12
|
gem.authors = ["Greg Moreno"]
|
13
|
+
|
13
14
|
gem.add_dependency "json", "~>1.2"
|
15
|
+
|
16
|
+
gem.add_development_dependency "shoulda", "~> 2.11"
|
17
|
+
|
14
18
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
19
|
end
|
16
20
|
Jeweler::GemcutterTasks.new
|
@@ -21,9 +25,13 @@ end
|
|
21
25
|
require 'rake/testtask'
|
22
26
|
Rake::TestTask.new(:test) do |test|
|
23
27
|
test.libs << 'lib' << 'test'
|
28
|
+
test.ruby_opts << "-rubygems"
|
24
29
|
test.pattern = 'test/**/test_*.rb'
|
25
30
|
test.verbose = true
|
26
31
|
end
|
32
|
+
# Note to run a single test do:
|
33
|
+
# ruby -Ilib test/test_foo.rb
|
34
|
+
|
27
35
|
|
28
36
|
begin
|
29
37
|
require 'rcov/rcovtask'
|
data/VERSION.yml
CHANGED
data/lib/openamplify.rb
CHANGED
@@ -7,16 +7,17 @@ module OpenAmplify
|
|
7
7
|
|
8
8
|
class Client
|
9
9
|
def initialize(options={})
|
10
|
-
@options = { :
|
10
|
+
@options = { :api_url => API_URL, :method => :get }
|
11
11
|
@options.merge!(OpenAmplify.symbolize_keys(options))
|
12
12
|
end
|
13
13
|
|
14
14
|
def analyze_text(text)
|
15
|
-
|
15
|
+
validate
|
16
|
+
Response.new(:api_url => @options[:api_url], :query => query.merge(:inputText => text),
|
16
17
|
:method => @options[:method])
|
17
18
|
end
|
18
19
|
|
19
|
-
%w(api_key analysis
|
20
|
+
%w(api_key analysis api_url method).each do |attr|
|
20
21
|
class_eval <<-EOS
|
21
22
|
def #{attr}
|
22
23
|
@options[:#{attr}]
|
@@ -47,7 +48,11 @@ module OpenAmplify
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def request_url
|
50
|
-
@request_url ||= compose_url(@options[:
|
51
|
+
@request_url ||= compose_url(@options[:api_url], @options[:query])
|
52
|
+
end
|
53
|
+
|
54
|
+
def reload
|
55
|
+
response
|
51
56
|
end
|
52
57
|
|
53
58
|
def each
|
@@ -96,6 +101,7 @@ module OpenAmplify
|
|
96
101
|
end
|
97
102
|
|
98
103
|
private
|
104
|
+
|
99
105
|
def compose_url(path, params)
|
100
106
|
path + '?' + URI.escape(params.collect{ |k, v| "#{k}=#{v}" }.join('&'))
|
101
107
|
end
|
@@ -117,21 +123,26 @@ module OpenAmplify
|
|
117
123
|
end
|
118
124
|
|
119
125
|
def fetch_as_format(format)
|
120
|
-
fetch(@options[:
|
126
|
+
fetch(@options[:api_url], @options[:query].merge(:outputFormat => format), @options[:method])
|
121
127
|
end
|
122
128
|
|
123
129
|
def fetch(path, params, method)
|
130
|
+
raise OpenAmplify::NotSupported unless [:get, :post].include?(method.to_sym)
|
124
131
|
self.send(method, path, params)
|
125
132
|
end
|
126
133
|
|
127
134
|
def get(path, params)
|
128
|
-
|
129
|
-
Net::HTTP.get_response(
|
135
|
+
uri = URI.parse(compose_url(path, params))
|
136
|
+
response = Net::HTTP.get_response(uri)
|
137
|
+
self.class.validate(response)
|
138
|
+
response.body
|
130
139
|
end
|
131
140
|
|
132
141
|
def post(path, params)
|
133
|
-
uri
|
134
|
-
Net::HTTP.post_form(uri, params)
|
142
|
+
uri = URI::parse(path)
|
143
|
+
response = Net::HTTP.post_form(uri, params)
|
144
|
+
self.class.validate(response)
|
145
|
+
response.body
|
135
146
|
end
|
136
147
|
|
137
148
|
end # OpenAmplify::Response
|
@@ -146,3 +157,5 @@ module OpenAmplify
|
|
146
157
|
end
|
147
158
|
|
148
159
|
end # module OpenAmplify
|
160
|
+
|
161
|
+
require 'openamplify/validations'
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module OpenAmplify
|
2
|
+
|
3
|
+
class Client
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def validate
|
8
|
+
raise ArgumentError, "missing api key" if self.api_key.blank?
|
9
|
+
raise ArgumentError, "missing api url" if self.api_url.blank?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
class NotAcceptable < StandardError; end
|
15
|
+
class NotSupported < StandardError; end
|
16
|
+
class Forbidden < StandardError; end
|
17
|
+
|
18
|
+
|
19
|
+
class Response
|
20
|
+
def self.validate(response)
|
21
|
+
case response.code.to_i
|
22
|
+
when 403
|
23
|
+
raise Forbidden, "(#{response.code}: #{response.message}) #{response.body}"
|
24
|
+
when 405
|
25
|
+
raise NotSupported, "(#{response.code}: #{response.message}) #{response.body}"
|
26
|
+
when 406
|
27
|
+
raise NotAcceptable, "(#{response.code}: #{response.message}) #{response.body}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
class String
|
35
|
+
def blank?
|
36
|
+
nil? || empty? || strip.empty?
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class NilClass
|
41
|
+
def blank?
|
42
|
+
nil?
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
data/openamplify.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{openamplify}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Greg Moreno"]
|
12
|
-
s.date = %q{2010-06-
|
12
|
+
s.date = %q{2010-06-13}
|
13
13
|
s.description = %q{The OpenAmplify API reads text you supply and returns linguistic data explaining and classifying the content.}
|
14
14
|
s.email = %q{rubyoncloud@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,13 +24,18 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION.yml",
|
26
26
|
"lib/openamplify.rb",
|
27
|
-
"openamplify.
|
27
|
+
"lib/openamplify/validations.rb",
|
28
|
+
"openamplify.gemspec",
|
29
|
+
"test/test_openamplify.rb"
|
28
30
|
]
|
29
31
|
s.homepage = %q{http://github.com/gregmoreno/openamplify}
|
30
32
|
s.rdoc_options = ["--charset=UTF-8"]
|
31
33
|
s.require_paths = ["lib"]
|
32
34
|
s.rubygems_version = %q{1.3.7}
|
33
35
|
s.summary = %q{Wrapper for the OpenAmplify API}
|
36
|
+
s.test_files = [
|
37
|
+
"test/test_openamplify.rb"
|
38
|
+
]
|
34
39
|
|
35
40
|
if s.respond_to? :specification_version then
|
36
41
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -38,11 +43,14 @@ Gem::Specification.new do |s|
|
|
38
43
|
|
39
44
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
40
45
|
s.add_runtime_dependency(%q<json>, ["~> 1.2"])
|
46
|
+
s.add_development_dependency(%q<shoulda>, ["~> 2.11"])
|
41
47
|
else
|
42
48
|
s.add_dependency(%q<json>, ["~> 1.2"])
|
49
|
+
s.add_dependency(%q<shoulda>, ["~> 2.11"])
|
43
50
|
end
|
44
51
|
else
|
45
52
|
s.add_dependency(%q<json>, ["~> 1.2"])
|
53
|
+
s.add_dependency(%q<shoulda>, ["~> 2.11"])
|
46
54
|
end
|
47
55
|
end
|
48
56
|
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'shoulda'
|
3
|
+
require 'openamplify'
|
4
|
+
|
5
|
+
class OpenAmplifyTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
context "Client instance" do
|
8
|
+
|
9
|
+
should "raise an error if api key is missing" do
|
10
|
+
assert_raises ArgumentError do
|
11
|
+
client = OpenAmplify::Client.new
|
12
|
+
client.analyze_text("sample")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
should "not raise an error if api key is present" do
|
17
|
+
assert_nothing_raised do
|
18
|
+
client.analyze_text("sample")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
should "raise an error if api key is not authorized" do
|
23
|
+
assert_raises OpenAmplify::Forbidden do
|
24
|
+
client = OpenAmplify::Client.new(:api_key => 'SOME_KEY')
|
25
|
+
client.analyze_text("sample").reload
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
should "raise an error if api_url is missing" do
|
30
|
+
assert_raises ArgumentError do
|
31
|
+
client.api_url = ''
|
32
|
+
client.analyze_text('sample')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
should "not raise an error if api_url is present" do
|
37
|
+
assert_nothing_raised do
|
38
|
+
client.analyze_text('sample')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end # context "Client instance"
|
43
|
+
|
44
|
+
context "Response" do
|
45
|
+
|
46
|
+
should "raise an error if empty text" do
|
47
|
+
assert_raises OpenAmplify::NotAcceptable do
|
48
|
+
client.analyze_text('').reload
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
should "not raise an error if there is input text" do
|
53
|
+
assert_nothing_raised do
|
54
|
+
client.analyze_text('sample').reload
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
should "raise error if analyis is not supported" do
|
59
|
+
assert_raises OpenAmplify::NotSupported do
|
60
|
+
client.analysis = 'not supported'
|
61
|
+
client.analyze_text('sample').reload
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end # Response
|
66
|
+
|
67
|
+
context "Request methods" do
|
68
|
+
|
69
|
+
should "raise an error if not supported" do
|
70
|
+
assert_raises OpenAmplify::NotSupported do
|
71
|
+
client.method = :delete
|
72
|
+
client.analyze_text('sample').reload
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
[:get, :post].each do |method|
|
77
|
+
should "not raise error for #{method}" do
|
78
|
+
assert_nothing_raised do
|
79
|
+
client.method = method
|
80
|
+
client.analyze_text('sample').reload
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end # Request methods
|
86
|
+
|
87
|
+
def client
|
88
|
+
@client ||= OpenAmplify::Client.new(:api_key => ENV['OPEN_AMPLIFY_KEY'])
|
89
|
+
end
|
90
|
+
|
91
|
+
end # OpenAmplifyTest
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openamplify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Greg Moreno
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-06-
|
18
|
+
date: 2010-06-13 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -33,6 +33,21 @@ dependencies:
|
|
33
33
|
version: "1.2"
|
34
34
|
type: :runtime
|
35
35
|
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: shoulda
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 21
|
45
|
+
segments:
|
46
|
+
- 2
|
47
|
+
- 11
|
48
|
+
version: "2.11"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
36
51
|
description: The OpenAmplify API reads text you supply and returns linguistic data explaining and classifying the content.
|
37
52
|
email: rubyoncloud@gmail.com
|
38
53
|
executables: []
|
@@ -50,7 +65,9 @@ files:
|
|
50
65
|
- Rakefile
|
51
66
|
- VERSION.yml
|
52
67
|
- lib/openamplify.rb
|
68
|
+
- lib/openamplify/validations.rb
|
53
69
|
- openamplify.gemspec
|
70
|
+
- test/test_openamplify.rb
|
54
71
|
has_rdoc: true
|
55
72
|
homepage: http://github.com/gregmoreno/openamplify
|
56
73
|
licenses: []
|
@@ -85,5 +102,5 @@ rubygems_version: 1.3.7
|
|
85
102
|
signing_key:
|
86
103
|
specification_version: 3
|
87
104
|
summary: Wrapper for the OpenAmplify API
|
88
|
-
test_files:
|
89
|
-
|
105
|
+
test_files:
|
106
|
+
- test/test_openamplify.rb
|