storify 0.0.9 → 0.0.10
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/client.rb +22 -2
- data/lib/storify.rb +4 -1
- data/spec/client_noauth_spec.rb +34 -0
- data/spec/client_spec.rb +25 -4
- data/spec/spec_helper.rb +1 -1
- data/spec/storify_spec.rb +12 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80ab1db50509835603c3e6c168b8e280609b56b8
|
4
|
+
data.tar.gz: 8ee9e89be0fd86fb103359ed310a2b08b83d2ca4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9150aaed0238077440089ff91343f388446662d2accf6a60764a30fe11ab36b14d3fa5f620b95111ee5d3470b0ebf795cfebb790cf5080adc8a7550d3e22185
|
7
|
+
data.tar.gz: 7da411bd9aec3aff5a5b131b00cc446535e7f7a5d7aa19afb2d665d584af2de3c3df9b9fafd1dceddd8c3ade7f31ef85aea087a17324bdcc67e4bfbe1aaecb1a
|
data/lib/storify/client.rb
CHANGED
@@ -41,6 +41,15 @@ module Storify
|
|
41
41
|
story_list(:popular, pager, options: options, use_auth: false)
|
42
42
|
end
|
43
43
|
|
44
|
+
def topic(topic, pager: nil, options: {})
|
45
|
+
story_list(:topic, pager, options: options, params: {':topic' => topic})
|
46
|
+
end
|
47
|
+
|
48
|
+
def search(criteria, pager: nil, options: {})
|
49
|
+
u = {'q' => criteria}
|
50
|
+
story_list(:search, pager, options: options, use_auth: false, uparams: u)
|
51
|
+
end
|
52
|
+
|
44
53
|
def userstories(username = @username, pager: nil, options: {})
|
45
54
|
params = {':username' => username}
|
46
55
|
story_list(:userstories, pager, options: options, params: params)
|
@@ -73,6 +82,17 @@ module Storify
|
|
73
82
|
story
|
74
83
|
end
|
75
84
|
|
85
|
+
def edit_slug(username = @username, old_slug, new_slug, options: {})
|
86
|
+
params = {':username' => username, ':slug' => old_slug}
|
87
|
+
endpoint = Storify::endpoint(version: options[:version],
|
88
|
+
protocol: options[:protocol],
|
89
|
+
method: :editslug,
|
90
|
+
params: params)
|
91
|
+
|
92
|
+
data = call(endpoint, :POST, params: {slug: new_slug})
|
93
|
+
data['content']['slug']
|
94
|
+
end
|
95
|
+
|
76
96
|
def authenticated
|
77
97
|
!@token.nil?
|
78
98
|
end
|
@@ -80,7 +100,7 @@ module Storify
|
|
80
100
|
|
81
101
|
private
|
82
102
|
|
83
|
-
def story_list(method, pager, params: {}, options: {}, use_auth: true)
|
103
|
+
def story_list(method, pager, params: {}, options: {}, use_auth: true, uparams: {})
|
84
104
|
endpoint = Storify::endpoint(version: options[:version],
|
85
105
|
protocol: options[:protocol],
|
86
106
|
method: method,
|
@@ -90,7 +110,7 @@ module Storify
|
|
90
110
|
stories = []
|
91
111
|
|
92
112
|
begin
|
93
|
-
data = call(endpoint, :GET, paging: pager.to_hash, use_auth: use_auth)
|
113
|
+
data = call(endpoint, :GET, paging: pager.to_hash, use_auth: use_auth, params: uparams)
|
94
114
|
content = data['content']
|
95
115
|
|
96
116
|
content['stories'].each do |s|
|
data/lib/storify.rb
CHANGED
@@ -13,7 +13,10 @@ module Storify
|
|
13
13
|
:userstory => '/stories/:username/:slug',
|
14
14
|
:latest => '/stories/browse/latest',
|
15
15
|
:featured => '/stories/browse/featured',
|
16
|
-
:popular => '/stories/browse/popular'
|
16
|
+
:popular => '/stories/browse/popular',
|
17
|
+
:topic => '/stories/browse/topic/:topic',
|
18
|
+
:search => '/stories/search',
|
19
|
+
:editslug => '/stories/:username/:slug/editslug'
|
17
20
|
}
|
18
21
|
}
|
19
22
|
|
data/spec/client_noauth_spec.rb
CHANGED
@@ -68,4 +68,38 @@ describe "Storify::Client -- Unauthenticated" do
|
|
68
68
|
@client.popular(pager: p).length.should == 15
|
69
69
|
end
|
70
70
|
end
|
71
|
+
|
72
|
+
context "GET /stories/browse/topic/:topic" do
|
73
|
+
it "should get all stories with a topic until the maximum" do
|
74
|
+
@client.topic('nfl-playoffs').length.should > 1
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should accept endpoint options (version, protocol)" do
|
78
|
+
@client.topic('nfl-playoffs', options: @options).length.should > 1
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should get the top 10 stories for a topic" do
|
82
|
+
p = Storify::Pager.new(page: 1, max: 1, per_page: 10)
|
83
|
+
@client.topic('nfl-playoffs', pager: p).length.should == 10
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should raise an exception if the topic is not found" do
|
87
|
+
expect{@client.topic('does-not-exist-topic')}.to raise_exception(Storify::ApiError)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context "GET /stories/search" do
|
92
|
+
it "should get all stories with a specified search criteria" do
|
93
|
+
@client.search('startups').length.should > 10
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should accept endpoint options (version, protocol)" do
|
97
|
+
@client.search('startups', options: @options).length.should > 10
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should get the first 5 stories about startups" do
|
101
|
+
p = Storify::Pager.new(page: 1, max: 1, per_page: 5)
|
102
|
+
@client.search('startups', pager: p).length.should == 5
|
103
|
+
end
|
104
|
+
end
|
71
105
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -53,17 +53,17 @@ describe Storify::Client do
|
|
53
53
|
|
54
54
|
context "GET /stories/:username/:slug" do
|
55
55
|
before(:all) do
|
56
|
-
puts "Enter a Story
|
57
|
-
@
|
56
|
+
puts "Enter a Story-Slug for your Account:"
|
57
|
+
@slug = STDIN.gets.chomp
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should get a specific story for a user (all pages)" do
|
61
|
-
@client.story(@
|
61
|
+
@client.story(@slug).elements.length.should == 3
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should accept endpoint options (version, protocol)" do
|
65
65
|
options = {:version => :v1, :protocol => :insecure}
|
66
|
-
@client.story(@
|
66
|
+
@client.story(@slug, options: options).elements.length.should == 3
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should accept paging options (Page)" do
|
@@ -75,6 +75,27 @@ describe Storify::Client do
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
context "POST /stories/:username/:story-slug/editslug" do
|
79
|
+
before(:all) do
|
80
|
+
puts "Enter a Story-Slug for your Account:"
|
81
|
+
@slug1 = STDIN.gets.chomp
|
82
|
+
|
83
|
+
puts "Enter a New Unique Story-Slug for your Account"
|
84
|
+
@slug2 = STDIN.gets.chomp
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should respond with the new slug name (on a successful change)" do
|
88
|
+
@client.edit_slug(@username, @slug1, @slug2).should == @slug2
|
89
|
+
@client.edit_slug(@username, @slug2, @slug1).should == @slug1
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should accept endpoint options (version, protocol)" do
|
93
|
+
opts = {:version => :v1, :protocol => :insecure}
|
94
|
+
@client.edit_slug(@username, @slug1, @slug2, options: opts).should == @slug2
|
95
|
+
@client.edit_slug(@username, @slug2, @slug1, options: opts).should == @slug1
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
78
99
|
it "should allow a story to be serialized as text" do
|
79
100
|
story = @client.story('austin-startup-digest-for-december-9-2014', 'joshuabaer')
|
80
101
|
story.should_not eql ""
|
data/spec/spec_helper.rb
CHANGED
data/spec/storify_spec.rb
CHANGED
@@ -54,6 +54,10 @@ describe Storify do
|
|
54
54
|
Storify::ENDPOINTS[:v1][:popular].should == "/stories/browse/popular"
|
55
55
|
end
|
56
56
|
|
57
|
+
it "should support Stories by Topic endpoint" do
|
58
|
+
Storify::ENDPOINTS[:v1][:topic].should == "/stories/browse/topic/:topic"
|
59
|
+
end
|
60
|
+
|
57
61
|
it "should support the User Stories endpoint" do
|
58
62
|
Storify::ENDPOINTS[:v1][:userstories].should == "/stories/:username"
|
59
63
|
end
|
@@ -61,6 +65,14 @@ describe Storify do
|
|
61
65
|
it "should support the Single Story endpoint" do
|
62
66
|
Storify::ENDPOINTS[:v1][:userstory].should == "/stories/:username/:slug"
|
63
67
|
end
|
68
|
+
|
69
|
+
it "should support the Edit Story Slug endpoint" do
|
70
|
+
Storify::ENDPOINTS[:v1][:editslug].should == "/stories/:username/:slug/editslug"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should support the Search Story endpoint" do
|
74
|
+
Storify::ENDPOINTS[:v1][:search].should == "/stories/search"
|
75
|
+
end
|
64
76
|
end
|
65
77
|
|
66
78
|
context "API Endpoint URI Builder:" do
|