lperichon-contacts 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/contacts.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{lperichon-contacts}
5
+ s.version = "1.0.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.date = %q{2010-07-12}
9
+ s.files = [".gitmodules", "LICENSE", "README.markdown", "Rakefile", "contacts.gemspec", "lib/contacts.rb", "lib/contacts/consumer.rb", "lib/contacts/google.rb", "lib/contacts/oauth_consumer.rb", "lib/contacts/util.rb", "lib/contacts/version.rb", "lib/contacts/windows_live.rb", "lib/contacts/yahoo.rb", "rails/init.rb", "spec/contact_spec.rb", "spec/feeds/contacts.yml", "spec/feeds/flickr/auth.getFrob.xml", "spec/feeds/flickr/auth.getToken.xml", "spec/feeds/google-many.xml", "spec/feeds/google-single.xml", "spec/feeds/wl_contacts.xml", "spec/feeds/yh_contacts.txt", "spec/feeds/yh_credential.xml", "spec/flickr/auth_spec.rb", "spec/gmail/auth_spec.rb", "spec/gmail/fetching_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb", "spec/windows_live/windows_live_spec.rb", "spec/yahoo/yahoo_spec.rb"]
10
+ s.require_paths = ["lib"]
11
+ s.rubygems_version = %q{1.3.6}
12
+ s.summary = %q{Fetch users' contact lists without asking them to provide their passwords, as painlessly as possible.}
13
+
14
+ if s.respond_to? :specification_version then
15
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
16
+ s.specification_version = 3
17
+
18
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
19
+ else
20
+ end
21
+ else
22
+ end
23
+ end
@@ -46,7 +46,10 @@ module Contacts
46
46
  #
47
47
  configuration_attribute :force_origin
48
48
 
49
+ attr_accessor :wll
50
+
49
51
  def initialize(options={})
52
+ self.wll = WindowsLiveLogin.new
50
53
  @token_expires_at = nil
51
54
  @location_id = nil
52
55
  @delegation_token = nil
@@ -67,20 +70,12 @@ module Contacts
67
70
  end
68
71
 
69
72
  def authentication_url(target, options={})
70
- if force_origin
71
- context = target
72
- target = force_origin + URI.parse(target).path
73
- end
74
-
75
- url = "https://consent.live.com/Delegation.aspx"
76
- query = {
77
- 'ps' => 'Contacts.View',
78
- 'ru' => target,
79
- 'pl' => privacy_policy_url,
80
- 'app' => app_verifier,
81
- }
82
- query['appctx'] = context if context
83
- "#{url}?#{params_to_query(query)}"
73
+ wll.appid = self.application_id
74
+ wll.secret = self.secret_key
75
+ wll.securityalgorithm = 'wsignin1.0'
76
+ wll.policyurl = self.privacy_policy_url
77
+ wll.returnurl = target
78
+ wll.getConsentUrl('Contacts.Invite')
84
79
  end
85
80
 
86
81
  def forced_redirect_url(params)
@@ -107,9 +102,14 @@ module Contacts
107
102
  end
108
103
 
109
104
  def contacts(options={})
110
- return nil if @delegation_token.nil? || @token_expires_at < Time.now
105
+ @wll.secret = self.secret_key
106
+ token = @wll.processConsentToken(options['ConsentToken'])
107
+ location_id = token.locationid
108
+ delegation_token = token.delegationtoken
109
+ token_expires_at = token.expiry
110
+ return nil if delegation_token.nil? || token_expires_at < Time.now
111
111
  # TODO: Handle expired token.
112
- xml = request_contacts
112
+ xml = request_contacts(location_id, delegation_token)
113
113
  parse_xml(xml)
114
114
  end
115
115
 
@@ -164,11 +164,11 @@ module Contacts
164
164
  params
165
165
  end
166
166
 
167
- def request_contacts
167
+ def request_contacts(location_id, delegation_token)
168
168
  http = Net::HTTP.new('livecontacts.services.live.com', 443)
169
169
  http.use_ssl = true
170
- url = "/users/@L@#{@location_id}/rest/invitationsbyemail"
171
- authorization = "DelegatedToken dt=\"#{@delegation_token}\""
170
+ url = "/users/@L@#{location_id}/rest/invitationsbyemail"
171
+ authorization = "DelegatedToken dt=\"#{delegation_token}\""
172
172
  http.get(url, {"Authorization" => authorization}).body
173
173
  end
174
174
 
data/lib/contacts.rb CHANGED
@@ -82,4 +82,6 @@ module Contacts
82
82
  autoload :Google, 'contacts/google'
83
83
  autoload :Yahoo, 'contacts/yahoo'
84
84
  autoload :WindowsLive, 'contacts/windows_live'
85
+ autoload :WindowsLiveLogin, 'contacts/windowslivelogin'
86
+ autoload :WindowsLiveLogin, 'contacts/windowslivelogin'
85
87
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 2
9
- version: 1.0.2
8
+ - 3
9
+ version: 1.0.3
10
10
  platform: ruby
11
11
  authors: []
12
12
 
@@ -31,6 +31,7 @@ files:
31
31
  - LICENSE
32
32
  - README.markdown
33
33
  - Rakefile
34
+ - contacts.gemspec
34
35
  - lib/contacts.rb
35
36
  - lib/contacts/consumer.rb
36
37
  - lib/contacts/google.rb