storify 0.0.13 → 0.0.14
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/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
|