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.
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: []