storify 0.0.13 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fixtures/vcr_cassettes/auth.yml +119 -0
- data/fixtures/vcr_cassettes/create.yml +71 -0
- data/fixtures/vcr_cassettes/delete.yml +63 -0
- data/fixtures/vcr_cassettes/edit_slug.yml +162 -0
- data/fixtures/vcr_cassettes/featured.yml +28991 -0
- data/fixtures/vcr_cassettes/latest.yml +13835 -0
- data/fixtures/vcr_cassettes/popular.yml +17002 -0
- data/fixtures/vcr_cassettes/profile.yml +86 -0
- data/fixtures/vcr_cassettes/profile_update.yml +238 -0
- data/fixtures/vcr_cassettes/publish.yml +352 -0
- data/fixtures/vcr_cassettes/save.yml +462 -0
- data/fixtures/vcr_cassettes/search.yml +4528 -0
- data/fixtures/vcr_cassettes/stories.yml +8505 -0
- data/fixtures/vcr_cassettes/story.yml +1194 -0
- data/fixtures/vcr_cassettes/topic.yml +31207 -0
- data/fixtures/vcr_cassettes/users.yml +1877 -0
- data/fixtures/vcr_cassettes/userstories.yml +843 -0
- data/lib/storify.rb +1 -1
- data/lib/storify/client.rb +30 -35
- data/lib/storify/storymeta.rb +2 -1
- data/lib/storify/string.rb +10 -0
- data/spec/client_auth_spec.rb +28 -15
- data/spec/client_edit_slug_spec.rb +30 -0
- data/spec/client_profile_spec.rb +19 -0
- data/spec/client_profile_update_spec.rb +57 -0
- data/spec/client_spec.rb +24 -237
- data/spec/client_stories_featured_spec.rb +28 -0
- data/spec/client_stories_latest_spec.rb +28 -0
- data/spec/client_stories_popular_spec.rb +28 -0
- data/spec/client_stories_search_spec.rb +29 -0
- data/spec/client_stories_spec.rb +28 -0
- data/spec/client_stories_topic_spec.rb +35 -0
- data/spec/client_story_create_spec.rb +40 -0
- data/spec/client_story_delete_spec.rb +19 -0
- data/spec/client_story_publish_spec.rb +74 -0
- data/spec/client_story_save_spec.rb +43 -0
- data/spec/client_story_spec.rb +46 -0
- data/spec/client_users_spec.rb +28 -0
- data/spec/client_userstories_spec.rb +32 -0
- data/spec/pager_spec.rb +41 -46
- data/spec/spec_helper.rb +41 -18
- data/spec/storify_spec.rb +73 -72
- metadata +97 -4
- data/spec/client_noauth_spec.rb +0 -120
data/spec/pager_spec.rb
CHANGED
@@ -1,85 +1,80 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Storify::Pager do
|
4
|
-
context "
|
5
|
-
it "
|
6
|
-
Storify::Pager.new(page: 10).page.
|
4
|
+
context ".page" do
|
5
|
+
it "optionally accepts a starting page" do
|
6
|
+
expect(Storify::Pager.new(page: 10).page).to eql 10
|
7
7
|
end
|
8
8
|
|
9
|
-
it "
|
10
|
-
Storify::Pager.new.page.
|
9
|
+
it "sets the default starting page to 1" do
|
10
|
+
expect(Storify::Pager.new.page).to eql 1
|
11
11
|
end
|
12
12
|
|
13
|
-
it "
|
14
|
-
|
15
|
-
pager.page.should == Storify::Pager::MIN_PAGE
|
13
|
+
it "limits the page to the API minimum" do
|
14
|
+
expect(Storify::Pager.new(page: -1).page).to eql Storify::Pager::MIN_PAGE
|
16
15
|
end
|
17
16
|
|
18
|
-
it "
|
19
|
-
|
20
|
-
pager.max.should == 20
|
17
|
+
it "optionally allows an artificial max page (inclusive)" do
|
18
|
+
expect(Storify::Pager.new(max: 20).max).to eql 20
|
21
19
|
end
|
22
20
|
|
23
|
-
it "
|
24
|
-
|
25
|
-
pager.max.should == 0
|
21
|
+
it "sets the default the page max to unlimited" do
|
22
|
+
expect(Storify::Pager.new.max).to eql 0
|
26
23
|
end
|
27
24
|
|
28
|
-
it "
|
29
|
-
|
30
|
-
pager.next.page.should == 2
|
25
|
+
it "allows a page to be advanced forward" do
|
26
|
+
expect(Storify::Pager.new.next.page).to eql 2
|
31
27
|
end
|
32
28
|
|
33
|
-
it "
|
34
|
-
|
35
|
-
pager.next.next.next.page.should == 3
|
29
|
+
it "does not allow a page to be advanced beyond max + 1" do
|
30
|
+
expect(Storify::Pager.new(max: 2).next.next.next.page).to eql 3
|
36
31
|
end
|
37
32
|
|
38
|
-
it "
|
39
|
-
|
40
|
-
pager.prev.prev.page.should == 1
|
33
|
+
it "allows a page to be advanced backward" do
|
34
|
+
expect(Storify::Pager.new(page: 2).prev.prev.page).to eql 1
|
41
35
|
end
|
42
36
|
end
|
43
37
|
|
44
|
-
context "
|
45
|
-
it "
|
46
|
-
Storify::Pager.new(per_page: 15).per_page.
|
38
|
+
context ".per_page" do
|
39
|
+
it "optionally accepts a per page option" do
|
40
|
+
expect(Storify::Pager.new(per_page: 15).per_page).to eql 15
|
47
41
|
end
|
48
42
|
|
49
|
-
it "
|
50
|
-
Storify::Pager.new.per_page.
|
43
|
+
it "sets the default per_page to 20" do
|
44
|
+
expect(Storify::Pager.new.per_page).to eql 20
|
51
45
|
end
|
52
46
|
|
53
|
-
it "
|
54
|
-
|
55
|
-
|
56
|
-
pager.per_page.should == Storify::Pager::MAX_PER_PAGE
|
47
|
+
it "limits per_page to the API maximum (constructor)" do
|
48
|
+
expect(Storify::Pager.new(per_page: 100).per_page).to eql Storify::Pager::MAX_PER_PAGE
|
49
|
+
end
|
57
50
|
|
58
|
-
|
51
|
+
it "limits per_page to the API maximum (setter)" do
|
52
|
+
pager = Storify::Pager.new
|
59
53
|
pager.per_page = 500
|
60
|
-
pager.per_page.
|
54
|
+
expect(pager.per_page).to eql Storify::Pager::MAX_PER_PAGE
|
61
55
|
end
|
62
56
|
end
|
63
57
|
|
64
|
-
context "
|
65
|
-
it "
|
58
|
+
context ".to_hash" do
|
59
|
+
it "hashifies pagination parameters" do
|
66
60
|
pager = Storify::Pager.new(page: 13, per_page: 25).to_hash
|
67
|
-
pager[:page].
|
68
|
-
pager[:per_page].
|
61
|
+
expect(pager[:page]).to eql 13
|
62
|
+
expect(pager[:per_page]).to eql 25
|
69
63
|
end
|
64
|
+
end
|
70
65
|
|
71
|
-
|
66
|
+
context ".has_pages?" do
|
67
|
+
it "knows if there are pages left based on content array size" do
|
72
68
|
data = {'content' => {'stories' => ['s1', 's2', 's3']}}
|
73
69
|
pager = Storify::Pager.new
|
74
|
-
|
75
|
-
pager.has_pages?(data['content'][
|
76
|
-
pager.has_pages?([]).
|
70
|
+
|
71
|
+
expect(pager.has_pages?(data['content']['stories'])).to be_true
|
72
|
+
expect(pager.has_pages?(data['content'][:invalid])).to be_false
|
73
|
+
expect(pager.has_pages?([])).to be_false
|
77
74
|
end
|
78
75
|
|
79
|
-
it "
|
80
|
-
|
81
|
-
pager.next.next.next
|
82
|
-
pager.has_pages?(['g']).should be_false
|
76
|
+
it "has no pages left once on the final page" do
|
77
|
+
expect(Storify::Pager.new(max: 2).next.next.next.has_pages?(['g'])).to be_false
|
83
78
|
end
|
84
79
|
end
|
85
80
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,27 +1,50 @@
|
|
1
|
-
require '
|
1
|
+
require 'webmock/rspec'
|
2
2
|
require 'io/console'
|
3
|
+
require 'storify'
|
4
|
+
require 'vcr'
|
5
|
+
require 'uri'
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
ENV['STORIFY_TOKEN'] = "mock__token"
|
8
|
+
ENV['STORIFY_SECRET'] = "mock_secret"
|
9
|
+
ENV['STORIFY_EMAIL'] = "mock_email"
|
10
|
+
ENV['STORIFY_TOK'] = "mock_token"
|
11
|
+
ENV['STORIFY_PASSWORD'] = "mock_password"
|
12
|
+
ENV['STORIFY_USERNAME'] = "rtejpar"
|
13
|
+
ENV['STORIFY_APIKEY'] = "mock_apikey"
|
8
14
|
|
9
|
-
# load user-specific keys or fallback to defaults
|
10
|
-
config.before(:all) do
|
11
|
-
begin
|
12
|
-
require File.dirname(__FILE__) + '/.userkey.rb'
|
13
|
-
@api_key = API_KEY
|
14
|
-
@username = USERNAME
|
15
|
-
rescue LoadError
|
16
|
-
@api_key = RSpec.configuration.api_key
|
17
|
-
@username = RSpec.configuration.api_usr
|
18
|
-
end
|
19
15
|
|
16
|
+
RSpec.configure do |config|
|
17
|
+
config.before(:all) do
|
18
|
+
@api_key = ENV['STORIFY_APIKEY']
|
19
|
+
@username = ENV['STORIFY_USERNAME']
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
def get_password
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
ENV['STORIFY_PASSWORD']
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_encoded_password
|
28
|
+
URI.encode_www_form_component(get_password)
|
29
|
+
end
|
30
|
+
|
31
|
+
VCR.configure do |config|
|
32
|
+
config.cassette_library_dir = 'fixtures/vcr_cassettes'
|
33
|
+
config.hook_into :webmock
|
34
|
+
config.filter_sensitive_data('mock__token') {ENV['STORIFY_TOKEN']}
|
35
|
+
config.filter_sensitive_data('mock_secret') {ENV['STORIFY_SECRET']}
|
36
|
+
config.filter_sensitive_data('mock_token') {ENV['STORIFY_TOK']}
|
37
|
+
config.filter_sensitive_data('mock_username') {ENV['STORIFY_USERNAME']}
|
38
|
+
config.filter_sensitive_data('mock_apikey') {ENV['STORIFY_APIKEY']}
|
39
|
+
config.filter_sensitive_data('mock_email') {ENV['STORIFY_EMAIL']}
|
40
|
+
|
41
|
+
config.filter_sensitive_data('mock_password') do |interaction|
|
42
|
+
get_encoded_password
|
43
|
+
end
|
44
|
+
|
45
|
+
config.default_cassette_options = { :record => :new_episodes, :match_requests_on => [:query, :uri, :method, :body] }
|
46
|
+
end
|
47
|
+
|
48
|
+
def vcr_ignore_protocol
|
49
|
+
[:host, :path, :method, :query, :body]
|
27
50
|
end
|
data/spec/storify_spec.rb
CHANGED
@@ -1,146 +1,147 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Storify do
|
4
|
-
context "API Protocols
|
5
|
-
it "
|
6
|
-
Storify::PROTOCOLS[:insecure].
|
4
|
+
context "API Protocols" do
|
5
|
+
it "supports http" do
|
6
|
+
expect(Storify::PROTOCOLS[:insecure]).to eql "http://"
|
7
7
|
end
|
8
8
|
|
9
|
-
it "
|
10
|
-
Storify::PROTOCOLS[:secure].
|
9
|
+
it "supports secure http" do
|
10
|
+
expect(Storify::PROTOCOLS[:secure]).to eql "https://"
|
11
11
|
end
|
12
12
|
|
13
|
-
it "
|
14
|
-
Storify::PROTOCOLS[:unknown].
|
13
|
+
it "defaults to secure http" do
|
14
|
+
expect(Storify::PROTOCOLS[:unknown]).to eql "https://"
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
context "API Versions
|
19
|
-
it "
|
20
|
-
Storify::ENDPOINTS[:v1].is_a?(Hash).
|
18
|
+
context "API Versions" do
|
19
|
+
it "supports v1" do
|
20
|
+
expect(Storify::ENDPOINTS[:v1].is_a?(Hash)).to be_true
|
21
21
|
end
|
22
22
|
|
23
|
-
it "
|
24
|
-
Storify::ENDPOINTS[:unknown].is_a?(Hash).
|
23
|
+
it "defaults to v1" do
|
24
|
+
expect(Storify::ENDPOINTS[:unknown].is_a?(Hash)).to be_true
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
context "API
|
29
|
-
it "
|
30
|
-
Storify::ENDPOINTS[:v1][:base].
|
28
|
+
context "API Endpoints" do
|
29
|
+
it "supports a base URL for a version" do
|
30
|
+
expect(Storify::ENDPOINTS[:v1][:base]).to eql "api.storify.com/v1"
|
31
31
|
end
|
32
32
|
|
33
|
-
it "
|
34
|
-
Storify::ENDPOINTS[:unknown][:unknown].
|
33
|
+
it "defaults to the base URL" do
|
34
|
+
expect(Storify::ENDPOINTS[:unknown][:unknown]).to eql "api.storify.com/v1"
|
35
35
|
end
|
36
36
|
|
37
|
-
it "
|
38
|
-
Storify::ENDPOINTS[:v1][:auth].
|
37
|
+
it "supports Authentication" do
|
38
|
+
expect(Storify::ENDPOINTS[:v1][:auth]).to eql "/auth"
|
39
39
|
end
|
40
40
|
|
41
|
-
it "
|
42
|
-
Storify::ENDPOINTS[:v1][:stories].
|
41
|
+
it "supports Stories" do
|
42
|
+
expect(Storify::ENDPOINTS[:v1][:stories]).to eql "/stories"
|
43
43
|
end
|
44
44
|
|
45
|
-
it "
|
46
|
-
Storify::ENDPOINTS[:v1][:latest].
|
45
|
+
it "supports Latest Stories" do
|
46
|
+
expect(Storify::ENDPOINTS[:v1][:latest]).to eql "/stories/browse/latest"
|
47
47
|
end
|
48
48
|
|
49
|
-
it "
|
50
|
-
Storify::ENDPOINTS[:v1][:featured].
|
49
|
+
it "supports Featured Stories" do
|
50
|
+
expect(Storify::ENDPOINTS[:v1][:featured]).to eql "/stories/browse/featured"
|
51
51
|
end
|
52
52
|
|
53
|
-
it "
|
54
|
-
Storify::ENDPOINTS[:v1][:popular].
|
53
|
+
it "supports Popular Stories" do
|
54
|
+
expect(Storify::ENDPOINTS[:v1][:popular]).to eql "/stories/browse/popular"
|
55
55
|
end
|
56
56
|
|
57
|
-
it "
|
58
|
-
Storify::ENDPOINTS[:v1][:topic].
|
57
|
+
it "supports Stories by Topic" do
|
58
|
+
expect(Storify::ENDPOINTS[:v1][:topic]).to eql "/stories/browse/topic/:topic"
|
59
59
|
end
|
60
60
|
|
61
|
-
it "
|
62
|
-
Storify::ENDPOINTS[:v1][:userstories].
|
61
|
+
it "supports User Stories" do
|
62
|
+
expect(Storify::ENDPOINTS[:v1][:userstories]).to eql "/stories/:username"
|
63
63
|
end
|
64
64
|
|
65
|
-
it "
|
66
|
-
Storify::ENDPOINTS[:v1][:userstory].
|
65
|
+
it "supports a Single Story" do
|
66
|
+
expect(Storify::ENDPOINTS[:v1][:userstory]).to eql "/stories/:username/:slug"
|
67
67
|
end
|
68
68
|
|
69
|
-
it "
|
70
|
-
Storify::ENDPOINTS[:v1][:editslug].
|
69
|
+
it "supports Editing a Story Slug" do
|
70
|
+
expect(Storify::ENDPOINTS[:v1][:editslug]).to eql "/stories/:username/:slug/editslug"
|
71
71
|
end
|
72
72
|
|
73
|
-
it "
|
74
|
-
Storify::ENDPOINTS[:v1][:search].
|
73
|
+
it "supports Searching for Stories" do
|
74
|
+
expect(Storify::ENDPOINTS[:v1][:search]).to eql "/stories/search"
|
75
75
|
end
|
76
76
|
|
77
|
-
it "
|
78
|
-
Storify::ENDPOINTS[:v1][:users].
|
77
|
+
it "supports Users" do
|
78
|
+
expect(Storify::ENDPOINTS[:v1][:users]).to eql "/users"
|
79
79
|
end
|
80
80
|
|
81
|
-
it "
|
82
|
-
Storify::ENDPOINTS[:v1][:userprofile].
|
81
|
+
it "supports User Profiles" do
|
82
|
+
expect(Storify::ENDPOINTS[:v1][:userprofile]).to eql "/users/:username"
|
83
83
|
end
|
84
84
|
|
85
|
-
it "
|
86
|
-
Storify::ENDPOINTS[:v1][:publish].
|
85
|
+
it "supports Publishing a Story" do
|
86
|
+
expect(Storify::ENDPOINTS[:v1][:publish]).to eql "/stories/:username/:slug/publish"
|
87
87
|
end
|
88
88
|
|
89
|
-
it "
|
90
|
-
Storify::ENDPOINTS[:v1][:update_profile].
|
89
|
+
it "supports Updating a User Profile" do
|
90
|
+
expect(Storify::ENDPOINTS[:v1][:update_profile]).to eql "/users/:username/update"
|
91
91
|
end
|
92
92
|
|
93
|
-
it "
|
94
|
-
Storify::ENDPOINTS[:v1][:save].
|
93
|
+
it "supports Saving a Story" do
|
94
|
+
expect(Storify::ENDPOINTS[:v1][:save]).to eql "/stories/:username/:slug/save"
|
95
95
|
end
|
96
96
|
|
97
|
-
it "
|
98
|
-
Storify::ENDPOINTS[:v1][:create].
|
97
|
+
it "supports Creating a Story" do
|
98
|
+
expect(Storify::ENDPOINTS[:v1][:create]).to eql "/stories/:username/create"
|
99
99
|
end
|
100
100
|
|
101
|
-
it "
|
102
|
-
Storify::ENDPOINTS[:v1][:delete].
|
101
|
+
it "supports Deleting a Story (undocumented)" do
|
102
|
+
expect(Storify::ENDPOINTS[:v1][:delete]).to eql "/stories/:username/:slug/delete"
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
context "
|
107
|
-
it "
|
108
|
-
Storify::endpoint(protocol: :secure).include?('https').
|
106
|
+
context "URI Builder" do
|
107
|
+
it "allows dynamic protocol selection" do
|
108
|
+
expect(Storify::endpoint(protocol: :secure).include?('https')).to be_true
|
109
109
|
end
|
110
110
|
|
111
|
-
it "
|
112
|
-
Storify::endpoint(version: :v1).include?('v1').
|
111
|
+
it "allows dynamic version selection" do
|
112
|
+
expect(Storify::endpoint(version: :v1).include?('v1')).to be_true
|
113
113
|
end
|
114
114
|
|
115
|
-
it "
|
116
|
-
Storify::endpoint(method: :auth).include?('/auth').
|
115
|
+
it "allows dynamic endpoint selection" do
|
116
|
+
expect(Storify::endpoint(method: :auth).include?('/auth')).to be_true
|
117
117
|
end
|
118
118
|
|
119
|
-
it "
|
120
|
-
params = {':username' => '
|
119
|
+
it "allows dynamic parameter substitution" do
|
120
|
+
params = {':username' => 'uname', ':slug' => 'this-is-my-story'}
|
121
121
|
uri = Storify::endpoint(params: params, method: :userstory)
|
122
|
-
|
122
|
+
|
123
|
+
['uname', 'this-is-my-story'].each do |s|
|
124
|
+
expect(uri.include?(s)).to be_true
|
125
|
+
end
|
123
126
|
end
|
124
127
|
|
125
|
-
it "
|
126
|
-
Storify::endpoint(protocol: :secure, method: :auth).include?('https').
|
128
|
+
it "enforces secure protocol for Authentication" do
|
129
|
+
expect(Storify::endpoint(protocol: :secure, method: :auth).include?('https')).to be_true
|
127
130
|
end
|
128
131
|
|
129
|
-
it "
|
130
|
-
params = {':username' => '
|
131
|
-
|
132
|
-
uri.should == 'http://api.storify.com/v1/stories/rtejpar'
|
132
|
+
it "builds the final uri based on dynamic configuration" do
|
133
|
+
params = {':username' => 'uname'}
|
134
|
+
expect(Storify::endpoint(protocol: :insecure, method: :userstories, params: params)).to eql 'http://api.storify.com/v1/stories/uname'
|
133
135
|
end
|
134
136
|
end
|
135
137
|
|
136
|
-
context "API
|
137
|
-
it "
|
138
|
+
context "API Error Handling" do
|
139
|
+
it "returns an empty content block (if api max reached)" do
|
138
140
|
eoc = Storify::Client::EOC
|
139
|
-
|
140
|
-
content.should == eoc
|
141
|
+
expect(Storify::error(400, '...Max...', 'bad request', end_of_content: eoc)).to eql eoc
|
141
142
|
end
|
142
143
|
|
143
|
-
it "
|
144
|
+
it "raises an API error for a non-max case" do
|
144
145
|
eoc = Storify::Client::EOC
|
145
146
|
expect{Storify::error(400, '...', 'bad request', end_of_content: eoc)}.to raise_error(Storify::ApiError)
|
146
147
|
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.14
|
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-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.14.1
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.16.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.16.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: vcr
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.8'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.8'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: io-console
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,15 +162,48 @@ files:
|
|
134
162
|
- lib/storify/story.rb
|
135
163
|
- lib/storify/storymeta.rb
|
136
164
|
- lib/storify/storystats.rb
|
165
|
+
- lib/storify/string.rb
|
137
166
|
- lib/storify/user.rb
|
138
167
|
- lib/storify/userstats.rb
|
139
168
|
- lib/storify.rb
|
140
169
|
- spec/client_auth_spec.rb
|
141
|
-
- spec/
|
170
|
+
- spec/client_edit_slug_spec.rb
|
171
|
+
- spec/client_profile_spec.rb
|
172
|
+
- spec/client_profile_update_spec.rb
|
142
173
|
- spec/client_spec.rb
|
174
|
+
- spec/client_stories_featured_spec.rb
|
175
|
+
- spec/client_stories_latest_spec.rb
|
176
|
+
- spec/client_stories_popular_spec.rb
|
177
|
+
- spec/client_stories_search_spec.rb
|
178
|
+
- spec/client_stories_spec.rb
|
179
|
+
- spec/client_stories_topic_spec.rb
|
180
|
+
- spec/client_story_create_spec.rb
|
181
|
+
- spec/client_story_delete_spec.rb
|
182
|
+
- spec/client_story_publish_spec.rb
|
183
|
+
- spec/client_story_save_spec.rb
|
184
|
+
- spec/client_story_spec.rb
|
185
|
+
- spec/client_users_spec.rb
|
186
|
+
- spec/client_userstories_spec.rb
|
143
187
|
- spec/pager_spec.rb
|
144
188
|
- spec/spec_helper.rb
|
145
189
|
- spec/storify_spec.rb
|
190
|
+
- fixtures/vcr_cassettes/auth.yml
|
191
|
+
- fixtures/vcr_cassettes/create.yml
|
192
|
+
- fixtures/vcr_cassettes/delete.yml
|
193
|
+
- fixtures/vcr_cassettes/edit_slug.yml
|
194
|
+
- fixtures/vcr_cassettes/featured.yml
|
195
|
+
- fixtures/vcr_cassettes/latest.yml
|
196
|
+
- fixtures/vcr_cassettes/popular.yml
|
197
|
+
- fixtures/vcr_cassettes/profile.yml
|
198
|
+
- fixtures/vcr_cassettes/profile_update.yml
|
199
|
+
- fixtures/vcr_cassettes/publish.yml
|
200
|
+
- fixtures/vcr_cassettes/save.yml
|
201
|
+
- fixtures/vcr_cassettes/search.yml
|
202
|
+
- fixtures/vcr_cassettes/stories.yml
|
203
|
+
- fixtures/vcr_cassettes/story.yml
|
204
|
+
- fixtures/vcr_cassettes/topic.yml
|
205
|
+
- fixtures/vcr_cassettes/users.yml
|
206
|
+
- fixtures/vcr_cassettes/userstories.yml
|
146
207
|
homepage: https://github.com/natural-affinity/storify
|
147
208
|
licenses:
|
148
209
|
- MIT
|
@@ -169,8 +230,40 @@ specification_version: 4
|
|
169
230
|
summary: Storify API
|
170
231
|
test_files:
|
171
232
|
- spec/client_auth_spec.rb
|
172
|
-
- spec/
|
233
|
+
- spec/client_edit_slug_spec.rb
|
234
|
+
- spec/client_profile_spec.rb
|
235
|
+
- spec/client_profile_update_spec.rb
|
173
236
|
- spec/client_spec.rb
|
237
|
+
- spec/client_stories_featured_spec.rb
|
238
|
+
- spec/client_stories_latest_spec.rb
|
239
|
+
- spec/client_stories_popular_spec.rb
|
240
|
+
- spec/client_stories_search_spec.rb
|
241
|
+
- spec/client_stories_spec.rb
|
242
|
+
- spec/client_stories_topic_spec.rb
|
243
|
+
- spec/client_story_create_spec.rb
|
244
|
+
- spec/client_story_delete_spec.rb
|
245
|
+
- spec/client_story_publish_spec.rb
|
246
|
+
- spec/client_story_save_spec.rb
|
247
|
+
- spec/client_story_spec.rb
|
248
|
+
- spec/client_users_spec.rb
|
249
|
+
- spec/client_userstories_spec.rb
|
174
250
|
- spec/pager_spec.rb
|
175
251
|
- spec/spec_helper.rb
|
176
252
|
- spec/storify_spec.rb
|
253
|
+
- fixtures/vcr_cassettes/auth.yml
|
254
|
+
- fixtures/vcr_cassettes/create.yml
|
255
|
+
- fixtures/vcr_cassettes/delete.yml
|
256
|
+
- fixtures/vcr_cassettes/edit_slug.yml
|
257
|
+
- fixtures/vcr_cassettes/featured.yml
|
258
|
+
- fixtures/vcr_cassettes/latest.yml
|
259
|
+
- fixtures/vcr_cassettes/popular.yml
|
260
|
+
- fixtures/vcr_cassettes/profile.yml
|
261
|
+
- fixtures/vcr_cassettes/profile_update.yml
|
262
|
+
- fixtures/vcr_cassettes/publish.yml
|
263
|
+
- fixtures/vcr_cassettes/save.yml
|
264
|
+
- fixtures/vcr_cassettes/search.yml
|
265
|
+
- fixtures/vcr_cassettes/stories.yml
|
266
|
+
- fixtures/vcr_cassettes/story.yml
|
267
|
+
- fixtures/vcr_cassettes/topic.yml
|
268
|
+
- fixtures/vcr_cassettes/users.yml
|
269
|
+
- fixtures/vcr_cassettes/userstories.yml
|