endorster 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/endorster.rb +171 -0
  2. 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: []