collegiatelink 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,15 +21,11 @@ require 'collegiatelink/member'
21
21
  #
22
22
  module CollegiateLink
23
23
  # Currently-supported CollegiateLink action request types
24
- OLD_ACTIONS = [
25
- 'organization/list',
26
- 'organization/roster',
27
- #'user/memberships',
28
- #'user/position',
29
- 'event/list',
30
- ]
31
24
  NEW_ACTIONS = [
25
+ 'organizations',
32
26
  'financetransactions',
27
+ 'events',
28
+ 'memberships',
33
29
  ]
34
30
 
35
31
  # Raised when performing a CollegiateLink::Request for an action that is not
@@ -40,7 +40,7 @@ module CollegiateLink
40
40
  # See CollegiateLink::Request#initialize for a list of optional parameters
41
41
  #
42
42
  def organizations(params = {})
43
- orgs = request('organization/list', CollegiateLink::Organization, params)
43
+ orgs = request('organizations', CollegiateLink::Organization, params)
44
44
  end
45
45
 
46
46
  def financetransactions(params = {})
@@ -73,13 +73,13 @@ module CollegiateLink
73
73
  params[:startdate] = params[:startdate].to_i * 1000
74
74
  params[:enddate] = params[:enddate].to_i * 1000
75
75
 
76
- events = request('event/list', CollegiateLink::Event, params)
76
+ events = request('events', CollegiateLink::Event, params)
77
77
  end
78
78
 
79
79
  def roster(id, params = {})
80
- params.merge!(:id => id)
80
+ params.merge!(:organizationId => id)
81
81
 
82
- members = request('organization/roster', CollegiateLink::Member, params)
82
+ members = request('memberships', CollegiateLink::Member, params)
83
83
  end
84
84
 
85
85
  private
@@ -1,73 +1,56 @@
1
1
  module CollegiateLink
2
+
2
3
  ##
3
- # A position of someone in an organization
4
+ # A Member record returned by CollegiateLink
4
5
  #
5
- class Position < OpenStruct
6
- include Representable::XML
6
+ class Member < OpenStruct
7
+ include Representable::JSON
8
+
9
+ property :membershipId
10
+ property :organizationId
11
+ property :organizationName
12
+ property :organizationShortName
13
+ property :positionTemplate
14
+ property :positionTypeName
15
+ property :positionId
16
+ property :positionName
17
+ property :userId
18
+ property :username
19
+ property :userFirstName
20
+ property :userLastName
21
+ property :userCampusEmail
22
+ property :preferredemail
23
+ property :positionRecordedStartDate
24
+ property :positionRecordedEndDate
25
+ property :positionReportedStartDate
26
+ property :positionReportedEndDate
7
27
 
8
- property :name
9
- property :enddate
10
- property :startdate
11
- property :userstartdate
12
- property :userenddate
28
+ def id
29
+ membershipId
30
+ end
13
31
 
14
32
  def current?
15
- use_startdate = (userstartdate.to_i > 0) ? userstartdate.to_i : startdate.to_i
16
- indefinite = (userenddate.to_i < 0) && (enddate.to_i < 0)
33
+ if (use_startdate = positionReportedStartDate.to_i) == 0
34
+ use_startdate = positionRecordedStartDate.to_i
35
+ end
36
+ if (use_enddate = positionReportedEndDate.to_i) == 0
37
+ use_enddate = positionRecordedEndDate.to_i
38
+ end
39
+
40
+ indefinite = (positionReportedEndDate.to_i <= 0) && (positionRecordedEndDate.to_i <= 0)
17
41
 
18
42
  starts = Time.at(use_startdate / 1000, use_startdate % 1000)
19
43
 
20
44
  if indefinite
21
45
  return (starts < Time.now)
22
46
  else
23
- use_enddate = (userenddate.to_i > 0) ? userenddate.to_i : enddate.to_i
24
47
  ends = Time.at(use_enddate / 1000, use_enddate % 1000)
25
48
  return (starts < Time.now && Time.now < ends)
26
49
  end
27
50
  end
28
- end
29
-
30
- module PositionRepresenter
31
- include Representable::XML
32
-
33
- property :name
34
- property :enddate
35
- property :startdate
36
- property :userstartdate
37
- property :userenddate
38
- end
39
-
40
- class PositionList < OpenStruct
41
- include Representable::XML
42
-
43
- collection :positions, :extend => PositionRepresenter, :class => Position, :as => :position
44
- end
45
-
46
- ##
47
- # A Member record returned by CollegiateLink
48
- #
49
- class Member < OpenStruct
50
- include Representable::XML
51
-
52
- #property :affiliation # Not sure the format of this...
53
- property :campusemail
54
- property :firstname
55
- property :id
56
- property :lastname
57
- property :preferredemail
58
- property :username
59
- property :positionList, :class => PositionList, :as => :positions
60
-
61
- def positions
62
- positionList.positions
63
- end
64
-
65
- def active_positions
66
- positions.keep_if { |p| p.current? }
67
- end
68
51
 
69
- def self.parse(xml)
70
- from_xml(xml.to_s)
52
+ def self.parse(json)
53
+ new(json)
71
54
  end
72
55
  end
73
56
  end
@@ -41,35 +41,32 @@ module CollegiateLink
41
41
 
42
42
  ##
43
43
  # An Organization record returned by CollegiateLink
44
- # See: http://support.collegiatelink.net/entries/332558-web-services-developer-documentation#orgList
45
- #
46
- # ==== Properties:
47
- # * <tt>:id </tt> - Integer
48
- # * <tt>:parentId</tt> - Integer
49
- # * <tt>:name </tt> - String
50
- # * <tt>:description </tt> - String
51
- # * <tt>:shortName </tt> - String
52
- # * <tt>:siteUrl </tt> - String
53
- # * <tt>:status </tt> - String
54
- # * <tt>:type </tt> - String
55
- # * <tt>:addresses </tt> - Array of CollegiateLink::Address
56
- # * <tt>:categories </tt> - Array of CollegiateLink::Category
57
44
  class Organization < OpenStruct
58
- include Representable::XML
45
+ include Representable::JSON
59
46
 
60
- property :id
61
- property :parentId
47
+ property :organizationId
62
48
  property :name
63
- property :description
64
- property :shortName
65
- property :siteUrl
66
49
  property :status
67
- property :type
68
- collection :addresses
69
- collection :categories
50
+ property :shortName
51
+ property :summary
52
+ property :description
53
+ property :addressStreet1
54
+ property :addressStreet2
55
+ property :addressCity
56
+ property :addressStateProvince
57
+ property :addressZipPostal
58
+ property :phoneNumber
59
+ property :email
60
+ property :externalWebsite
61
+ property :facebookUrl
62
+ property :twitterUrl
63
+ property :profileUrl
64
+ property :typeId
65
+ property :typeName
66
+ property :parentId
70
67
 
71
- def self.parse(xml)
72
- from_xml(xml.to_s)
68
+ def self.parse(json)
69
+ new(json)
73
70
  end
74
71
  end
75
72
 
@@ -77,33 +74,28 @@ module CollegiateLink
77
74
  # An Event record returned by CollegiateLink
78
75
  # See: http://support.collegiatelink.net/entries/332558-web-services-developer-documentation#eventList
79
76
  #
80
- # ==== Properties:
81
- # * <tt>:id </tt> - Integer
82
- # * <tt>:name </tt> - String
83
- # * <tt>:description</tt> - String
84
- # * <tt>:startDate </tt> - Integer
85
- # * <tt>:endDate </tt> - Integer
86
- # * <tt>:location </tt> - String
87
- # * <tt>:status </tt> - String
88
- # * <tt>:urlLarge </tt> - String
89
- # * <tt>:urlSmall </tt> - String
90
- # * <tt>:organization</tt> - The hosting Organization (..todo?)
91
- #
92
77
  class Event < OpenStruct
93
- include Representable::XML
78
+ include Representable::JSON
94
79
 
95
- property :id
96
- property :name
80
+ property :eventId
81
+ property :eventName
82
+ property :organizationId
83
+ property :organizationName
84
+ property :startDateTime
85
+ property :endDateTime
86
+ property :externalLocationId
87
+ property :locationId
88
+ property :otherLocation
89
+ # properties for address here...
97
90
  property :description
98
- property :startDate
99
- property :endDate
100
- property :location
91
+ property :flyerUrl
92
+ property :thumbnailUrl
93
+ property :typeId
94
+ property :typeName
101
95
  property :status
102
- property :urlLarge
103
- property :urlSmall
104
96
 
105
- def self.parse(xml)
106
- from_xml(xml.to_s)
97
+ def self.parse(json)
98
+ new(json)
107
99
  end
108
100
  end
109
101
 
@@ -28,11 +28,8 @@ module CollegiateLink
28
28
 
29
29
  raise AuthenticationException unless opts.include?(:sharedkey)
30
30
 
31
- if OLD_ACTIONS.include?(action)
32
- @opts[:url_base] ||= 'https://casewestern.collegiatelink.net/ws/' % @params[:apikey]
33
- @opts[:response_format] = 'XML'
34
- elsif NEW_ACTIONS.include?(action)
35
- @opts[:url_base] ||= 'https://casewestern.collegiatelink.net/api/' % @params[:apikey]
31
+ if NEW_ACTIONS.include?(action)
32
+ @opts[:url_base] ||= 'https://casewestern.collegiatelink.net/api/'
36
33
  @opts[:response_format] = 'JSON'
37
34
  else
38
35
  raise UnknownAction, 'Action not supported!'
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.1.1
4
+ version: 0.2.0
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-03-28 00:00:00.000000000 Z
12
+ date: 2012-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guid
@@ -108,7 +108,7 @@ dependencies:
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  description:
111
- email: ted27@case.edu
111
+ email: tomdooner@gmail.com
112
112
  executables: []
113
113
  extensions: []
114
114
  extra_rdoc_files: []