totter 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,12 +4,78 @@ module Totter
4
4
  module Timelines
5
5
  # Get recent decisions from the global timeline.
6
6
  #
7
- # @param limit [Fixnum] Number of decisions to return.
7
+ # @param options [Hash] Parameters for returning selected items
8
+ # @option options [Numeric] :limit Number of items to return. Default is 20
9
+ # @option options [String] :since A user_id/decision_id pair in the format '1,15' when paging forward
10
+ # @option options [String] :until A user_id/decision_id pair in the format '1,15' when paging backwards
8
11
  # @return [Array]
9
12
  # @example
10
- # Seesaw.recent_decisions
11
- def global_timeline(limit = 10)
12
- get "timelines/global?limit=#{limit}"
13
+ # Seesaw.global_timeline(limit: 20, since: '1,15')
14
+ def global_timeline(options = default_options)
15
+ get "timelines/global", options
16
+ end
17
+
18
+ # Get recent decisions from a hashtag timeline
19
+ #
20
+ # @param hashtag [String] The hashtag to return
21
+ # @param options [Hash] Parameters for returning selected items
22
+ # @option options [Numeric] :limit Number of items to return. Default is 20
23
+ # @option options [String] :since A user_id/decision_id pair in the format '1,15' when paging forward
24
+ # @option options [String] :until A user_id/decision_id pair in the format '1,15' when paging backwards
25
+ # @return [Array]
26
+ # @example
27
+ # Seesaw.global_timeline(limit: 20, since: '1,15')
28
+ def hashtag_timeline(hashtag, options = default_options)
29
+ get "timelines/global", options.merge({hashtag: hashtag})
30
+ end
31
+
32
+ # Get recent decisions from a sticker timeline
33
+ #
34
+ # @param sticker [String] The sticker to return
35
+ # @param options [Hash] Parameters for returning selected items
36
+ # @option options [Numeric] :limit Number of items to return. Default is 20
37
+ # @option options [String] :since A user_id/decision_id pair in the format '1,15' when paging forward
38
+ # @option options [String] :until A user_id/decision_id pair in the format '1,15' when paging backwards
39
+ # @return [Array]
40
+ # @example
41
+ # Seesaw.global_timeline(limit: 20, since: '1,15')
42
+ def sticker_timeline(sticker, options = default_options)
43
+ get "timelines/global", options.merge({sticker: sticker})
44
+ end
45
+
46
+ # Search for published items
47
+ #
48
+ # @param query [String] The query to search for
49
+ # @param options [Hash] Parameters for returning selected items
50
+ # @option options [Numeric] :limit Number of items to return. Default is 20
51
+ # @option options [String] :since A user_id/decision_id pair in the format '1,15' when paging forward
52
+ # @option options [String] :until A user_id/decision_id pair in the format '1,15' when paging backwards
53
+ # @return [Array]
54
+ # @example
55
+ # Seesaw.global_timeline(limit: 20, since: '1,15')
56
+ def search_timeline(query, options = default_options)
57
+ get "timelines/search", options.merge({query: query})
58
+ end
59
+
60
+ # Get recent decisions from the flagged-for-review timeline
61
+ #
62
+ # @param options [Hash] Parameters for returning selected items
63
+ # @option options [Numeric] :limit Number of items to return. Default is 20
64
+ # @option options [String] :since A user_id/decision_id pair in the format '1,15' when paging forward
65
+ # @option options [String] :until A user_id/decision_id pair in the format '1,15' when paging backwards
66
+ # @return [Array]
67
+ # @example
68
+ # Seesaw.global_timeline(limit: 20, since: '1,15')
69
+ def flagged_timeline(options = default_options)
70
+ get "timelines/flagged", options
71
+ end
72
+
73
+ private
74
+
75
+ def default_options
76
+ {
77
+ limit: 20
78
+ }
13
79
  end
14
80
  end
15
81
  end
@@ -24,9 +24,8 @@ module Totter
24
24
  get "users/#{user}"
25
25
  end
26
26
 
27
- # Updates a given user
27
+ # Updates the authenticating user
28
28
  #
29
- # @param user_id [Numeric] A Seesaw user ID.
30
29
  # @param options [Hash] Properties to be updated
31
30
  # @option options [String] :given_name The given name of the user
32
31
  # @option options [String] :family_name The Family name of the user
data/lib/totter/client.rb CHANGED
@@ -3,6 +3,7 @@ require 'net/https'
3
3
  require 'uri'
4
4
  require 'multi_json'
5
5
  require 'hashie'
6
+ require 'addressable/uri'
6
7
 
7
8
  require 'totter/client/users'
8
9
  require 'totter/client/decisions'
@@ -74,8 +75,15 @@ module Totter
74
75
  end
75
76
 
76
77
  def request(method, path, params = nil)
78
+ uri = Addressable::URI.parse("#{self.base_url}#{path}")
79
+
80
+ # if the request requires parameters in the query string, merge them in
81
+ if params and !can_post_data?(method)
82
+ uri.query_values = (uri.query_values || {}).merge(params)
83
+ end
84
+
77
85
  # Build request
78
- request = build_request(method, URI.parse("#{self.base_url}#{path}"))
86
+ request = build_request(method, uri)
79
87
 
80
88
  # Add headers
81
89
  request['Authorization'] = "Bearer #{self.access_token}" if authenticated?
@@ -83,7 +91,7 @@ module Totter
83
91
  request['Content-Type'] = 'application/json'
84
92
 
85
93
  # Add params as JSON if they exist
86
- request.body = MultiJson.dump(params) if [:post, :put].include?(method) and params
94
+ request.body = MultiJson.dump(params) if can_post_data?(method) and params
87
95
 
88
96
  # Request
89
97
  response = http.request(request)
@@ -145,6 +153,10 @@ module Totter
145
153
  (200..299).include? response.code.to_i
146
154
  end
147
155
 
156
+ def can_post_data?(method)
157
+ [:post, :put].include?(method)
158
+ end
159
+
148
160
  [:get, :post, :put, :delete].each do |method|
149
161
  define_method method do |*args|
150
162
  json_request(method, *args)
@@ -1,4 +1,4 @@
1
1
  module Totter
2
2
  # Verion of the Totter gem
3
- VERSION = '0.2.2'
3
+ VERSION = '0.2.3'
4
4
  end
@@ -0,0 +1,51 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://localhost:5000/v1/timelines/flagged?limit=20
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Authorization:
15
+ - Bearer 9774e653f7b3c1de5f21b61adc08ba24
16
+ Content-Type:
17
+ - application/json
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ X-Pusher-Channel:
24
+ - timeline-flagged
25
+ Content-Type:
26
+ - application/json; charset=utf-8
27
+ X-Ua-Compatible:
28
+ - IE=Edge
29
+ Etag:
30
+ - ! '"0acd8cac74006491b795cea4a88fd4eb"'
31
+ Cache-Control:
32
+ - max-age=0, private, must-revalidate
33
+ X-Request-Id:
34
+ - 61a5061aaaceb232be0ca641b6035677
35
+ X-Runtime:
36
+ - '0.266770'
37
+ Connection:
38
+ - close
39
+ Server:
40
+ - thin 1.5.0 codename Knife
41
+ body:
42
+ encoding: US-ASCII
43
+ string: ! '[{"created_at":"2013-01-30T21:12:28Z","final_vote_id":null,"flag_count":1,"id":18,"is_private":false,"meta":{"is_binary":true,"question_display_text":"Is
44
+ bacon delicious?","question_display_html":"Is bacon delicious?","question_entities":[]},"published_at":"2013-01-30T21:12:28Z","question":"Is
45
+ bacon delicious?","updated_at":"2013-02-04T19:18:57Z","user_id":1,"pusher_channel":"decision-1-18","timeline_key":"1,18","analytics":{"views":0,"unique_viewers":0,"referrers":{},"votes":{},"total_votes":0},"user_vote":null,"choices":[{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":5,"meta":{"link_url":"http://seesaw.co","link_title":"Seesaw"},"position":1,"subject":"Test
46
+ Image","type":"ImageChoice","updated_at":"2013-01-30T21:12:28Z","image_uri":"https://recess-dev.s3.amazonaws.com/gotwalt-pro.sf.gotwalt.com/decisions/18/5/1359580348/photo.png"},{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":6,"meta":null,"position":2,"subject":null,"type":"NoChoice","updated_at":"2013-01-30T21:12:28Z"}],"invitations":[],"user":{"biography":null,"created_at":"2013-01-23T03:22:06Z","family_name":"Gotwalt","given_name":"Aaron","id":1,"meta":null,"moderated_decisions_count":null,"updated_at":"2013-02-04T19:29:42Z","username":null,"website":null,"avatar_url":"https://recess-dev.s3.amazonaws.com/default_avatars/v1/photo_1.png","full_name":"Aaron
47
+ Gotwalt","short_name":"Aaron G","display_name":"Aaron Gotwalt","short_display_name":"Aaron
48
+ G","analytics":{"votes":0,"decisions":0,"followers":0,"following":0}},"slug":"d/3I1H0y"}]'
49
+ http_version:
50
+ recorded_at: Mon, 04 Feb 2013 19:29:56 GMT
51
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,49 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://localhost:5000/v1/timelines/global?hashtag=test&limit=20
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Authorization:
15
+ - Bearer 9774e653f7b3c1de5f21b61adc08ba24
16
+ Content-Type:
17
+ - application/json
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ X-Pusher-Channel:
24
+ - timeline-hashtag-test
25
+ Content-Type:
26
+ - application/json; charset=utf-8
27
+ X-Ua-Compatible:
28
+ - IE=Edge
29
+ Etag:
30
+ - ! '"c1d0337dfe70d635647580d02353f205"'
31
+ Cache-Control:
32
+ - max-age=0, private, must-revalidate
33
+ X-Request-Id:
34
+ - a83418585d2c5d07038bcef9cb0d0486
35
+ X-Runtime:
36
+ - '0.337964'
37
+ Connection:
38
+ - close
39
+ Server:
40
+ - thin 1.5.0 codename Knife
41
+ body:
42
+ encoding: US-ASCII
43
+ string: ! '[{"created_at":"2013-01-30T21:12:28Z","final_vote_id":null,"flag_count":null,"id":18,"is_private":false,"meta":{"is_binary":true},"published_at":"2013-01-30T21:12:28Z","question":null,"updated_at":"2013-01-30T21:12:28Z","user_id":1,"pusher_channel":"decision-1-18","timeline_key":"1,18","analytics":{"views":0,"unique_viewers":0,"referrers":{},"votes":{},"total_votes":0},"user_vote":null,"choices":[{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":5,"meta":{"link_url":"http://seesaw.co","link_title":"Seesaw"},"position":1,"subject":"Test
44
+ Image","type":"ImageChoice","updated_at":"2013-01-30T21:12:28Z","image_uri":"https://recess-dev.s3.amazonaws.com/gotwalt-pro.sf.gotwalt.com/decisions/18/5/1359580348/photo.png"},{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":6,"meta":null,"position":2,"subject":null,"type":"NoChoice","updated_at":"2013-01-30T21:12:28Z"}],"invitations":[],"user":{"biography":null,"created_at":"2013-01-23T03:22:06Z","family_name":"Gotwalt","given_name":"Aaron","id":1,"meta":null,"moderated_decisions_count":null,"updated_at":"2013-02-03T06:41:56Z","username":null,"website":null,"avatar_url":"https://recess-dev.s3.amazonaws.com/default_avatars/v1/photo_1.png","full_name":"Aaron
45
+ Gotwalt","short_name":"Aaron G","display_name":"Aaron Gotwalt","short_display_name":"Aaron
46
+ G","analytics":{"votes":0,"decisions":0,"followers":0,"following":0}},"slug":"d/3I1H0y"}]'
47
+ http_version:
48
+ recorded_at: Mon, 04 Feb 2013 19:07:15 GMT
49
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,54 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://localhost:5000/v1/timelines/search?limit=20&query=bacon
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Authorization:
15
+ - Bearer 9774e653f7b3c1de5f21b61adc08ba24
16
+ Content-Type:
17
+ - application/json
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ X-Ua-Compatible:
26
+ - IE=Edge
27
+ Etag:
28
+ - ! '"9740321d7584c33d22f5bf297e767267"'
29
+ Cache-Control:
30
+ - max-age=0, private, must-revalidate
31
+ X-Request-Id:
32
+ - 8f9f928e84450131f026d85998866d15
33
+ X-Runtime:
34
+ - '0.053194'
35
+ Connection:
36
+ - close
37
+ Server:
38
+ - thin 1.5.0 codename Knife
39
+ body:
40
+ encoding: US-ASCII
41
+ string: ! '[{"created_at":"2013-01-30T21:14:26Z","final_vote_id":null,"flag_count":null,"id":19,"is_private":false,"meta":{"is_binary":true,"question_display_text":"Should
42
+ I add more bacon?","question_display_html":"Should I add more bacon?","question_entities":[]},"published_at":"2013-01-30T21:14:26Z","question":"Should
43
+ I add more bacon?","updated_at":"2013-02-04T19:17:43Z","user_id":1,"pusher_channel":"decision-1-19","timeline_key":"1,19","analytics":{"views":0,"unique_viewers":0,"referrers":{},"votes":{},"total_votes":0},"user_vote":null,"choices":[{"created_at":"2013-01-30T21:14:26Z","decision_id":19,"decision_user_id":1,"id":7,"meta":{"link_url":"http://seesaw.co","link_title":"Seesaw"},"position":1,"subject":"Test
44
+ Image","type":"ImageChoice","updated_at":"2013-01-30T21:14:26Z","image_uri":"https://recess-dev.s3.amazonaws.com/gotwalt-pro.sf.gotwalt.com/decisions/19/7/1359580466/photo.png"},{"created_at":"2013-01-30T21:14:26Z","decision_id":19,"decision_user_id":1,"id":8,"meta":null,"position":2,"subject":null,"type":"NoChoice","updated_at":"2013-01-30T21:14:26Z"}],"invitations":[],"user":{"biography":null,"created_at":"2013-01-23T03:22:06Z","family_name":"Gotwalt","given_name":"Aaron","id":1,"meta":null,"moderated_decisions_count":null,"updated_at":"2013-02-03T06:41:56Z","username":null,"website":null,"avatar_url":"https://recess-dev.s3.amazonaws.com/default_avatars/v1/photo_1.png","full_name":"Aaron
45
+ Gotwalt","short_name":"Aaron G","display_name":"Aaron Gotwalt","short_display_name":"Aaron
46
+ G","analytics":{"votes":0,"decisions":0,"followers":0,"following":0}},"slug":"d/0P082U"},{"created_at":"2013-01-30T21:12:28Z","final_vote_id":null,"flag_count":null,"id":18,"is_private":false,"meta":{"is_binary":true,"question_display_text":"Is
47
+ bacon delicious?","question_display_html":"Is bacon delicious?","question_entities":[]},"published_at":"2013-01-30T21:12:28Z","question":"Is
48
+ bacon delicious?","updated_at":"2013-02-04T19:17:31Z","user_id":1,"pusher_channel":"decision-1-18","timeline_key":"1,18","analytics":{"views":0,"unique_viewers":0,"referrers":{},"votes":{},"total_votes":0},"user_vote":null,"choices":[{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":5,"meta":{"link_url":"http://seesaw.co","link_title":"Seesaw"},"position":1,"subject":"Test
49
+ Image","type":"ImageChoice","updated_at":"2013-01-30T21:12:28Z","image_uri":"https://recess-dev.s3.amazonaws.com/gotwalt-pro.sf.gotwalt.com/decisions/18/5/1359580348/photo.png"},{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":6,"meta":null,"position":2,"subject":null,"type":"NoChoice","updated_at":"2013-01-30T21:12:28Z"}],"invitations":[],"user":{"biography":null,"created_at":"2013-01-23T03:22:06Z","family_name":"Gotwalt","given_name":"Aaron","id":1,"meta":null,"moderated_decisions_count":null,"updated_at":"2013-02-03T06:41:56Z","username":null,"website":null,"avatar_url":"https://recess-dev.s3.amazonaws.com/default_avatars/v1/photo_1.png","full_name":"Aaron
50
+ Gotwalt","short_name":"Aaron G","display_name":"Aaron Gotwalt","short_display_name":"Aaron
51
+ G","analytics":{"votes":0,"decisions":0,"followers":0,"following":0}},"slug":"d/3I1H0y"}]'
52
+ http_version:
53
+ recorded_at: Mon, 04 Feb 2013 19:18:03 GMT
54
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,49 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://localhost:5000/v1/timelines/global?limit=20&sticker=test
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Authorization:
15
+ - Bearer 9774e653f7b3c1de5f21b61adc08ba24
16
+ Content-Type:
17
+ - application/json
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ X-Pusher-Channel:
24
+ - timeline-hashtag-test
25
+ Content-Type:
26
+ - application/json; charset=utf-8
27
+ X-Ua-Compatible:
28
+ - IE=Edge
29
+ Etag:
30
+ - ! '"c1d0337dfe70d635647580d02353f205"'
31
+ Cache-Control:
32
+ - max-age=0, private, must-revalidate
33
+ X-Request-Id:
34
+ - a83418585d2c5d07038bcef9cb0d0486
35
+ X-Runtime:
36
+ - '0.337964'
37
+ Connection:
38
+ - close
39
+ Server:
40
+ - thin 1.5.0 codename Knife
41
+ body:
42
+ encoding: US-ASCII
43
+ string: ! '[{"created_at":"2013-01-30T21:12:28Z","final_vote_id":null,"flag_count":null,"id":18,"is_private":false,"meta":{"is_binary":true},"published_at":"2013-01-30T21:12:28Z","question":null,"updated_at":"2013-01-30T21:12:28Z","user_id":1,"pusher_channel":"decision-1-18","timeline_key":"1,18","analytics":{"views":0,"unique_viewers":0,"referrers":{},"votes":{},"total_votes":0},"user_vote":null,"choices":[{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":5,"meta":{"link_url":"http://seesaw.co","link_title":"Seesaw"},"position":1,"subject":"Test
44
+ Image","type":"ImageChoice","updated_at":"2013-01-30T21:12:28Z","image_uri":"https://recess-dev.s3.amazonaws.com/gotwalt-pro.sf.gotwalt.com/decisions/18/5/1359580348/photo.png"},{"created_at":"2013-01-30T21:12:28Z","decision_id":18,"decision_user_id":1,"id":6,"meta":null,"position":2,"subject":null,"type":"NoChoice","updated_at":"2013-01-30T21:12:28Z"}],"invitations":[],"user":{"biography":null,"created_at":"2013-01-23T03:22:06Z","family_name":"Gotwalt","given_name":"Aaron","id":1,"meta":null,"moderated_decisions_count":null,"updated_at":"2013-02-03T06:41:56Z","username":null,"website":null,"avatar_url":"https://recess-dev.s3.amazonaws.com/default_avatars/v1/photo_1.png","full_name":"Aaron
45
+ Gotwalt","short_name":"Aaron G","display_name":"Aaron Gotwalt","short_display_name":"Aaron
46
+ G","analytics":{"votes":0,"decisions":0,"followers":0,"following":0}},"slug":"d/3I1H0y"}]'
47
+ http_version:
48
+ recorded_at: Mon, 04 Feb 2013 19:07:15 GMT
49
+ recorded_with: VCR 2.4.0
@@ -3,7 +3,35 @@ require 'test_helper'
3
3
  class TimelinesTest < Totter::TestCase
4
4
  def test_global
5
5
  VCR.use_cassette 'timelines/global' do
6
- assert_equal 15, Totter.global_timeline(15).length
6
+ assert_equal 15, Totter.global_timeline(limit: 15).length
7
+ end
8
+ end
9
+
10
+ def test_hashtags
11
+ VCR.use_cassette 'timelines/hashtags' do
12
+ client = local_client
13
+ assert_equal 1, local_client.hashtag_timeline('test').length
14
+ end
15
+ end
16
+
17
+ def test_stickers
18
+ VCR.use_cassette 'timelines/stickers' do
19
+ client = local_client
20
+ assert_equal 1, local_client.sticker_timeline('test').length
21
+ end
22
+ end
23
+
24
+ def test_search
25
+ VCR.use_cassette 'timelines/search' do
26
+ client = local_client
27
+ assert_equal 2, local_client.search_timeline('bacon').length
28
+ end
29
+ end
30
+
31
+ def test_flagged
32
+ VCR.use_cassette 'timelines/flagged' do
33
+ client = local_client
34
+ assert_equal 1, local_client.flagged_timeline.length
7
35
  end
8
36
  end
9
37
  end
data/totter.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |gem|
21
21
  gem.required_ruby_version = '>= 1.9.2'
22
22
  gem.add_dependency 'multi_json', '~> 1.5.0'
23
23
  gem.add_dependency 'hashie', '~> 1.2.0'
24
+ gem.add_dependency 'addressable', '~> 2.3.0'
24
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: totter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-02-03 00:00:00.000000000 Z
13
+ date: 2013-02-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: multi_json
@@ -44,6 +44,22 @@ dependencies:
44
44
  - - ~>
45
45
  - !ruby/object:Gem::Version
46
46
  version: 1.2.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: addressable
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.3.0
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 2.3.0
47
63
  description: Ruby gem for working with the Seesaw API.
48
64
  email:
49
65
  - sam@soff.es
@@ -86,7 +102,11 @@ files:
86
102
  - test/cassettes/decisions/show.yml
87
103
  - test/cassettes/decisions/unflag.yml
88
104
  - test/cassettes/slugs/show.yml
105
+ - test/cassettes/timelines/flagged.yml
89
106
  - test/cassettes/timelines/global.yml
107
+ - test/cassettes/timelines/hashtags.yml
108
+ - test/cassettes/timelines/search.yml
109
+ - test/cassettes/timelines/stickers.yml
90
110
  - test/cassettes/users/following.yml
91
111
  - test/cassettes/users/me.yml
92
112
  - test/cassettes/users/update.yml
@@ -146,7 +166,11 @@ test_files:
146
166
  - test/cassettes/decisions/show.yml
147
167
  - test/cassettes/decisions/unflag.yml
148
168
  - test/cassettes/slugs/show.yml
169
+ - test/cassettes/timelines/flagged.yml
149
170
  - test/cassettes/timelines/global.yml
171
+ - test/cassettes/timelines/hashtags.yml
172
+ - test/cassettes/timelines/search.yml
173
+ - test/cassettes/timelines/stickers.yml
150
174
  - test/cassettes/users/following.yml
151
175
  - test/cassettes/users/me.yml
152
176
  - test/cassettes/users/update.yml