soundcloud 0.1.8 → 0.1.9

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.
data/README.md CHANGED
@@ -106,6 +106,15 @@ The response is either a Hashie::Mash or an array of Hashie::Mashs. The mashs ex
106
106
  #### Soundcloud#client_id, client_secret, access_token, refresh_token, use_ssl?
107
107
  These methods are accessors for the stored options.
108
108
 
109
+ ### Soundcloud#on_exchange_token
110
+ A Proc passed to on_exchange_token will be called each time a token was successfully exchanged or refreshed
111
+
112
+ ### Soundcloud#expires_at
113
+ Returns a date based on the expires_in attribute returned from a token exchange.
114
+
115
+ ### Soundcloud#expired?
116
+ Will return true or false depending on if expires_at is in the past.
117
+
109
118
  #### Error Handling
110
119
  In case a request was not successful a Soundcloud::ResponseError will be raise.
111
120
  The original HTTParty response is available through Soundcloud::ResponseError#response.
@@ -15,7 +15,8 @@ class Soundcloud
15
15
  AUTHORIZE_PATH = '/connect'
16
16
  TOKEN_PATH = '/oauth2/token'
17
17
  DEFAULT_OPTIONS = {
18
- :site => 'soundcloud.com'
18
+ :site => 'soundcloud.com',
19
+ :on_exchange_token => lambda {}
19
20
  }
20
21
 
21
22
 
@@ -40,7 +41,12 @@ class Soundcloud
40
41
  def client_secret; @options[:client_secret]; end
41
42
  def access_token; @options[:access_token]; end
42
43
  def refresh_token; @options[:refresh_token]; end
43
- def redirect_uri; @options[:redirect_uri]; end
44
+ def redirect_uri; @options[:redirect_uri]; end
45
+ def expires_at; @options[:expires_at]; end
46
+
47
+ def expired?
48
+ (expires_at.nil? || expires_at < Time.now)
49
+ end
44
50
 
45
51
  def use_ssl?;
46
52
  !! @options[:use_ssl?] || access_token
@@ -72,9 +78,15 @@ class Soundcloud
72
78
  self.class.post("https://#{api_host}#{TOKEN_PATH}", :query => params)
73
79
  }
74
80
  @options.merge!(:access_token => response.access_token, :refresh_token => response.refresh_token)
81
+ @options[:expires_at] = Time.now + response.expires_in
82
+ @options[:on_exchange_token].call
75
83
  response
76
84
  end
77
-
85
+
86
+ def on_exchange_token(&block)
87
+ store_options(:on_exchange_token => block)
88
+ end
89
+
78
90
  private
79
91
  def handle_response(refreshing_enabled=true, &block)
80
92
  response = block.call
@@ -101,6 +113,7 @@ private
101
113
  @options ||= DEFAULT_OPTIONS.dup
102
114
  @options.merge! options
103
115
  end
116
+
104
117
 
105
118
  def construct_query_arguments(path_or_uri, options={})
106
119
  uri = URI.parse(path_or_uri)
@@ -1,3 +1,3 @@
1
1
  class Soundcloud
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soundcloud
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
10
- version: 0.1.8
9
+ - 9
10
+ version: 0.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Johannes Wagener
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-01 00:00:00 -08:00
18
+ date: 2011-02-11 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency