wepredict 0.1.0 → 0.2.0
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/Gemfile +4 -4
- data/Gemfile.lock +6 -0
- data/Rakefile +7 -9
- data/VERSION +1 -1
- data/bin/wepredict +9 -0
- data/lib/wepredict/api.rb +55 -0
- data/lib/wepredict/classifier.rb +24 -0
- data/lib/wepredict/classifiers/sentiment.rb +6 -0
- data/lib/wepredict/cli/user.rb +155 -0
- data/lib/wepredict/cli.rb +14 -0
- data/lib/wepredict/exceptions.rb +16 -0
- data/lib/wepredict/user.rb +37 -0
- data/lib/wepredict.rb +7 -0
- data/spec/wepredict/user_spec.rb +28 -0
- data/wepredict.gemspec +72 -0
- metadata +54 -12
- data/test/helper.rb +0 -18
- data/test/test_wepredict.rb +0 -7
data/Gemfile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
|
3
|
+
gem "thor", "~> 0.14.6"
|
4
|
+
gem "yajl-ruby", "~> 0.8.3"
|
5
5
|
|
6
6
|
# Add dependencies to develop your gem here.
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
7
|
group :development do
|
8
|
+
gem "rdoc", "~> 3.9.4"
|
9
9
|
gem "rspec", "~> 2.6.0"
|
10
10
|
gem "bundler", "~> 1.0.0"
|
11
11
|
gem "jeweler", "~> 1.6.4"
|
data/Gemfile.lock
CHANGED
@@ -8,6 +8,7 @@ GEM
|
|
8
8
|
git (>= 1.2.5)
|
9
9
|
rake
|
10
10
|
rake (0.9.2)
|
11
|
+
rdoc (3.9.4)
|
11
12
|
rspec (2.6.0)
|
12
13
|
rspec-core (~> 2.6.0)
|
13
14
|
rspec-expectations (~> 2.6.0)
|
@@ -16,6 +17,8 @@ GEM
|
|
16
17
|
rspec-expectations (2.6.0)
|
17
18
|
diff-lcs (~> 1.1.2)
|
18
19
|
rspec-mocks (2.6.0)
|
20
|
+
thor (0.14.6)
|
21
|
+
yajl-ruby (0.8.3)
|
19
22
|
|
20
23
|
PLATFORMS
|
21
24
|
ruby
|
@@ -23,4 +26,7 @@ PLATFORMS
|
|
23
26
|
DEPENDENCIES
|
24
27
|
bundler (~> 1.0.0)
|
25
28
|
jeweler (~> 1.6.4)
|
29
|
+
rdoc (~> 3.9.4)
|
26
30
|
rspec (~> 2.6.0)
|
31
|
+
thor (~> 0.14.6)
|
32
|
+
yajl-ruby (~> 0.8.3)
|
data/Rakefile
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'bundler'
|
5
|
+
|
5
6
|
begin
|
6
7
|
Bundler.setup(:default, :development)
|
7
8
|
rescue Bundler::BundlerError => e
|
@@ -9,6 +10,7 @@ rescue Bundler::BundlerError => e
|
|
9
10
|
$stderr.puts "Run `bundle install` to install missing gems"
|
10
11
|
exit e.status_code
|
11
12
|
end
|
13
|
+
|
12
14
|
require 'rake'
|
13
15
|
|
14
16
|
require 'jeweler'
|
@@ -21,21 +23,17 @@ Jeweler::Tasks.new do |gem|
|
|
21
23
|
gem.description = %Q{Provides easy access to the WePredict data mining API}
|
22
24
|
gem.email = "ben@benmcredmond.com"
|
23
25
|
gem.authors = ["Ben McRedmond"]
|
26
|
+
gem.executables = ["wepredict"]
|
24
27
|
# dependencies defined in Gemfile
|
25
28
|
end
|
26
29
|
Jeweler::RubygemsDotOrgTasks.new
|
27
30
|
|
28
|
-
require '
|
29
|
-
|
30
|
-
|
31
|
-
test.pattern = 'test/**/test_*.rb'
|
32
|
-
test.verbose = true
|
33
|
-
end
|
34
|
-
|
35
|
-
task :default => :test
|
31
|
+
require 'rspec/core/rake_task'
|
32
|
+
RSpec::Core::RakeTask.new
|
33
|
+
task :default => :spec
|
36
34
|
|
37
35
|
require 'rdoc/task'
|
38
|
-
|
36
|
+
RDoc::Task.new do |rdoc|
|
39
37
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
38
|
|
41
39
|
rdoc.rdoc_dir = 'rdoc'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/bin/wepredict
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
require 'yajl'
|
4
|
+
|
5
|
+
require 'wepredict/exceptions'
|
6
|
+
|
7
|
+
module WePredict
|
8
|
+
class API
|
9
|
+
|
10
|
+
@@endpoint = URI.parse((ENV["WP_DEV"]) ? "http://wepredict.dev/api/" : "http://demo.wepredictapp.com/api/")
|
11
|
+
|
12
|
+
# Makes a request to the WePredict API if the API
|
13
|
+
# encounters an error, a WePredictError is raised
|
14
|
+
# containing the error message and the response body
|
15
|
+
def self.make_request(method, params)
|
16
|
+
res = Net::HTTP.start(@@endpoint.host, @@endpoint.port) do |h|
|
17
|
+
query_string = params.map {|k,v| "#{k}=#{v}"}.join('&')
|
18
|
+
h.get("#{@@endpoint.path}#{method}?#{URI.escape(query_string)}")
|
19
|
+
end
|
20
|
+
|
21
|
+
json = Yajl::Parser.parse(res.body, :symbolize_keys => true)
|
22
|
+
if(json.kind_of?(Hash) && json[:state] == 'error')
|
23
|
+
ex = case json[:code]
|
24
|
+
when 400
|
25
|
+
Errors::BadRequest
|
26
|
+
when 403
|
27
|
+
Errors::AccessDenied
|
28
|
+
end
|
29
|
+
|
30
|
+
raise ex.new(json), json[:message]
|
31
|
+
end
|
32
|
+
|
33
|
+
json
|
34
|
+
end
|
35
|
+
|
36
|
+
# @@endpoint accessor
|
37
|
+
def self.endpoint
|
38
|
+
@@endpoint
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
# Checks the correct paramaters were passed to a method
|
43
|
+
def self.params?(params, required)
|
44
|
+
required.each do |r|
|
45
|
+
raise ArgumentError, "Paramater, #{r}, is missing" if params[r].nil?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.class_name
|
50
|
+
n = self.name.split('::').last.scan(/[A-Z][^A-Z]*/)
|
51
|
+
n.map {|o| o.downcase}.join('_')
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module WePredict
|
2
|
+
module Classifiers
|
3
|
+
class Classifier < API
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@api_key = Classifier.api_key
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.classify(options)
|
10
|
+
params? options, [:text]
|
11
|
+
make_request("classifiers/#{self.class_name}/classify", options.merge(:api_key => self.api_key))
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.api_key
|
15
|
+
f = File.open(File.expand_path("~/.wepredict"), 'r')
|
16
|
+
k = f.read(32)
|
17
|
+
f.close
|
18
|
+
|
19
|
+
k
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'wepredict/user'
|
3
|
+
|
4
|
+
module WePredict
|
5
|
+
module CLI
|
6
|
+
class User < Thor
|
7
|
+
|
8
|
+
include Thor::Actions
|
9
|
+
|
10
|
+
desc "signup EMAIL", "Signup for WePredict"
|
11
|
+
def signup(email)
|
12
|
+
begin
|
13
|
+
password = capture_password(true)
|
14
|
+
u = WePredict::User.create(:email => email, :password => password)
|
15
|
+
rescue WePredict::Errors::BadRequest => e
|
16
|
+
if(e.body[:error] == "user_exists")
|
17
|
+
say "User already exists, maybe try logging in?", :red
|
18
|
+
exit
|
19
|
+
end
|
20
|
+
|
21
|
+
say e.message, :red
|
22
|
+
retry
|
23
|
+
end
|
24
|
+
|
25
|
+
say "\nThankyou for signing up for WePredict", :green
|
26
|
+
write_api_key(u[:api_key])
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "login EMAIL", "Login to your WePredict account (will save API key in ~/.wepredict)"
|
30
|
+
def login(email)
|
31
|
+
password = capture_password
|
32
|
+
begin
|
33
|
+
u = WePredict::User.get(:email => email, :password => password)
|
34
|
+
rescue WePredict::Errors::AccessDenied => e
|
35
|
+
say e.message, :red
|
36
|
+
retry
|
37
|
+
end
|
38
|
+
|
39
|
+
write_api_key(u[:api_key])
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "delete EMAIl", "Delete your WePredict account"
|
43
|
+
def delete(email)
|
44
|
+
password = capture_password
|
45
|
+
confirm = yes?("Are you sure you want to close your account? This is non-reversable (y/n):")
|
46
|
+
|
47
|
+
if !confirm
|
48
|
+
say "Phew, almost lost you there!"
|
49
|
+
exit
|
50
|
+
end
|
51
|
+
|
52
|
+
begin
|
53
|
+
WePredict::User.delete(:email => email, :password => password)
|
54
|
+
rescue WePredict::Errors::AccessDenied => e
|
55
|
+
say e.message, :red
|
56
|
+
retry
|
57
|
+
end
|
58
|
+
|
59
|
+
say "Sucessfully closed your WePredict account", :green
|
60
|
+
end
|
61
|
+
|
62
|
+
desc "change_password EMAIL", "Change the password for your WePredict account"
|
63
|
+
def change_password(email)
|
64
|
+
password = authenticate(email)
|
65
|
+
new_password = capture_password(true)
|
66
|
+
WePredict::User.change_password(:email => email, :password => password, :new_password => new_password)
|
67
|
+
|
68
|
+
say "Sucessfully changed your password", :green
|
69
|
+
end
|
70
|
+
|
71
|
+
desc "change_email EMAIL NEW_EMAIL", "Change your EMAIL to NEW_EMAIL"
|
72
|
+
def change_email(email, new_email)
|
73
|
+
password = authenticate(email)
|
74
|
+
WePredict::User.change_email(:email => email, :password => password, :new_email => email)
|
75
|
+
|
76
|
+
say "Sucessfully changed your email address", :green
|
77
|
+
end
|
78
|
+
|
79
|
+
desc "forgotten_password EMAIL", "Reset your password"
|
80
|
+
def forgotten_password(email)
|
81
|
+
begin
|
82
|
+
WePredict::User.forgotten_password(:email => email)
|
83
|
+
rescue WePredict::Errors::BadRequest
|
84
|
+
say "We can't find you! Maybe you want to signup instead?", :red
|
85
|
+
exit
|
86
|
+
end
|
87
|
+
|
88
|
+
say "We have sent you a super secret code to your email, go check your email and then enter the code here!"
|
89
|
+
begin
|
90
|
+
code = ask "Super secret code:"
|
91
|
+
password = capture_password(true)
|
92
|
+
WePredict::User.reset_forgotten_password(:email => email, :forgotten_password_code => code, :new_password => password)
|
93
|
+
rescue WePredict::Errors::AccessDenied
|
94
|
+
say "That's not the right super secret code! Try again", :red
|
95
|
+
retry
|
96
|
+
end
|
97
|
+
|
98
|
+
say "Sucessfully reset your password", :green
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.banner(task, namespace = true, subcommand = false)
|
102
|
+
"#{basename} #{self.name.split('::').last.downcase} #{task.formatted_usage(self, false, subcommand)}"
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
def authenticate(email)
|
107
|
+
begin
|
108
|
+
password = capture_password
|
109
|
+
WePredict::User.get(:email => email, :password => password)
|
110
|
+
rescue WePredict::Errors::AccessDenied => e
|
111
|
+
say e.message, :red
|
112
|
+
retry
|
113
|
+
end
|
114
|
+
|
115
|
+
password
|
116
|
+
end
|
117
|
+
|
118
|
+
def write_api_key(api_key)
|
119
|
+
f = File.open(File.expand_path("~/.wepredict"), 'w')
|
120
|
+
f.write api_key
|
121
|
+
f.close
|
122
|
+
|
123
|
+
say "Your api key has been saved in ~/.wepredict", :green
|
124
|
+
end
|
125
|
+
|
126
|
+
def capture_password(new_password = false)
|
127
|
+
begin
|
128
|
+
system("stty -echo")
|
129
|
+
|
130
|
+
password = ask((new_password) ? "Please enter a password (>= 6 chars):" : "Password:")
|
131
|
+
print "\n"
|
132
|
+
|
133
|
+
raise ArgumentError if(password.length < 6)
|
134
|
+
raise RuntimeError if(new_password && password != ask("Please confirm your password:"))
|
135
|
+
rescue ArgumentError
|
136
|
+
print "\n"
|
137
|
+
say "Password is too short, please try again", :red
|
138
|
+
|
139
|
+
retry
|
140
|
+
rescue RuntimeError
|
141
|
+
print "\n\n"
|
142
|
+
say "Passwords don't match, please try again", :red
|
143
|
+
|
144
|
+
retry
|
145
|
+
ensure
|
146
|
+
system("stty echo")
|
147
|
+
print "\n"
|
148
|
+
end
|
149
|
+
|
150
|
+
password
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'wepredict/api'
|
2
|
+
|
3
|
+
module WePredict
|
4
|
+
class User < API
|
5
|
+
|
6
|
+
@@methods_and_required_params = {:create => [:email, :password],
|
7
|
+
:get => [:email, :password],
|
8
|
+
:new_api_key => [:email, :password],
|
9
|
+
:change_password => [:email, :password, :new_password],
|
10
|
+
:change_email => [:email, :password, :new_email],
|
11
|
+
:delete => [:email, :password],
|
12
|
+
:forgotten_password => [:email],
|
13
|
+
:reset_forgotten_password => [:email, :forgotten_password_code, :new_password]}
|
14
|
+
|
15
|
+
# Implements method calles for all the methods defined
|
16
|
+
# in @@methods_and_required_params which is intuitively
|
17
|
+
# a map of method names to their required paramaters.
|
18
|
+
def self.method_missing(method_name, *args, &block)
|
19
|
+
if(respond_to?(method_name))
|
20
|
+
params? *args, @@methods_and_required_params[method_name]
|
21
|
+
|
22
|
+
method_name = "#{class_name.downcase}/#{method_name}"
|
23
|
+
|
24
|
+
make_request(method_name, *args)
|
25
|
+
else
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Implements correct respond_to? behaviour for
|
31
|
+
# methods defined through method_missing
|
32
|
+
def self.respond_to?(method_name)
|
33
|
+
!!@@methods_and_required_params[method_name] || super
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
data/lib/wepredict.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
require './lib/wepredict/user'
|
2
|
+
|
3
|
+
module WePredict
|
4
|
+
describe User do
|
5
|
+
|
6
|
+
# All the other user methods are implemented
|
7
|
+
# in the same way (through method_missing), so,
|
8
|
+
# we only test one.
|
9
|
+
describe "#create" do
|
10
|
+
it "fails if you don't provide an :email and :password" do
|
11
|
+
expect {
|
12
|
+
User.create(:email => "ben@example.com")
|
13
|
+
}.to raise_error(ArgumentError, /missing/)
|
14
|
+
|
15
|
+
expect {
|
16
|
+
User.create(:password => "super secret sauce")
|
17
|
+
}.to raise_error(ArgumentError, /missing/)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "sends an api request to create a user" do
|
21
|
+
u = {:email => "ben@example.com", :password => "super secret sauce"}
|
22
|
+
User.should_receive(:make_request).with('user/create', u).and_return(true)
|
23
|
+
User.create(u)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/wepredict.gemspec
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{wepredict}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = [%q{Ben McRedmond}]
|
12
|
+
s.date = %q{2011-09-06}
|
13
|
+
s.description = %q{Provides easy access to the WePredict data mining API}
|
14
|
+
s.email = %q{ben@benmcredmond.com}
|
15
|
+
s.executables = [%q{wepredict}]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"bin/wepredict",
|
28
|
+
"lib/wepredict.rb",
|
29
|
+
"lib/wepredict/api.rb",
|
30
|
+
"lib/wepredict/classifier.rb",
|
31
|
+
"lib/wepredict/classifiers/sentiment.rb",
|
32
|
+
"lib/wepredict/cli.rb",
|
33
|
+
"lib/wepredict/cli/user.rb",
|
34
|
+
"lib/wepredict/exceptions.rb",
|
35
|
+
"lib/wepredict/user.rb",
|
36
|
+
"spec/wepredict/user_spec.rb",
|
37
|
+
"wepredict.gemspec"
|
38
|
+
]
|
39
|
+
s.homepage = %q{http://github.com/benofsky/WePredict-Client}
|
40
|
+
s.licenses = [%q{MIT}]
|
41
|
+
s.require_paths = [%q{lib}]
|
42
|
+
s.rubygems_version = %q{1.8.7}
|
43
|
+
s.summary = %q{Client gem for WePredict}
|
44
|
+
|
45
|
+
if s.respond_to? :specification_version then
|
46
|
+
s.specification_version = 3
|
47
|
+
|
48
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
|
+
s.add_runtime_dependency(%q<thor>, ["~> 0.14.6"])
|
50
|
+
s.add_runtime_dependency(%q<yajl-ruby>, ["~> 0.8.3"])
|
51
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.9.4"])
|
52
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
|
53
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
55
|
+
else
|
56
|
+
s.add_dependency(%q<thor>, ["~> 0.14.6"])
|
57
|
+
s.add_dependency(%q<yajl-ruby>, ["~> 0.8.3"])
|
58
|
+
s.add_dependency(%q<rdoc>, ["~> 3.9.4"])
|
59
|
+
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
60
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
61
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
62
|
+
end
|
63
|
+
else
|
64
|
+
s.add_dependency(%q<thor>, ["~> 0.14.6"])
|
65
|
+
s.add_dependency(%q<yajl-ruby>, ["~> 0.8.3"])
|
66
|
+
s.add_dependency(%q<rdoc>, ["~> 3.9.4"])
|
67
|
+
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
68
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
69
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wepredict
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,44 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-06 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &70118865907720 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.14.6
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70118865907720
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: yajl-ruby
|
27
|
+
requirement: &70118865904580 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.8.3
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70118865904580
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rdoc
|
38
|
+
requirement: &70118865900420 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 3.9.4
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70118865900420
|
14
47
|
- !ruby/object:Gem::Dependency
|
15
48
|
name: rspec
|
16
|
-
requirement: &
|
49
|
+
requirement: &70118865899580 !ruby/object:Gem::Requirement
|
17
50
|
none: false
|
18
51
|
requirements:
|
19
52
|
- - ~>
|
@@ -21,10 +54,10 @@ dependencies:
|
|
21
54
|
version: 2.6.0
|
22
55
|
type: :development
|
23
56
|
prerelease: false
|
24
|
-
version_requirements: *
|
57
|
+
version_requirements: *70118865899580
|
25
58
|
- !ruby/object:Gem::Dependency
|
26
59
|
name: bundler
|
27
|
-
requirement: &
|
60
|
+
requirement: &70118865897720 !ruby/object:Gem::Requirement
|
28
61
|
none: false
|
29
62
|
requirements:
|
30
63
|
- - ~>
|
@@ -32,10 +65,10 @@ dependencies:
|
|
32
65
|
version: 1.0.0
|
33
66
|
type: :development
|
34
67
|
prerelease: false
|
35
|
-
version_requirements: *
|
68
|
+
version_requirements: *70118865897720
|
36
69
|
- !ruby/object:Gem::Dependency
|
37
70
|
name: jeweler
|
38
|
-
requirement: &
|
71
|
+
requirement: &70118865896340 !ruby/object:Gem::Requirement
|
39
72
|
none: false
|
40
73
|
requirements:
|
41
74
|
- - ~>
|
@@ -43,10 +76,11 @@ dependencies:
|
|
43
76
|
version: 1.6.4
|
44
77
|
type: :development
|
45
78
|
prerelease: false
|
46
|
-
version_requirements: *
|
79
|
+
version_requirements: *70118865896340
|
47
80
|
description: Provides easy access to the WePredict data mining API
|
48
81
|
email: ben@benmcredmond.com
|
49
|
-
executables:
|
82
|
+
executables:
|
83
|
+
- wepredict
|
50
84
|
extensions: []
|
51
85
|
extra_rdoc_files:
|
52
86
|
- LICENSE.txt
|
@@ -58,9 +92,17 @@ files:
|
|
58
92
|
- README.rdoc
|
59
93
|
- Rakefile
|
60
94
|
- VERSION
|
95
|
+
- bin/wepredict
|
61
96
|
- lib/wepredict.rb
|
62
|
-
-
|
63
|
-
-
|
97
|
+
- lib/wepredict/api.rb
|
98
|
+
- lib/wepredict/classifier.rb
|
99
|
+
- lib/wepredict/classifiers/sentiment.rb
|
100
|
+
- lib/wepredict/cli.rb
|
101
|
+
- lib/wepredict/cli/user.rb
|
102
|
+
- lib/wepredict/exceptions.rb
|
103
|
+
- lib/wepredict/user.rb
|
104
|
+
- spec/wepredict/user_spec.rb
|
105
|
+
- wepredict.gemspec
|
64
106
|
homepage: http://github.com/benofsky/WePredict-Client
|
65
107
|
licenses:
|
66
108
|
- MIT
|
@@ -76,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
118
|
version: '0'
|
77
119
|
segments:
|
78
120
|
- 0
|
79
|
-
hash:
|
121
|
+
hash: 3624294656438796082
|
80
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
123
|
none: false
|
82
124
|
requirements:
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'wepredict'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|