storify 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
|