storify 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/lib/storify/apierror.rb +11 -9
- data/lib/storify/client.rb +99 -72
- data/lib/storify/element.rb +41 -39
- data/lib/storify/pager.rb +35 -33
- data/lib/storify/story.rb +31 -29
- data/lib/storify.rb +13 -1
- data/spec/client_noauth_spec.rb +71 -0
- data/spec/storify_spec.rb +29 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee651fbc8ced627f9d5711d772ac0d998c4cea5f
|
4
|
+
data.tar.gz: de03b76abd522d5992ac684e6446222a299bf2cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b15afc86cbfda8cda37ca17da233df0b68065e8f0f107f445fc8f495747e77fa3fd49de10ef21629729460b3c372ea24da2074d2fea2e8f420442ec969e38dd0
|
7
|
+
data.tar.gz: ca3fff59c7a87850892817b60603dfbb26663a8516a1a0806d7b8b887a81d1eca198656dc5bff6f94f39aafbcc3508f9bb5d35dfdfad8f48509a40c0adb31096
|
data/lib/storify/apierror.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Storify
|
2
|
+
class ApiError < StandardError
|
3
|
+
attr_reader :status, :type, :message
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
def initialize(status, message, type = nil)
|
6
|
+
@type = type
|
7
|
+
@status = status
|
8
|
+
@message = message
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def to_s
|
12
|
+
"#{self.status} #{self.type} #{self.message}"
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/storify/client.rb
CHANGED
@@ -2,101 +2,128 @@ require 'json'
|
|
2
2
|
require 'rest-client'
|
3
3
|
#RestClient.log = './restclient.log'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
module Storify
|
6
|
+
class Client
|
7
|
+
# define end of content example
|
8
|
+
EOC = {'content' => {'stories' => [], 'elements' => []}}
|
7
9
|
|
8
|
-
|
9
|
-
@api_key = api_key
|
10
|
-
@username = username
|
11
|
-
end
|
10
|
+
attr_reader :api_key, :username, :token
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
def initialize(api_key, username)
|
13
|
+
@api_key = api_key
|
14
|
+
@username = username
|
15
|
+
end
|
17
16
|
|
18
|
-
|
19
|
-
|
17
|
+
def auth(password, options: {})
|
18
|
+
endpoint = Storify::endpoint(version: options[:version], method: :auth)
|
19
|
+
data = call(endpoint, :POST, params: {password: password})
|
20
|
+
@token = data['content']['_token']
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
protocol: options[:protocol],
|
24
|
-
method: :userstories,
|
25
|
-
params: {':username' => username})
|
22
|
+
self
|
23
|
+
end
|
26
24
|
|
27
|
-
pager
|
28
|
-
|
25
|
+
def stories(pager: nil, options: {})
|
26
|
+
story_list(:stories, pager, options: options, use_auth: false)
|
27
|
+
end
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
def latest(pager: nil, options: {})
|
30
|
+
story_list(:latest, pager, options: options, use_auth: false)
|
31
|
+
end
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
def featured(pager: nil, options: {})
|
34
|
+
story_list(:featured, pager, options: options, use_auth: false)
|
35
|
+
end
|
37
36
|
|
38
|
-
|
39
|
-
|
37
|
+
def popular(pager: nil, options: {})
|
38
|
+
story_list(:popular, pager, options: options, use_auth: false)
|
39
|
+
end
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
def userstories(username = @username, pager: nil, options: {})
|
42
|
+
params = {':username' => username}
|
43
|
+
story_list(:userstories, pager, options: options, params: params)
|
44
|
+
end
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
def story(slug, username = @username, pager: nil, options: {})
|
47
|
+
params = {':username' => username, ':slug' => slug}
|
48
|
+
endpoint = Storify::endpoint(version: options[:version],
|
49
|
+
protocol: options[:protocol],
|
50
|
+
method: :userstory,
|
51
|
+
params: params)
|
50
52
|
|
51
|
-
|
52
|
-
story = nil
|
53
|
-
elements = []
|
53
|
+
pager = pager ||= Pager.new
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
story = Storify::Story.new(data['content']) if story.nil?
|
55
|
+
story = nil
|
56
|
+
elements = []
|
58
57
|
|
59
|
-
|
60
|
-
|
61
|
-
story.
|
62
|
-
end
|
58
|
+
begin
|
59
|
+
data = call(endpoint, :GET, paging: pager.to_hash)
|
60
|
+
story = Story.new(data['content']) if story.nil?
|
63
61
|
|
64
|
-
|
65
|
-
|
62
|
+
# create elements
|
63
|
+
data['content']['elements'].each do |e|
|
64
|
+
story.add_element(Element.new(e))
|
65
|
+
end
|
66
66
|
|
67
|
-
|
68
|
-
|
67
|
+
pager.next
|
68
|
+
end while pager.has_pages?(data['content']['elements'])
|
69
69
|
|
70
|
-
|
71
|
-
|
72
|
-
end
|
70
|
+
story
|
71
|
+
end
|
73
72
|
|
73
|
+
def authenticated
|
74
|
+
!@token.nil?
|
75
|
+
end
|
74
76
|
|
75
|
-
private
|
76
77
|
|
77
|
-
|
78
|
-
raw = nil
|
78
|
+
private
|
79
79
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
80
|
+
def story_list(method, pager, params: {}, options: {}, use_auth: true)
|
81
|
+
endpoint = Storify::endpoint(version: options[:version],
|
82
|
+
protocol: options[:protocol],
|
83
|
+
method: method,
|
84
|
+
params: params)
|
85
85
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
rescue => e
|
93
|
-
raw = e.response
|
86
|
+
pager = pager ||= Pager.new
|
87
|
+
stories = []
|
88
|
+
|
89
|
+
begin
|
90
|
+
data = call(endpoint, :GET, paging: pager.to_hash, use_auth: use_auth)
|
91
|
+
content = data['content']
|
94
92
|
|
95
|
-
|
96
|
-
|
97
|
-
|
93
|
+
content['stories'].each do |s|
|
94
|
+
stories << Story.new(s)
|
95
|
+
end
|
96
|
+
|
97
|
+
pager.next
|
98
|
+
end while pager.has_pages?(content['stories'])
|
99
|
+
|
100
|
+
stories
|
98
101
|
end
|
99
102
|
|
100
|
-
|
103
|
+
def call(endpoint, verb, params: {}, paging: {}, opts: {}, use_auth: true)
|
104
|
+
raw = nil
|
105
|
+
|
106
|
+
begin
|
107
|
+
# add paging and auth query params
|
108
|
+
params.merge!(paging)
|
109
|
+
params[:username] = @username
|
110
|
+
params[:api_key] = @api_key
|
111
|
+
params[:_token] = @token if (authenticated && use_auth)
|
112
|
+
|
113
|
+
case verb
|
114
|
+
when :POST
|
115
|
+
raw = RestClient.post endpoint, params, {:accept => :json}
|
116
|
+
when :GET
|
117
|
+
raw = RestClient.get endpoint, {:params => params}
|
118
|
+
end
|
119
|
+
rescue => e
|
120
|
+
data = JSON.parse(e.response)
|
121
|
+
error = data['error']
|
122
|
+
|
123
|
+
return Storify::error(data['code'], error['message'], error['type'], end_of_content: EOC)
|
124
|
+
end
|
125
|
+
|
126
|
+
JSON.parse(raw)
|
127
|
+
end
|
101
128
|
end
|
102
129
|
end
|
data/lib/storify/element.rb
CHANGED
@@ -2,51 +2,53 @@ require 'date'
|
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
4
|
# todo: split logic into separate source types
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
5
|
+
module Storify
|
6
|
+
class Storify::Element
|
7
|
+
attr_reader :type, :source, :link, :published, :author
|
8
|
+
attr_accessor :desc
|
9
|
+
|
10
|
+
def initialize(content)
|
11
|
+
@type = content['type']
|
12
|
+
@source = content['source']['name']
|
13
|
+
@link = content['permalink']
|
14
|
+
@published = DateTime.parse(content['posted_at'])
|
15
|
+
|
16
|
+
case @type
|
17
|
+
when 'image'
|
18
|
+
@desc = content['data'][@type]['caption']
|
19
|
+
|
20
|
+
if content['data'].has_key?('oembed')
|
21
|
+
@author = content['data']['oembed']['author_name']
|
22
|
+
else
|
23
|
+
@author = content['attribution']['name']
|
24
|
+
end
|
25
|
+
when 'text'
|
26
|
+
@desc = content['data']['text']
|
27
|
+
|
28
|
+
doc = Nokogiri::HTML(@desc)
|
29
|
+
@desc = doc.xpath("//text()").to_s
|
21
30
|
else
|
22
|
-
@
|
31
|
+
@desc = content['data'][@type]['description']
|
32
|
+
@author = content['source']['username']
|
33
|
+
@author = "@" + @author if @source.downcase == 'twitter'
|
23
34
|
end
|
24
|
-
when 'text'
|
25
|
-
@desc = content['data']['text']
|
26
|
-
|
27
|
-
doc = Nokogiri::HTML(@desc)
|
28
|
-
@desc = doc.xpath("//text()").to_s
|
29
|
-
else
|
30
|
-
@desc = content['data'][@type]['description']
|
31
|
-
@author = content['source']['username']
|
32
|
-
@author = "@" + @author if @source.downcase == 'twitter'
|
33
35
|
end
|
34
|
-
end
|
35
36
|
|
36
|
-
|
37
|
-
|
37
|
+
def to_s
|
38
|
+
out = ''
|
39
|
+
published = @published.to_date
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
case @source.downcase
|
42
|
+
when 'storify'
|
43
|
+
out << "\n#{@desc}\n"
|
44
|
+
out << ('-' * @desc.length) + "\n\n" if @desc.length < 50
|
45
|
+
when 'twitter'
|
46
|
+
out << "[#{@published.to_s}] #{@author}: #{@link}\n"
|
47
|
+
else
|
48
|
+
out << "#{@author} [#{@published.to_s}]: #{@link}\n"
|
49
|
+
end
|
46
50
|
|
47
|
-
out
|
51
|
+
out
|
48
52
|
end
|
49
|
-
|
50
|
-
out
|
51
53
|
end
|
52
54
|
end
|
data/lib/storify/pager.rb
CHANGED
@@ -1,46 +1,48 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Storify
|
2
|
+
class Pager
|
3
|
+
MIN_PAGE = 1
|
4
|
+
MAX_PER_PAGE = 50
|
4
5
|
|
5
|
-
|
6
|
+
attr_reader :page, :per_page, :max
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
def initialize(page: 1, per_page: 20, max: 0)
|
9
|
+
@max = max.to_i.abs
|
10
|
+
self.page=(page)
|
11
|
+
self.per_page=(per_page)
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
def per_page=(value)
|
15
|
+
@per_page = (value > MAX_PER_PAGE) ? MAX_PER_PAGE : value.to_i.abs
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
def next
|
19
|
+
self.page=(@page + 1)
|
20
|
+
self
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
def prev
|
24
|
+
self.page=(@page - 1)
|
25
|
+
self
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
def to_hash
|
29
|
+
{:page => @page, :per_page => @per_page}
|
30
|
+
end
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
def has_pages?(array = [])
|
33
|
+
return false unless array.is_a?(Array)
|
34
|
+
return false if (@page > @max && @max != 0)
|
34
35
|
|
35
|
-
|
36
|
-
|
36
|
+
array.length != 0
|
37
|
+
end
|
37
38
|
|
38
|
-
|
39
|
+
private
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
def page=(value)
|
42
|
+
return @page = MIN_PAGE if (value < MIN_PAGE)
|
43
|
+
return @page = (@max + 1) if ((value > @max) && @max != 0)
|
43
44
|
|
44
|
-
|
45
|
+
@page = value.to_i
|
46
|
+
end
|
45
47
|
end
|
46
48
|
end
|
data/lib/storify/story.rb
CHANGED
@@ -1,39 +1,41 @@
|
|
1
1
|
require 'date'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
3
|
+
module Storify
|
4
|
+
class Story
|
5
|
+
attr_reader :slug, :title, :desc, :link, :published, :author, :elements
|
6
|
+
|
7
|
+
def initialize(content)
|
8
|
+
@slug = content['slug']
|
9
|
+
@title = content['title']
|
10
|
+
@desc = content['description']
|
11
|
+
@link = content['permalink']
|
12
|
+
@author = content['author']['username']
|
13
|
+
|
14
|
+
unless content['date']['published'].nil?
|
15
|
+
@published = DateTime.parse(content['date']['published'])
|
16
|
+
end
|
17
|
+
|
18
|
+
@elements = []
|
15
19
|
end
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
def add_element(element)
|
21
|
-
@elements << element
|
22
|
-
end
|
21
|
+
def add_element(element)
|
22
|
+
@elements << element
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
def to_s
|
26
|
+
published = @published.nil? ? 'unpublished' : @published.to_date
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
out = "\n#{@title}\n"
|
29
|
+
out << ('-' * @title.length.to_i) + "\n"
|
30
|
+
out << "Date: #{published.to_s}\n"
|
31
|
+
out << "Author: #{@author}\n"
|
32
|
+
out << "Link: #{@link}\n"
|
33
|
+
out << "\n#{@desc} \n"
|
33
34
|
|
34
|
-
|
35
|
-
|
35
|
+
# serialize elements
|
36
|
+
elements.each {|e| out << e.to_s }
|
36
37
|
|
37
|
-
|
38
|
+
out
|
39
|
+
end
|
38
40
|
end
|
39
41
|
end
|
data/lib/storify.rb
CHANGED
@@ -8,8 +8,12 @@ module Storify
|
|
8
8
|
:v1 => {
|
9
9
|
:base => 'api.storify.com/v1',
|
10
10
|
:auth => '/auth',
|
11
|
+
:stories => '/stories',
|
11
12
|
:userstories => '/stories/:username',
|
12
|
-
:userstory => '/stories/:username/:slug'
|
13
|
+
:userstory => '/stories/:username/:slug',
|
14
|
+
:latest => '/stories/browse/latest',
|
15
|
+
:featured => '/stories/browse/featured',
|
16
|
+
:popular => '/stories/browse/popular'
|
13
17
|
}
|
14
18
|
}
|
15
19
|
|
@@ -26,6 +30,14 @@ module Storify
|
|
26
30
|
|
27
31
|
uri
|
28
32
|
end
|
33
|
+
|
34
|
+
def self.error(code, message, type, end_of_content: {})
|
35
|
+
unless message.downcase.include?('max')
|
36
|
+
raise Storify::ApiError.new(code, message, type)
|
37
|
+
end
|
38
|
+
|
39
|
+
end_of_content
|
40
|
+
end
|
29
41
|
end
|
30
42
|
|
31
43
|
require 'storify/story'
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# These methods did not work with authentication,
|
4
|
+
# so they have been forced to not use the auth token
|
5
|
+
|
6
|
+
describe "Storify::Client -- Unauthenticated" do
|
7
|
+
before(:each) do
|
8
|
+
@client = Storify::Client.new(@api_key, @username)
|
9
|
+
@options = {:version => :v1, :protocol => :insecure}
|
10
|
+
end
|
11
|
+
|
12
|
+
context "GET /stories" do
|
13
|
+
it "should get all stories until the maximum" do
|
14
|
+
@client.stories.length.should > 400
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should accept endpoint options (version, protocol)" do
|
18
|
+
@client.stories(options: @options).length.should > 400
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should accept paging options (Pager)" do
|
22
|
+
pager = Storify::Pager.new(page: 1, max: 2, per_page: 20)
|
23
|
+
@client.stories(pager: pager).length.should == 40
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "GET /stories/browse/latest" do
|
28
|
+
it "should get all the latest stories until the maximum" do
|
29
|
+
@client.latest.length.should > 400
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should accept endpoint options (version, protocol)" do
|
33
|
+
@client.latest(options: @options).length > 400
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should get the top 20 stories" do
|
37
|
+
pager = Storify::Pager.new(page: 1, max: 1, per_page: 20)
|
38
|
+
@client.latest(pager: pager).length.should == 20
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "GET /stories/browse/featured" do
|
43
|
+
it "should get all the featured stories until the maximum" do
|
44
|
+
@client.featured.length.should > 400
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should accept endpoint options (version, protocol)" do
|
48
|
+
@client.featured(options: @options).length > 400
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should get the top 20 featured stories" do
|
52
|
+
pager = Storify::Pager.new(page: 1, max: 1, per_page: 20)
|
53
|
+
@client.featured(pager: pager).length.should == 20
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "GET /stories/browse/popular" do
|
58
|
+
it "should get all the popular stories until the maximum" do
|
59
|
+
@client.popular.length.should > 400
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should accept endpoint options (version, protocol)" do
|
63
|
+
@client.popular(options: @options).length > 400
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should get the top 15 popular stories" do
|
67
|
+
p = Storify::Pager.new(page: 1, max: 1, per_page: 15)
|
68
|
+
@client.popular(pager: p).length.should == 15
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/spec/storify_spec.rb
CHANGED
@@ -38,6 +38,22 @@ describe Storify do
|
|
38
38
|
Storify::ENDPOINTS[:v1][:auth].should == "/auth"
|
39
39
|
end
|
40
40
|
|
41
|
+
it "should support the Stories endpoint" do
|
42
|
+
Storify::ENDPOINTS[:v1][:stories].should == "/stories"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should support the Latest Stories endpoint" do
|
46
|
+
Storify::ENDPOINTS[:v1][:latest].should == "/stories/browse/latest"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should support the Featured Stories endpoint" do
|
50
|
+
Storify::ENDPOINTS[:v1][:featured].should == "/stories/browse/featured"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should support the Popular Stories endpoint" do
|
54
|
+
Storify::ENDPOINTS[:v1][:popular].should == "/stories/browse/popular"
|
55
|
+
end
|
56
|
+
|
41
57
|
it "should support the User Stories endpoint" do
|
42
58
|
Storify::ENDPOINTS[:v1][:userstories].should == "/stories/:username"
|
43
59
|
end
|
@@ -76,4 +92,17 @@ describe Storify do
|
|
76
92
|
uri.should == 'http://api.storify.com/v1/stories/rtejpar'
|
77
93
|
end
|
78
94
|
end
|
95
|
+
|
96
|
+
context "API v1 Error Handling" do
|
97
|
+
it "should return an empty content block (if api max reached)" do
|
98
|
+
eoc = Storify::Client::EOC
|
99
|
+
content = Storify::error(400, '...Max...', 'bad request', end_of_content: eoc)
|
100
|
+
content.should == eoc
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should return an API error for a non-max case" do
|
104
|
+
eoc = Storify::Client::EOC
|
105
|
+
expect{Storify::error(400, '...', 'bad request', end_of_content: eoc)}.to raise_error(Storify::ApiError)
|
106
|
+
end
|
107
|
+
end
|
79
108
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: storify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rizwan Tejpar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/storify/story.rb
|
94
94
|
- lib/storify.rb
|
95
95
|
- spec/client_auth_spec.rb
|
96
|
+
- spec/client_noauth_spec.rb
|
96
97
|
- spec/client_spec.rb
|
97
98
|
- spec/pager_spec.rb
|
98
99
|
- spec/spec_helper.rb
|
@@ -123,6 +124,7 @@ specification_version: 4
|
|
123
124
|
summary: Storify API
|
124
125
|
test_files:
|
125
126
|
- spec/client_auth_spec.rb
|
127
|
+
- spec/client_noauth_spec.rb
|
126
128
|
- spec/client_spec.rb
|
127
129
|
- spec/pager_spec.rb
|
128
130
|
- spec/spec_helper.rb
|