endorster 0.0.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/lib/endorster.rb +171 -0
- metadata +45 -0
data/lib/endorster.rb
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'json'
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
|
6
|
+
class Endorster
|
7
|
+
@@base_url = "http://www.endorster.net"
|
8
|
+
|
9
|
+
def self.version
|
10
|
+
puts "endorster-0.0.1b"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.get_score(from_user, to_user)
|
14
|
+
url = @@base_url + "/api/score/" + from_user + "/" + to_user + ".json"
|
15
|
+
resp = Net::HTTP.get_response(URI.parse(url))
|
16
|
+
data = resp.body
|
17
|
+
result = JSON.parse(data)
|
18
|
+
if result.has_key? 'errors'
|
19
|
+
raise result['errors'].join('; ')
|
20
|
+
end
|
21
|
+
if result.has_key? 'Error'
|
22
|
+
raise "web service error"
|
23
|
+
end
|
24
|
+
return result["score"]
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def self.create_privileged_account(username, password, referrer, email="")
|
29
|
+
@host = 'www.endorster.net'
|
30
|
+
@port = Net::HTTP::default_port
|
31
|
+
@path = "/api/privacct.json"
|
32
|
+
|
33
|
+
@body = {
|
34
|
+
"user" => {"pretty_name" => username,
|
35
|
+
"password" => password,
|
36
|
+
"password_confirmation" => password,
|
37
|
+
"email" => email},
|
38
|
+
"referrer" => referrer}.to_json
|
39
|
+
|
40
|
+
request = Net::HTTP::Post.new(@path, initheader = {'Content-Type' =>'application/json'})
|
41
|
+
request.body = @body
|
42
|
+
response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }
|
43
|
+
result = JSON.parse(response.body)
|
44
|
+
@errors = []
|
45
|
+
if result.has_key? "username" and result["username"].include?("is too short (minimum is 3 characters)")
|
46
|
+
@errors << ("Username is too short (minimum 3 characters)")
|
47
|
+
end
|
48
|
+
if result.has_key? "username" and result["username"].include?("is too long (maximum is 24 characters)")
|
49
|
+
@errors << ("Username is too long (maximum 24 characters)")
|
50
|
+
end
|
51
|
+
if result.has_key? "username" and result["username"].include?("has already been taken")
|
52
|
+
@errors << ("Username has already been taken")
|
53
|
+
end
|
54
|
+
if result.has_key? "password" and result["password"].include?("is too short (minimum is 4 characters)")
|
55
|
+
@errors << ("Password is too short (minimum 4 characters)")
|
56
|
+
end
|
57
|
+
if @errors.length > 0
|
58
|
+
raise @errors.join('; ')
|
59
|
+
end
|
60
|
+
if result.has_key? 'Error'
|
61
|
+
raise "web service error"
|
62
|
+
end
|
63
|
+
return result["privilege_tokens"][referrer]
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
def self.send_invitation(from_user, to_user, referrer, privilege_token, lowerlimit=1, upperlimit=1, unlimited=true, comment="")
|
68
|
+
@host = 'www.endorster.net'
|
69
|
+
@port = Net::HTTP::default_port
|
70
|
+
@path = "/api/invite.json"
|
71
|
+
|
72
|
+
@body = {
|
73
|
+
"rating" => {"ratee" => from_user,
|
74
|
+
"rater" => to_user,
|
75
|
+
"lowerlimit" => lowerlimit,
|
76
|
+
"upperlimit" => upperlimit,
|
77
|
+
"unlimited" => unlimited,
|
78
|
+
"comment" => comment},
|
79
|
+
"referrer" => referrer,
|
80
|
+
"privilege_token" => privilege_token
|
81
|
+
}.to_json
|
82
|
+
|
83
|
+
request = Net::HTTP::Post.new(@path, initheader = {'Content-Type' =>'application/json'})
|
84
|
+
request.body = @body
|
85
|
+
response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }
|
86
|
+
result = JSON.parse(response.body)
|
87
|
+
@errors = []
|
88
|
+
|
89
|
+
if result.has_key? "ratee" and result["ratee"].include?("is invalid")
|
90
|
+
@errors << ("user_from is invalid")
|
91
|
+
end
|
92
|
+
if result.has_key? "ratee" and result["ratee"].include?("has not enabled write-privileges under this token")
|
93
|
+
@errors << ("user_from has not enabled write-privileges under this token")
|
94
|
+
end
|
95
|
+
if result.has_key? "rater" and result["rater"].include?("is invalid")
|
96
|
+
@errors << ("user_to is invalid")
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
if @errors.length > 0
|
101
|
+
raise @errors.join('; ')
|
102
|
+
end
|
103
|
+
if result.has_key? 'Error'
|
104
|
+
raise "web service error"
|
105
|
+
end
|
106
|
+
return result["id"]
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
def self.get_invitation_attributes(invitation_id, referrer, privilege_token)
|
111
|
+
@host = 'www.endorster.net'
|
112
|
+
@port = Net::HTTP::default_port
|
113
|
+
@path = "/api/invitation_attributes.json"
|
114
|
+
|
115
|
+
@body = {
|
116
|
+
"id" => invitation_id,
|
117
|
+
"referrer" => referrer,
|
118
|
+
"privilege_token" => privilege_token,
|
119
|
+
}.to_json
|
120
|
+
|
121
|
+
request = Net::HTTP::Post.new(@path, initheader = {'Content-Type' =>'application/json'})
|
122
|
+
request.body = @body
|
123
|
+
response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }
|
124
|
+
result = JSON.parse(response.body)
|
125
|
+
|
126
|
+
@errors = []
|
127
|
+
|
128
|
+
if result.has_key? "errors"
|
129
|
+
@errors = result["errors"]
|
130
|
+
raise @errors.join("; ")
|
131
|
+
end
|
132
|
+
if result.has_key? 'Error'
|
133
|
+
raise "web service error"
|
134
|
+
end
|
135
|
+
|
136
|
+
return result
|
137
|
+
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
def self.rate(invitation_id, referrer, privilege_token, value)
|
143
|
+
@host = 'www.endorster.net'
|
144
|
+
@port = Net::HTTP::default_port
|
145
|
+
@path = "/api/rate.json"
|
146
|
+
|
147
|
+
@body = {
|
148
|
+
"id" => invitation_id,
|
149
|
+
"referrer" => referrer,
|
150
|
+
"privilege_token" => privilege_token,
|
151
|
+
"value" => value
|
152
|
+
}.to_json
|
153
|
+
|
154
|
+
request = Net::HTTP::Post.new(@path, initheader = {'Content-Type' =>'application/json'})
|
155
|
+
request.body = @body
|
156
|
+
response = Net::HTTP.new(@host, @port).start {|http| http.request(request) }
|
157
|
+
result = JSON.parse(response.body)
|
158
|
+
@errors = []
|
159
|
+
|
160
|
+
if result.has_key? "errors"
|
161
|
+
@errors = result["errors"]
|
162
|
+
raise @errors.join("; ")
|
163
|
+
end
|
164
|
+
if result.has_key? 'Error'
|
165
|
+
raise "web service error"
|
166
|
+
end
|
167
|
+
|
168
|
+
return true
|
169
|
+
|
170
|
+
end
|
171
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: endorster
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jeffrey Lim
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-07 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Endorster API wrapper
|
15
|
+
email: info@endorster.net
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/endorster.rb
|
21
|
+
homepage: http://rubygems.org/gems/endorster
|
22
|
+
licenses: []
|
23
|
+
post_install_message:
|
24
|
+
rdoc_options: []
|
25
|
+
require_paths:
|
26
|
+
- lib
|
27
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 1.8.24
|
42
|
+
signing_key:
|
43
|
+
specification_version: 3
|
44
|
+
summary: Endorster API wrapper
|
45
|
+
test_files: []
|