collegiatelink 0.0.3 → 0.0.4

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.
@@ -18,10 +18,11 @@ module CollegiateLink
18
18
  @opts = {
19
19
  sharedkey: sharedkey,
20
20
  }
21
+ @@proxy = Net::HTTP
21
22
  end
22
23
 
23
24
  def self.proxy
24
- @@proxy || Net::HTTP
25
+ @@proxy
25
26
  end
26
27
 
27
28
  def use_socks_proxy(host, port)
@@ -68,6 +69,13 @@ module CollegiateLink
68
69
  events.map{ |o| CollegiateLink::Event.parse(o.to_s) }
69
70
  end
70
71
 
72
+ def roster(id, params = {})
73
+ params.merge!(:id => id)
74
+
75
+ members = request('organization/roster', params)
76
+ members.map{ |m| CollegiateLink::Member.parse(m.to_s) }
77
+ end
78
+
71
79
  private
72
80
 
73
81
  def request(action, params = {})
@@ -100,4 +100,53 @@ module CollegiateLink
100
100
 
101
101
  has_one :organization, Organization
102
102
  end
103
+
104
+ ##
105
+ # A position of someone in an organization
106
+ #
107
+ class Position
108
+ include HappyMapper
109
+
110
+ element :name, String
111
+ element :enddate, Integer
112
+ element :startdate, Integer
113
+ element :userstartdate, Integer
114
+ element :userenddate, Integer
115
+
116
+ def current?
117
+ use_startdate = (userstartdate > 0) ? userstartdate : startdate
118
+ indefinite = (userenddate < 0) && (enddate < 0)
119
+
120
+ starts = Time.at(use_startdate / 1000, use_startdate % 1000)
121
+
122
+ if indefinite
123
+ return (starts < Time.now)
124
+ else
125
+ use_enddate = (userenddate > 0) ? userenddate : enddate
126
+ ends = Time.at(use_enddate / 1000, use_enddate % 1000)
127
+ return (starts < Time.now && Time.now < ends)
128
+ end
129
+ end
130
+ end
131
+
132
+ ##
133
+ # A Member record returned by CollegiateLink
134
+ #
135
+ class Member
136
+ include HappyMapper
137
+
138
+ #element :affiliation # Not sure the format of this...
139
+ element :campusemail, String
140
+ element :firstname, String
141
+ element :id, Integer
142
+ element :lastname, String
143
+ element :preferredemail, String
144
+ element :username, String
145
+
146
+ has_many :positions, Position
147
+
148
+ def active_positions
149
+ positions.keep_if { |p| p.current? }
150
+ end
151
+ end
103
152
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collegiatelink
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-24 00:00:00.000000000 Z
12
+ date: 2012-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guid