polyhoraire 1.1 → 1.2

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.
@@ -1,8 +1,10 @@
1
- = Installation
1
+ = Installation from gem
2
2
 
3
3
  gem install polyhoraire
4
4
 
5
- = Setup
5
+ = Using source code
6
+
7
+ == Setup
6
8
 
7
9
  rake setup
8
10
 
@@ -3,40 +3,42 @@ require 'google/api_client'
3
3
  require 'nokogiri'
4
4
  require 'yaml'
5
5
  require 'tzinfo'
6
- require 'data_mapper'
7
6
 
8
7
  require 'polyhoraire'
9
8
 
10
9
 
11
10
  # Set up our token store
12
- DataMapper.setup(:default, 'sqlite::memory:')
13
11
  class TokenPair
14
- include DataMapper::Resource
15
-
16
- property :id, Serial
17
- property :refresh_token, String, :length => 255
18
- property :access_token, String, :length => 255
19
- property :expires_in, Integer
20
- property :issued_at, Integer
21
12
 
13
+ def initialize(hash)
14
+ if hash != nil
15
+ @access_token = hash[:access_token]
16
+ @expires_in = hash[:expires_in]
17
+ @issued_at = hash[:issued_at]
18
+ @refresh_token= hash[:refresh_token]
19
+ end
20
+ end
22
21
 
23
22
  def update_token!(object)
24
- self.refresh_token = object.refresh_token
25
- self.access_token = object.access_token
26
- self.expires_in = object.expires_in
27
- self.issued_at = object.issued_at
23
+ @refresh_token = object.refresh_token
24
+ @access_token = object.access_token
25
+ @expires_in = object.expires_in
26
+ @issued_at = object.issued_at
27
+ end
28
+
29
+ def set?
30
+ @refresh_token != nil
28
31
  end
29
32
 
30
33
  def to_hash
31
34
  return {
32
- :refresh_token => refresh_token,
33
- :access_token => access_token,
34
- :expires_in => expires_in,
35
- :issued_at => Time.at(issued_at)
35
+ :refresh_token => @refresh_token,
36
+ :access_token => @access_token,
37
+ :expires_in => @expires_in,
38
+ :issued_at => Time.at(@issued_at)
36
39
  }
37
40
  end
38
41
  end
39
- TokenPair.auto_migrate!
40
42
 
41
43
 
42
44
  class GoogleExporter
@@ -67,6 +69,7 @@ class GoogleExporter
67
69
  courseBeginsOn += 7 if period.week == 2
68
70
  event = {
69
71
  'summary' => course.acronym + '(' + period.group + ') ' + (period.isLab ? '[Lab]' : '') ,
72
+ 'description' => course.description ,
70
73
  'location' => period.location,
71
74
  'timeZone' => 'America/Montreal',
72
75
  'start' => {
@@ -132,7 +135,7 @@ class GoogleExporter
132
135
  end
133
136
 
134
137
  # Returns access token
135
- def authWeb(code,tokenID,callBackURI)
138
+ def authWeb(code,callBackURI,tokenPair = nil)
136
139
  oauth_yaml = YAML.load_file(Poly::userConfDir + '/google-api.yaml')
137
140
 
138
141
  @client = Google::APIClient.new
@@ -142,10 +145,8 @@ class GoogleExporter
142
145
  @client.authorization.redirect_uri = callBackURI
143
146
  @client.authorization.code = code if code
144
147
 
145
- if tokenID
146
- # Load the access token here if it's available
147
- token_pair = TokenPair.get(tokenID)
148
- @client.authorization.update_token!(token_pair.to_hash)
148
+ if tokenPair.set?
149
+ @client.authorization.update_token!(tokenPair.to_hash)
149
150
  end
150
151
 
151
152
  if @client.authorization.refresh_token && @client.authorization.expired?
@@ -156,22 +157,7 @@ class GoogleExporter
156
157
 
157
158
  return @client.authorization.access_token
158
159
  end
159
-
160
- # Returns the session token
161
- def authWebCallback(tokenID)
162
- @client.authorization.fetch_access_token!
163
- # Persist the token here
164
- token_pair = if tokenID
165
- TokenPair.get(tokenID)
166
- else
167
- TokenPair.new
168
- end
169
- TokenPair.auto_migrate!
170
- token_pair.update_token!(@client.authorization)
171
- token_pair.save
172
-
173
- return token_pair.id
174
- end
160
+
175
161
 
176
162
  def authURI
177
163
  @client.authorization.authorization_uri.to_s
@@ -195,6 +181,13 @@ class GoogleExporter
195
181
  @client = client
196
182
  end
197
183
 
184
+ def newTokenPair
185
+ @client.authorization.fetch_access_token!
186
+ token = TokenPair.new(nil)
187
+ token.update_token!(@client.authorization)
188
+ return token
189
+ end
190
+
198
191
  private
199
192
 
200
193
  def dateTime(date, time)
@@ -7,6 +7,7 @@ require 'nokogiri'
7
7
  class TestGoogleExporter < Test::Unit::TestCase
8
8
  def setup
9
9
  @exporter = GoogleExporter.new
10
+ @exporter.auth_cli
10
11
 
11
12
  auth = Poly::Auth.new
12
13
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyhoraire
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.1'
4
+ version: '1.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-16 00:00:00.000000000 Z
12
+ date: 2012-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &16402240 !ruby/object:Gem::Requirement
16
+ requirement: &19897620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *16402240
24
+ version_requirements: *19897620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: tzinfo
27
- requirement: &16401800 !ruby/object:Gem::Requirement
27
+ requirement: &19897180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *16401800
35
+ version_requirements: *19897180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: google-api-client
38
- requirement: &16401380 !ruby/object:Gem::Requirement
38
+ requirement: &19896760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *16401380
46
+ version_requirements: *19896760
47
47
  description: Retrieve schedule from Polytechnique de Montreal and exports it to different
48
48
  formats(only google calendar is suported at this time)
49
49
  email: charles.briere@polymtl.ca