typetalk 0.0.1 → 0.0.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.
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.0
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - jruby-19mode
data/README.md CHANGED
@@ -1,7 +1,13 @@
1
- # Typetalk
1
+ # Typetalk [![Build Status](https://secure.travis-ci.org/umakoz/typetalk.png)](http://travis-ci.org/umakoz/typetalk)
2
2
 
3
3
  A Ruby wrapper for [Typetalk API](http://developers.typetalk.in/api.html). The Typetalk gem provides an easy-to-use wrapper for Typetalk's REST APIs.
4
4
 
5
+ ## Requirements
6
+
7
+ * Ruby 1.9.3 or higher
8
+ * Typetalk account
9
+
10
+
5
11
 
6
12
 
7
13
 
data/lib/typetalk/api.rb CHANGED
@@ -5,7 +5,7 @@ module Typetalk
5
5
  class Api
6
6
  include Connection
7
7
 
8
- Dir[File.join(__dir__, 'api/*.rb')].each{|f| require f}
8
+ Dir[File.join(File.dirname(__FILE__), 'api/*.rb')].each{|f| require f}
9
9
  include Auth
10
10
  include User
11
11
  include Topic
@@ -15,8 +15,14 @@ module Typetalk
15
15
 
16
16
 
17
17
  def access_token
18
- @access_token ||= get_access_token
19
- @access_token['access_token']
18
+ if @access_token.nil?
19
+ @access_token = get_access_token
20
+ @access_token.expire_time = Time.now.to_i + @access_token.expires_in.to_i
21
+ elsif Time.now.to_i >= @access_token.expire_time
22
+ @access_token = update_access_token(@access_token.refresh_token)
23
+ @access_token.expire_time = Time.now.to_i + @access_token.expires_in.to_i
24
+ end
25
+ @access_token.access_token
20
26
  end
21
27
 
22
28
 
@@ -4,32 +4,54 @@ module Typetalk
4
4
  module Auth
5
5
  attr_accessor :authorization_code
6
6
 
7
- def get_access_token(client_id:nil, client_secret:nil, grant_type:nil, scope:nil, code:nil, redirect_uri:nil)
7
+ def get_access_token(options={})
8
+ options = {client_id:nil, client_secret:nil, grant_type:nil, scope:nil, code:nil, redirect_uri:nil}.merge(options)
9
+
8
10
  body = {
9
- client_id: client_id || Typetalk.config.client_id,
10
- client_secret: client_secret || Typetalk.config.client_secret,
11
- grant_type: grant_type || Typetalk.config.grant_type,
12
- scope: scope || Typetalk.config.scope,
11
+ client_id: options[:client_id] || Typetalk.config.client_id,
12
+ client_secret: options[:client_secret] || Typetalk.config.client_secret,
13
+ grant_type: options[:grant_type] || Typetalk.config.grant_type,
14
+ scope: options[:scope] || Typetalk.config.scope,
13
15
  }
14
16
 
15
17
  if body[:grant_type] == 'authorization_code'
16
- body[:code] = code || @authorization_code
17
- body[:redirect_uri] = redirect_uri || Typetalk.config.redirect_uri
18
+ body[:code] = options[:code] || @authorization_code
19
+ body[:redirect_uri] = options[:redirect_uri] || Typetalk.config.redirect_uri
20
+ end
21
+
22
+ response = connection.post do |req|
23
+ req.url 'https://typetalk.in/oauth2/access_token'
24
+ req.body = body
18
25
  end
26
+ parse_response(response)
27
+ end
28
+
29
+
30
+ def update_access_token(refresh_token, options={})
31
+ options = {client_id:nil, client_secret:nil}.merge(options)
32
+
33
+ body = {
34
+ client_id: options[:client_id] || Typetalk.config.client_id,
35
+ client_secret: options[:client_secret] || Typetalk.config.client_secret,
36
+ grant_type: 'refresh_token',
37
+ refresh_token: refresh_token
38
+ }
19
39
 
20
40
  response = connection.post do |req|
21
- req.url 'https://typetalk.in/oauth2/access_token'
22
- req.body = body
41
+ req.url 'https://typetalk.in/oauth2/access_token'
42
+ req.body = body
23
43
  end
24
44
  parse_response(response)
25
45
  end
26
46
 
27
47
 
28
- def self.authorize_url(client_id:nil, redirect_uri:nil, scope:nil)
48
+ def self.authorize_url(options={})
49
+ options = {client_id:nil, redirect_uri:nil, scope:nil}.merge(options)
50
+
29
51
  params = {
30
- client_id: client_id || Typetalk.config.client_id,
31
- redirect_uri: redirect_uri || Typetalk.config.redirect_uri,
32
- scope: scope || Typetalk.config.scope,
52
+ client_id: options[:client_id] || Typetalk.config.client_id,
53
+ redirect_uri: options[:redirect_uri] || Typetalk.config.redirect_uri,
54
+ scope: options[:scope] || Typetalk.config.scope,
33
55
  response_type: 'code',
34
56
  }
35
57
  url = URI.parse('https://typetalk.in/oauth2/authorize')
@@ -3,21 +3,25 @@ module Typetalk
3
3
 
4
4
  module Mention
5
5
 
6
- def get_mentions(token:nil, from:nil, unread:nil)
6
+ def get_mentions(options={})
7
+ options = {token:nil, from:nil, unread:nil}.merge(options)
8
+
7
9
  response = connection.get do |req|
8
10
  req.url "#{endpoint}/mentions"
9
- req.params[:access_token] = token || access_token
10
- req.params[:from] = from unless from.nil?
11
- req.params[:unread] = unread unless unread.nil?
11
+ req.params[:access_token] = options[:token] || access_token
12
+ req.params[:from] = options[:from] unless options[:from].nil?
13
+ req.params[:unread] = options[:unread] unless options[:unread].nil?
12
14
  end
13
15
  parse_response(response)
14
16
  end
15
17
 
16
18
 
17
- def read_mention(mention_id, token:nil)
19
+ def read_mention(mention_id, options={})
20
+ options = {token:nil}.merge(options)
21
+
18
22
  response = connection.put do |req|
19
23
  req.url "#{endpoint}/mentions/#{mention_id}"
20
- req.params[:access_token] = token || access_token
24
+ req.params[:access_token] = options[:token] || access_token
21
25
  end
22
26
  parse_response(response)
23
27
  end
@@ -5,74 +5,88 @@ module Typetalk
5
5
 
6
6
  module Message
7
7
 
8
- def post_message(topic_id, message, token:nil, reply_to:nil, file_keys:nil, talk_ids:nil)
8
+ def post_message(topic_id, message, options={})
9
+ options = {token:nil, reply_to:nil, file_keys:nil, talk_ids:nil}.merge(options)
10
+
9
11
  response = connection.post do |req|
10
12
  req.url "#{endpoint}/topics/#{topic_id}"
11
- req.params[:access_token] = token || access_token
13
+ req.params[:access_token] = options[:token] || access_token
12
14
  body = {}
13
15
  body[:message] = message
14
- body[:replyTo] = reply_to unless reply_to.nil?
15
- body.merge! to_request_params('fileKeys', file_keys)
16
- body.merge! to_request_params('talkIds', talk_ids)
16
+ body[:replyTo] = options[:reply_to] unless options[:reply_to].nil?
17
+ body.merge! to_request_params(:fileKeys, options[:file_keys])
18
+ body.merge! to_request_params(:talkIds, options[:talk_ids])
17
19
  req.body = body
18
20
  end
19
21
  parse_response(response)
20
22
  end
21
23
 
22
24
 
23
- def upload_attachment(topic_id, file, token:nil)
25
+ def upload_attachment(topic_id, file, options={})
26
+ options = {token:nil}.merge(options)
27
+
24
28
  raise InvalidFileSize if File.size(file) > 10485760 # > 10MB
25
29
 
26
30
  response = connection(multipart:true).post do |req|
27
31
  req.url "#{endpoint}/topics/#{topic_id}/attachments"
28
- req.params[:access_token] = token || access_token
32
+ req.params[:access_token] = options[:token] || access_token
29
33
  req.body = { file: Faraday::UploadIO.new(file, MIME::Types.type_for(file).first.to_s) }
30
34
  end
31
35
  parse_response(response)
32
36
  end
33
37
 
34
38
 
35
- def get_message(topic_id, post_id, token:nil)
39
+ def get_message(topic_id, post_id, options={})
40
+ options = {token:nil}.merge(options)
41
+
36
42
  response = connection.get do |req|
37
43
  req.url "#{endpoint}/topics/#{topic_id}/posts/#{post_id}"
38
- req.params[:access_token] = token || access_token
44
+ req.params[:access_token] = options[:token] || access_token
39
45
  end
40
46
  parse_response(response)
41
47
  end
42
48
 
43
49
 
44
- def remove_message(topic_id, post_id, token:nil)
50
+ def remove_message(topic_id, post_id, options={})
51
+ options = {token:nil}.merge(options)
52
+
45
53
  response = connection.delete do |req|
46
54
  req.url "#{endpoint}/topics/#{topic_id}/posts/#{post_id}"
47
- req.params[:access_token] = token || access_token
55
+ req.params[:access_token] = options[:token] || access_token
48
56
  end
49
57
  parse_response(response)
50
58
  response.status == 200
51
59
  end
52
60
 
53
61
 
54
- def like_message(topic_id, post_id, token:nil)
62
+ def like_message(topic_id, post_id, options={})
63
+ options = {token:nil}.merge(options)
64
+
55
65
  response = connection.post do |req|
56
66
  req.url "#{endpoint}/topics/#{topic_id}/posts/#{post_id}/like"
57
- req.params[:access_token] = token || access_token
67
+ req.params[:access_token] = options[:token] || access_token
58
68
  end
59
69
  parse_response(response)
60
70
  end
61
71
 
62
72
 
63
- def unlike_message(topic_id, post_id, token:nil)
73
+ def unlike_message(topic_id, post_id, options={})
74
+ options = {token:nil}.merge(options)
75
+
64
76
  response = connection.delete do |req|
65
77
  req.url "#{endpoint}/topics/#{topic_id}/posts/#{post_id}/like"
66
- req.params[:access_token] = token || access_token
78
+ req.params[:access_token] = options[:token] || access_token
67
79
  end
68
80
  parse_response(response)
69
81
  end
70
82
 
71
83
 
72
- def read_message(topic_id, post_id=nil, token:nil)
84
+ def read_message(topic_id, post_id=nil, options={})
85
+ options = {token:nil}.merge(options)
86
+
73
87
  response = connection.post do |req|
74
88
  req.url "#{endpoint}/bookmark/save"
75
- req.params[:access_token] = token || access_token
89
+ req.params[:access_token] = options[:token] || access_token
76
90
  body = {}
77
91
  body[:topicId] = topic_id
78
92
  body[:postId] = post_id unless post_id.nil?
@@ -3,28 +3,34 @@ module Typetalk
3
3
 
4
4
  module Notification
5
5
 
6
- def get_notifications(token:nil)
6
+ def get_notifications(options={})
7
+ options = {token:nil}.merge(options)
8
+
7
9
  response = connection.get do |req|
8
10
  req.url "#{endpoint}/notifications"
9
- req.params[:access_token] = token || access_token
11
+ req.params[:access_token] = options[:token] || access_token
10
12
  end
11
13
  parse_response(response)
12
14
  end
13
15
 
14
16
 
15
- def get_notifications_status(token:nil)
17
+ def get_notifications_status(options={})
18
+ options = {token:nil}.merge(options)
19
+
16
20
  response = connection.get do |req|
17
21
  req.url "#{endpoint}/notifications/status"
18
- req.params[:access_token] = token || access_token
22
+ req.params[:access_token] = options[:token] || access_token
19
23
  end
20
24
  parse_response(response)
21
25
  end
22
26
 
23
27
 
24
- def read_notifications(token:nil)
28
+ def read_notifications(options={})
29
+ options = {token:nil}.merge(options)
30
+
25
31
  response = connection.put do |req|
26
32
  req.url "#{endpoint}/notifications/open"
27
- req.params[:access_token] = token || access_token
33
+ req.params[:access_token] = options[:token] || access_token
28
34
  end
29
35
  parse_response(response)
30
36
  end
@@ -33,19 +39,23 @@ module Typetalk
33
39
 
34
40
 
35
41
 
36
- def accept_team(team_id, invite_team_id, token:nil)
42
+ def accept_team(team_id, invite_team_id, options={})
43
+ options = {token:nil}.merge(options)
44
+
37
45
  response = connection.post do |req|
38
46
  req.url "#{endpoint}/teams/#{team_id}/members/invite/#{invite_team_id}/accept"
39
- req.params[:access_token] = token || access_token
47
+ req.params[:access_token] = options[:token] || access_token
40
48
  end
41
49
  parse_response(response)
42
50
  end
43
51
 
44
52
 
45
- def decline_team(team_id, invite_team_id, token:nil)
53
+ def decline_team(team_id, invite_team_id, options={})
54
+ options = {token:nil}.merge(options)
55
+
46
56
  response = connection.post do |req|
47
57
  req.url "#{endpoint}/teams/#{team_id}/members/invite/#{invite_team_id}/decline"
48
- req.params[:access_token] = token || access_token
58
+ req.params[:access_token] = options[:token] || access_token
49
59
  end
50
60
  parse_response(response)
51
61
  end
@@ -54,19 +64,23 @@ module Typetalk
54
64
 
55
65
 
56
66
 
57
- def accept_topic(topic_id, invite_topic_id, token:nil)
67
+ def accept_topic(topic_id, invite_topic_id, options={})
68
+ options = {token:nil}.merge(options)
69
+
58
70
  response = connection.post do |req|
59
71
  req.url "#{endpoint}/topics/#{topic_id}/members/invite/#{invite_topic_id}/accept"
60
- req.params[:access_token] = token || access_token
72
+ req.params[:access_token] = options[:token] || access_token
61
73
  end
62
74
  parse_response(response)
63
75
  end
64
76
 
65
77
 
66
- def decline_topic(topic_id, invite_topic_id, token:nil)
78
+ def decline_topic(topic_id, invite_topic_id, options={})
79
+ options = {token:nil}.merge(options)
80
+
67
81
  response = connection.post do |req|
68
82
  req.url "#{endpoint}/topics/#{topic_id}/members/invite/#{invite_topic_id}/decline"
69
- req.params[:access_token] = token || access_token
83
+ req.params[:access_token] = options[:token] || access_token
70
84
  end
71
85
  parse_response(response)
72
86
  end
@@ -3,49 +3,59 @@ module Typetalk
3
3
 
4
4
  module Topic
5
5
 
6
- def get_topics(token:nil)
6
+ def get_topics(options={})
7
+ options = {token:nil}.merge(options)
8
+
7
9
  response = connection.get do |req|
8
10
  req.url "#{endpoint}/topics"
9
- req.params[:access_token] = token || access_token
11
+ req.params[:access_token] = options[:token] || access_token
10
12
  end
11
13
  parse_response(response)
12
14
  end
13
15
 
14
16
 
15
- def get_topic(topic_id, token:nil, count:nil, from:nil, direction:nil)
17
+ def get_topic(topic_id, options={})
18
+ options = {token:nil, count:nil, from:nil, direction:nil}.merge(options)
19
+
16
20
  response = connection.get do |req|
17
21
  req.url "#{endpoint}/topics/#{topic_id}"
18
- req.params[:access_token] = token || access_token
19
- req.params[:count] = count unless count.nil?
20
- req.params[:from] = from unless from.nil?
21
- req.params[:direction] = direction unless direction.nil?
22
+ req.params[:access_token] = options[:token] || access_token
23
+ req.params[:count] = options[:count] unless options[:count].nil?
24
+ req.params[:from] = options[:from] unless options[:from].nil?
25
+ req.params[:direction] = options[:direction] unless options[:direction].nil?
22
26
  end
23
27
  parse_response(response)
24
28
  end
25
29
 
26
30
 
27
- def get_topic_members(topic_id, token:nil)
31
+ def get_topic_members(topic_id, options={})
32
+ options = {token:nil}.merge(options)
33
+
28
34
  response = connection.get do |req|
29
35
  req.url "#{endpoint}/topics/#{topic_id}/members/status"
30
- req.params[:access_token] = token || access_token
36
+ req.params[:access_token] = options[:token] || access_token
31
37
  end
32
38
  parse_response(response)
33
39
  end
34
40
 
35
41
 
36
- def favorite_topic(topic_id, token:nil)
42
+ def favorite_topic(topic_id, options={})
43
+ options = {token:nil}.merge(options)
44
+
37
45
  response = connection.post do |req|
38
46
  req.url "#{endpoint}/topics/#{topic_id}/favorite"
39
- req.params[:access_token] = token || access_token
47
+ req.params[:access_token] = options[:token] || access_token
40
48
  end
41
49
  parse_response(response)
42
50
  end
43
51
 
44
52
 
45
- def unfavorite_topic(topic_id, token:nil)
53
+ def unfavorite_topic(topic_id, options={})
54
+ options = {token:nil}.merge(options)
55
+
46
56
  response = connection.delete do |req|
47
57
  req.url "#{endpoint}/topics/#{topic_id}/favorite"
48
- req.params[:access_token] = token || access_token
58
+ req.params[:access_token] = options[:token] || access_token
49
59
  end
50
60
  parse_response(response)
51
61
  end
@@ -3,10 +3,12 @@ module Typetalk
3
3
 
4
4
  module User
5
5
 
6
- def get_profile(token:nil)
6
+ def get_profile(options={})
7
+ options = {token:nil}.merge(options)
8
+
7
9
  response = connection.get do |req|
8
10
  req.url "#{endpoint}/profile"
9
- req.params[:access_token] = token || access_token
11
+ req.params[:access_token] = options[:token] || access_token
10
12
  end
11
13
  parse_response(response)
12
14
  end
@@ -16,9 +16,11 @@ module Typetalk
16
16
  }
17
17
  end
18
18
 
19
- def connection(multipart:false)
19
+ def connection(options={})
20
+ options = {multipart:nil}.merge(options)
21
+
20
22
  Faraday.new(connection_options) do |conn|
21
- conn.request :multipart if multipart
23
+ conn.request :multipart if options[:multipart]
22
24
  conn.use Faraday::Request::UrlEncoded
23
25
  conn.use Faraday::Adapter::NetHttp
24
26
  # conn.use Faraday::Response::ParseJson
@@ -1,3 +1,3 @@
1
1
  module Typetalk
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,40 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://typetalk.in/oauth2/access_token
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=client_credentials&scope=topic.read%2Ctopic.post%2Cmy
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Typetalk Rubygem 0.0.1
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Thu, 29 May 2014 04:42:34 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Strict-Transport-Security:
34
+ - max-age=2592000
35
+ body:
36
+ encoding: UTF-8
37
+ string: '{"access_token":"(ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
38
+ http_version:
39
+ recorded_at: Thu, 29 May 2014 04:42:34 GMT
40
+ recorded_with: VCR 2.9.0
@@ -0,0 +1,40 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://typetalk.in/oauth2/access_token
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=client_credentials&scope=topic.read%2Ctopic.post%2Cmy
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Typetalk Rubygem 0.0.1
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Thu, 29 May 2014 05:05:58 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Strict-Transport-Security:
34
+ - max-age=2592000
35
+ body:
36
+ encoding: UTF-8
37
+ string: '{"access_token":"(ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
38
+ http_version:
39
+ recorded_at: Thu, 29 May 2014 05:05:59 GMT
40
+ recorded_with: VCR 2.9.0
@@ -0,0 +1,77 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://typetalk.in/oauth2/access_token
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=client_credentials&scope=topic.read%2Ctopic.post%2Cmy
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Typetalk Rubygem 0.0.1
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Thu, 29 May 2014 05:12:37 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Strict-Transport-Security:
34
+ - max-age=2592000
35
+ body:
36
+ encoding: UTF-8
37
+ string: '{"access_token":"(ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
38
+ http_version:
39
+ recorded_at: Thu, 29 May 2014 05:12:38 GMT
40
+ - request:
41
+ method: post
42
+ uri: https://typetalk.in/oauth2/access_token
43
+ body:
44
+ encoding: UTF-8
45
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=refresh_token&refresh_token=(REFRESH_TOKEN)
46
+ headers:
47
+ Accept:
48
+ - application/json; charset=utf-8
49
+ User-Agent:
50
+ - Typetalk Rubygem 0.0.1
51
+ Content-Type:
52
+ - application/x-www-form-urlencoded
53
+ Accept-Encoding:
54
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
55
+ response:
56
+ status:
57
+ code: 200
58
+ message: OK
59
+ headers:
60
+ Server:
61
+ - nginx
62
+ Date:
63
+ - Thu, 29 May 2014 05:12:38 GMT
64
+ Content-Type:
65
+ - application/json; charset=utf-8
66
+ Transfer-Encoding:
67
+ - chunked
68
+ Connection:
69
+ - keep-alive
70
+ Strict-Transport-Security:
71
+ - max-age=2592000
72
+ body:
73
+ encoding: UTF-8
74
+ string: '{"access_token":"(UPDATED_ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
75
+ http_version:
76
+ recorded_at: Thu, 29 May 2014 05:12:38 GMT
77
+ recorded_with: VCR 2.9.0
@@ -0,0 +1,77 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://typetalk.in/oauth2/access_token
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=client_credentials&scope=topic.read%2Ctopic.post%2Cmy
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Typetalk Rubygem 0.0.1
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Thu, 29 May 2014 05:11:57 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Strict-Transport-Security:
34
+ - max-age=2592000
35
+ body:
36
+ encoding: UTF-8
37
+ string: '{"access_token":"(ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
38
+ http_version:
39
+ recorded_at: Thu, 29 May 2014 05:11:57 GMT
40
+ - request:
41
+ method: post
42
+ uri: https://typetalk.in/oauth2/access_token
43
+ body:
44
+ encoding: UTF-8
45
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=refresh_token&refresh_token=(REFRESH_TOKEN)
46
+ headers:
47
+ Accept:
48
+ - application/json; charset=utf-8
49
+ User-Agent:
50
+ - Typetalk Rubygem 0.0.1
51
+ Content-Type:
52
+ - application/x-www-form-urlencoded
53
+ Accept-Encoding:
54
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
55
+ response:
56
+ status:
57
+ code: 200
58
+ message: OK
59
+ headers:
60
+ Server:
61
+ - nginx
62
+ Date:
63
+ - Thu, 29 May 2014 05:11:58 GMT
64
+ Content-Type:
65
+ - application/json; charset=utf-8
66
+ Transfer-Encoding:
67
+ - chunked
68
+ Connection:
69
+ - keep-alive
70
+ Strict-Transport-Security:
71
+ - max-age=2592000
72
+ body:
73
+ encoding: UTF-8
74
+ string: '{"access_token":"(ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
75
+ http_version:
76
+ recorded_at: Thu, 29 May 2014 05:11:58 GMT
77
+ recorded_with: VCR 2.9.0
@@ -0,0 +1,77 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://typetalk.in/oauth2/access_token
6
+ body:
7
+ encoding: UTF-8
8
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=client_credentials&scope=topic.read%2Ctopic.post%2Cmy
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Typetalk Rubygem 0.0.1
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Server:
24
+ - nginx
25
+ Date:
26
+ - Thu, 29 May 2014 04:12:51 GMT
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Transfer-Encoding:
30
+ - chunked
31
+ Connection:
32
+ - keep-alive
33
+ Strict-Transport-Security:
34
+ - max-age=2592000
35
+ body:
36
+ encoding: UTF-8
37
+ string: '{"access_token":"(ACCESS_TOKEN)","expires_in":3600,"scope":"topic.read,topic.post,my","refresh_token":"(REFRESH_TOKEN)","token_type":"Bearer"}'
38
+ http_version:
39
+ recorded_at: Thu, 29 May 2014 04:12:51 GMT
40
+ - request:
41
+ method: post
42
+ uri: https://typetalk.in/oauth2/access_token
43
+ body:
44
+ encoding: UTF-8
45
+ string: client_id=(CLIENT_ID)&client_secret=(CLIENT_SECRET)&grant_type=refresh_token&refresh_token=dummy_token
46
+ headers:
47
+ Accept:
48
+ - application/json; charset=utf-8
49
+ User-Agent:
50
+ - Typetalk Rubygem 0.0.1
51
+ Content-Type:
52
+ - application/x-www-form-urlencoded
53
+ Accept-Encoding:
54
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
55
+ response:
56
+ status:
57
+ code: 401
58
+ message: Unauthorized
59
+ headers:
60
+ Server:
61
+ - nginx
62
+ Date:
63
+ - Thu, 29 May 2014 04:12:52 GMT
64
+ Content-Type:
65
+ - application/json; charset=utf-8
66
+ Content-Length:
67
+ - '56'
68
+ Connection:
69
+ - keep-alive
70
+ Www-Authenticate:
71
+ - Bearer error="invalid_grant", error_description="NotFound"
72
+ body:
73
+ encoding: UTF-8
74
+ string: '{"error":"invalid_grant","error_description":"NotFound"}'
75
+ http_version:
76
+ recorded_at: Thu, 29 May 2014 04:12:52 GMT
77
+ recorded_with: VCR 2.9.0
data/spec/spec_helper.rb CHANGED
@@ -16,6 +16,7 @@ VCR.configure do |c|
16
16
  c.before_record do |i|
17
17
  i.request.body.sub!(/(&?client_id=)[^&]+/, '\1(CLIENT_ID)')
18
18
  i.request.body.sub!(/(&?client_secret=)[^&]+/, '\1(CLIENT_SECRET)')
19
+ i.request.body.sub!(/(&?refresh_token=)[^&]+/, '\1(REFRESH_TOKEN)')
19
20
  i.request.uri.sub!(/((\?|&)?access_token=)[^&]+/, '\1(ACCESS_TOKEN)')
20
21
 
21
22
  begin
@@ -55,6 +55,28 @@ describe Typetalk::Api::Auth do
55
55
 
56
56
 
57
57
 
58
+ describe '#update_access_token', :vcr do
59
+ it 'should get the correct resource by client_credentials' do
60
+ response = api.get_access_token
61
+
62
+ response = api.update_access_token(response.refresh_token)
63
+ expect(response).to be_a(Hashie::Mash)
64
+ expect(response.access_token).to eq('(ACCESS_TOKEN)')
65
+ expect(response.refresh_token).to eq('(REFRESH_TOKEN)')
66
+ expect(response.scope).to eq('topic.read,topic.post,my')
67
+ expect(response.token_type).to eq('Bearer')
68
+ expect(response.expires_in).to eq(3600)
69
+ end
70
+
71
+
72
+ it 'should raise error when refresh_token is wrong' do
73
+ response = api.get_access_token
74
+ expect{ api.update_access_token('dummy_token') }.to raise_error(Typetalk::InvalidRequest)
75
+ end
76
+ end
77
+
78
+
79
+
58
80
  describe '.authorize_url' do
59
81
  before do
60
82
  Typetalk.configure do |config|
@@ -33,8 +33,8 @@ describe Typetalk::Api::Message do
33
33
 
34
34
 
35
35
  it 'should get the correct resource for attachments' do
36
- attachment1 = api.upload_attachment(topic_id, File.join(__dir__, '../../fixtures/attachments/logo_typetalk.jpg'))
37
- attachment2 = api.upload_attachment(topic_id, File.join(__dir__, '../../fixtures/attachments/logo_cacoo.jpg'))
36
+ attachment1 = api.upload_attachment(topic_id, File.join(File.dirname(__FILE__), '../../fixtures/attachments/logo_typetalk.jpg'))
37
+ attachment2 = api.upload_attachment(topic_id, File.join(File.dirname(__FILE__), '../../fixtures/attachments/logo_cacoo.jpg'))
38
38
  response = api.post_message(topic_id, 'Test Message 2 - 4', file_keys:[attachment1.fileKey, attachment2.fileKey])
39
39
  expect(response).to be_a(Hashie::Mash)
40
40
  expect(response.post.message).to eq('Test Message 2 - 4')
@@ -71,7 +71,7 @@ describe Typetalk::Api::Message do
71
71
 
72
72
  describe '#upload_attachment', :vcr do
73
73
  it 'should get the correct resource' do
74
- response = api.upload_attachment(topic_id, File.join(__dir__, '../../fixtures/attachments/logo_typetalk.jpg'))
74
+ response = api.upload_attachment(topic_id, File.join(File.dirname(__FILE__), '../../fixtures/attachments/logo_typetalk.jpg'))
75
75
  expect(response).to be_a(Hashie::Mash)
76
76
  expect(response.fileName).to eq('logo_typetalk.jpg')
77
77
  expect(response.fileSize).to eq(7622)
@@ -80,12 +80,12 @@ describe Typetalk::Api::Message do
80
80
 
81
81
 
82
82
  it 'should raise error when topic_id is wrong' do
83
- expect{ api.upload_attachment('dummy', File.join(__dir__, '../../fixtures/attachments/logo_typetalk.jpg')) }.to raise_error(Typetalk::InvalidRequest)
83
+ expect{ api.upload_attachment('dummy', File.join(File.dirname(__FILE__), '../../fixtures/attachments/logo_typetalk.jpg')) }.to raise_error(Typetalk::InvalidRequest)
84
84
  end
85
85
 
86
86
 
87
87
  it 'should raise error when file size 10MB', vcr:false do
88
- file = File.join(__dir__, '../../fixtures/attachments/10mb.txt')
88
+ file = File.join(File.dirname(__FILE__), '../../fixtures/attachments/10mb.txt')
89
89
  File.write(file, 'a' * (10485760 + 1))
90
90
  expect{ api.upload_attachment(topic_id, file) }.to raise_error(Typetalk::InvalidFileSize)
91
91
  File.unlink(file)
@@ -0,0 +1,45 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Typetalk::Api do
5
+
6
+ let(:api) { Typetalk::Api.new }
7
+
8
+ describe '#access_token', :vcr do
9
+ it 'should get access_token' do
10
+ expect(api.instance_variable_get(:@access_token)).to be_nil
11
+
12
+ response = api.access_token
13
+ expect(response).to eq('(ACCESS_TOKEN)')
14
+
15
+ expect(api.instance_variable_get(:@access_token).expire_time).to eq(Time.now.to_i + 3600)
16
+ end
17
+
18
+
19
+ it 'should not update access_token' do
20
+ expect(api.instance_variable_get(:@access_token)).to be_nil
21
+
22
+ response = api.access_token
23
+ expect(response).to eq('(ACCESS_TOKEN)')
24
+
25
+ response = api.access_token
26
+ expect(response).to eq('(ACCESS_TOKEN)')
27
+ end
28
+
29
+
30
+ it 'should update access_token when access_token is expired' do
31
+ expect(api.instance_variable_get(:@access_token)).to be_nil
32
+
33
+ response = api.access_token
34
+ expect(response).to eq('(ACCESS_TOKEN)')
35
+
36
+ at = api.instance_variable_get(:@access_token)
37
+ at.expire_time = Time.now.to_i # expired
38
+ api.instance_variable_set(:@access_token, at)
39
+
40
+ response = api.access_token
41
+ expect(response).to eq('(UPDATED_ACCESS_TOKEN)')
42
+ end
43
+ end
44
+
45
+ end
data/typetalk.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["umakoz@gmail.com"]
11
11
  spec.summary = %q{A Ruby wrapper for Typetalk}
12
12
  spec.description = %q{A Ruby wrapper for Typetalk}
13
- spec.homepage = "https://github.com/umakoz/typetalk"
13
+ spec.homepage = "https://github.com/umakoz/typetalk-rb"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.required_ruby_version = '>= 2.0.0'
21
+ spec.required_ruby_version = '>= 1.9.3'
22
22
 
23
23
  spec.add_dependency "hashie"
24
24
  spec.add_dependency "faraday"
metadata CHANGED
@@ -1,60 +1,68 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typetalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - umakoz
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-19 00:00:00.000000000 Z
12
+ date: 2014-05-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: hashie
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: faraday
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: mime-types
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: bundler
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,71 +78,81 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rake
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - '>='
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: '0'
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - '>='
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: rspec
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: webmock
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
- - - '>='
115
+ - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
- - - '>='
123
+ - - ! '>='
109
124
  - !ruby/object:Gem::Version
110
125
  version: '0'
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: vcr
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
- - - '>='
131
+ - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '0'
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
- - - '>='
139
+ - - ! '>='
123
140
  - !ruby/object:Gem::Version
124
141
  version: '0'
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: awesome_print
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
- - - '>='
147
+ - - ! '>='
130
148
  - !ruby/object:Gem::Version
131
149
  version: '0'
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
- - - '>='
155
+ - - ! '>='
137
156
  - !ruby/object:Gem::Version
138
157
  version: '0'
139
158
  description: A Ruby wrapper for Typetalk
@@ -145,6 +164,7 @@ extra_rdoc_files: []
145
164
  files:
146
165
  - .gitignore
147
166
  - .rspec
167
+ - .travis.yml
148
168
  - Gemfile
149
169
  - LICENSE.txt
150
170
  - README.md
@@ -160,6 +180,9 @@ files:
160
180
  - lib/typetalk/connection.rb
161
181
  - lib/typetalk/error.rb
162
182
  - lib/typetalk/version.rb
183
+ - spec/cassettes/Typetalk_Api/_access_token/should_get_access_token.yml
184
+ - spec/cassettes/Typetalk_Api/_access_token/should_not_update_access_token.yml
185
+ - spec/cassettes/Typetalk_Api/_access_token/should_update_access_token_when_access_token_is_expired.yml
163
186
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_authorization_code.yml
164
187
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials.yml
165
188
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials_when_scope_changed.yml
@@ -167,6 +190,8 @@ files:
167
190
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_id_is_wrong.yml
168
191
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_secret_is_wrong.yml
169
192
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_redirect_uri_mismatch.yml
193
+ - spec/cassettes/Typetalk_Api_Auth/_update_access_token/should_get_the_correct_resource_by_client_credentials.yml
194
+ - spec/cassettes/Typetalk_Api_Auth/_update_access_token/should_raise_error_when_refresh_token_is_wrong.yml
170
195
  - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource.yml
171
196
  - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource_till_mention.yml
172
197
  - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_unread_resource.yml
@@ -229,32 +254,40 @@ files:
229
254
  - spec/typetalk/api/notification_spec.rb
230
255
  - spec/typetalk/api/topic_spec.rb
231
256
  - spec/typetalk/api/user_spec.rb
257
+ - spec/typetalk/api_spec.rb
232
258
  - typetalk.gemspec
233
- homepage: https://github.com/umakoz/typetalk
259
+ homepage: https://github.com/umakoz/typetalk-rb
234
260
  licenses:
235
261
  - MIT
236
- metadata: {}
237
262
  post_install_message:
238
263
  rdoc_options: []
239
264
  require_paths:
240
265
  - lib
241
266
  required_ruby_version: !ruby/object:Gem::Requirement
267
+ none: false
242
268
  requirements:
243
- - - '>='
269
+ - - ! '>='
244
270
  - !ruby/object:Gem::Version
245
- version: 2.0.0
271
+ version: 1.9.3
246
272
  required_rubygems_version: !ruby/object:Gem::Requirement
273
+ none: false
247
274
  requirements:
248
- - - '>='
275
+ - - ! '>='
249
276
  - !ruby/object:Gem::Version
250
277
  version: '0'
278
+ segments:
279
+ - 0
280
+ hash: 930648927955685077
251
281
  requirements: []
252
282
  rubyforge_project:
253
- rubygems_version: 2.0.14
283
+ rubygems_version: 1.8.23
254
284
  signing_key:
255
- specification_version: 4
285
+ specification_version: 3
256
286
  summary: A Ruby wrapper for Typetalk
257
287
  test_files:
288
+ - spec/cassettes/Typetalk_Api/_access_token/should_get_access_token.yml
289
+ - spec/cassettes/Typetalk_Api/_access_token/should_not_update_access_token.yml
290
+ - spec/cassettes/Typetalk_Api/_access_token/should_update_access_token_when_access_token_is_expired.yml
258
291
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_authorization_code.yml
259
292
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials.yml
260
293
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials_when_scope_changed.yml
@@ -262,6 +295,8 @@ test_files:
262
295
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_id_is_wrong.yml
263
296
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_secret_is_wrong.yml
264
297
  - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_redirect_uri_mismatch.yml
298
+ - spec/cassettes/Typetalk_Api_Auth/_update_access_token/should_get_the_correct_resource_by_client_credentials.yml
299
+ - spec/cassettes/Typetalk_Api_Auth/_update_access_token/should_raise_error_when_refresh_token_is_wrong.yml
265
300
  - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource.yml
266
301
  - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource_till_mention.yml
267
302
  - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_unread_resource.yml
@@ -324,3 +359,4 @@ test_files:
324
359
  - spec/typetalk/api/notification_spec.rb
325
360
  - spec/typetalk/api/topic_spec.rb
326
361
  - spec/typetalk/api/user_spec.rb
362
+ - spec/typetalk/api_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c8abe69ef420d358276adc435f463c3bcdbb1d17
4
- data.tar.gz: cf7b032089f7482505217065765e9b7614e37859
5
- SHA512:
6
- metadata.gz: 286c0578f142feff79ed45b1f1757e4bc15591301feba0dc4cfe116431e1f8f73efdb52bb10538966c858d24a9f024dbeda0a5bb1ac8943a6b1e282021b13cc8
7
- data.tar.gz: 6576852ef676d8745a7a9a3010040c3e5ee73f00830999f3692170275fd98caab156b902f396635a29271bc166832615e1feead36b9e11814668eacf484a0104