populr 0.1.11 → 0.1.12
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.
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/Gemfile +5 -1
- data/Gemfile.lock +28 -0
- data/VERSION +1 -1
- data/lib/image_asset.rb +1 -1
- data/lib/pop.rb +9 -10
- data/lib/populr.rb +1 -1
- data/lib/restful_model.rb +14 -16
- data/lib/restful_model_collection.rb +3 -3
- data/lib/tracer.rb +1 -1
- data/populr.gemspec +17 -3
- data/spec/pop_spec.rb +6 -8
- data/spec/populr_spec.rb +5 -11
- data/spec/restful_model_collection_spec.rb +1 -7
- data/spec/restful_model_spec.rb +0 -2
- data/spec/tracer_spec.rb +0 -3
- metadata +105 -14
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3@populr_api_gem
|
data/Gemfile
CHANGED
@@ -5,9 +5,13 @@ gem "rest-client", ">= 1.6"
|
|
5
5
|
|
6
6
|
# Add dependencies to develop your gem here.
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
group :development do
|
8
|
+
group :development, :test do
|
9
|
+
gem 'rspec'
|
9
10
|
gem "shoulda", ">= 0"
|
10
11
|
gem "rdoc", "~> 3.12"
|
11
12
|
gem "bundler", "~> 1.3.5"
|
12
13
|
gem "jeweler", "~> 1.8.4"
|
14
|
+
gem 'pry'
|
15
|
+
gem 'pry-nav'
|
16
|
+
gem 'pry-stack_explorer'
|
13
17
|
end
|
data/Gemfile.lock
CHANGED
@@ -4,8 +4,13 @@ GEM
|
|
4
4
|
activesupport (3.2.8)
|
5
5
|
i18n (~> 0.6)
|
6
6
|
multi_json (~> 1.0)
|
7
|
+
binding_of_caller (0.7.2)
|
8
|
+
debug_inspector (>= 0.0.1)
|
7
9
|
bourne (1.4.0)
|
8
10
|
mocha (~> 0.13.2)
|
11
|
+
coderay (1.0.9)
|
12
|
+
debug_inspector (0.0.2)
|
13
|
+
diff-lcs (1.2.4)
|
9
14
|
git (1.2.5)
|
10
15
|
i18n (0.6.1)
|
11
16
|
jeweler (1.8.4)
|
@@ -15,15 +20,33 @@ GEM
|
|
15
20
|
rdoc
|
16
21
|
json (1.7.5)
|
17
22
|
metaclass (0.0.1)
|
23
|
+
method_source (0.8.1)
|
18
24
|
mime-types (1.19)
|
19
25
|
mocha (0.13.3)
|
20
26
|
metaclass (~> 0.0.1)
|
21
27
|
multi_json (1.3.6)
|
28
|
+
pry (0.9.12.2)
|
29
|
+
coderay (~> 1.0.5)
|
30
|
+
method_source (~> 0.8)
|
31
|
+
slop (~> 3.4)
|
32
|
+
pry-nav (0.2.3)
|
33
|
+
pry (~> 0.9.10)
|
34
|
+
pry-stack_explorer (0.4.9)
|
35
|
+
binding_of_caller (>= 0.7)
|
36
|
+
pry (~> 0.9.11)
|
22
37
|
rake (10.0.3)
|
23
38
|
rdoc (3.12)
|
24
39
|
json (~> 1.4)
|
25
40
|
rest-client (1.6.7)
|
26
41
|
mime-types (>= 1.16)
|
42
|
+
rspec (2.14.1)
|
43
|
+
rspec-core (~> 2.14.0)
|
44
|
+
rspec-expectations (~> 2.14.0)
|
45
|
+
rspec-mocks (~> 2.14.0)
|
46
|
+
rspec-core (2.14.2)
|
47
|
+
rspec-expectations (2.14.0)
|
48
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
49
|
+
rspec-mocks (2.14.1)
|
27
50
|
shoulda (3.4.0)
|
28
51
|
shoulda-context (~> 1.0, >= 1.0.1)
|
29
52
|
shoulda-matchers (~> 1.0, >= 1.4.1)
|
@@ -31,6 +54,7 @@ GEM
|
|
31
54
|
shoulda-matchers (1.5.6)
|
32
55
|
activesupport (>= 3.0.0)
|
33
56
|
bourne (~> 1.3)
|
57
|
+
slop (3.4.5)
|
34
58
|
|
35
59
|
PLATFORMS
|
36
60
|
ruby
|
@@ -38,6 +62,10 @@ PLATFORMS
|
|
38
62
|
DEPENDENCIES
|
39
63
|
bundler (~> 1.3.5)
|
40
64
|
jeweler (~> 1.8.4)
|
65
|
+
pry
|
66
|
+
pry-nav
|
67
|
+
pry-stack_explorer
|
41
68
|
rdoc (~> 3.12)
|
42
69
|
rest-client (>= 1.6)
|
70
|
+
rspec
|
43
71
|
shoulda
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.12
|
data/lib/image_asset.rb
CHANGED
data/lib/pop.rb
CHANGED
@@ -84,7 +84,6 @@ class Pop < RestfulModel
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
|
88
87
|
def publish!
|
89
88
|
update('POST', 'publish')
|
90
89
|
end
|
@@ -94,14 +93,14 @@ class Pop < RestfulModel
|
|
94
93
|
end
|
95
94
|
|
96
95
|
def edit_url
|
97
|
-
return @_api.api_server.gsub('api.', 'www.') + "/edit/#{
|
96
|
+
return @_api.api_server.gsub('api.', 'www.') + "/edit/#{_id}"
|
98
97
|
end
|
99
98
|
|
100
99
|
def enable_collaboration!(interstitial_text = '', webhook = nil)
|
101
100
|
self.collaboration_link_enabled = true
|
102
101
|
self.collaboration_webhook = webhook
|
103
102
|
self.collaboration_interstitial_text = interstitial_text
|
104
|
-
|
103
|
+
save! # go and populate our model with the collaboration link
|
105
104
|
end
|
106
105
|
|
107
106
|
def disable_collaboration
|
@@ -111,7 +110,7 @@ class Pop < RestfulModel
|
|
111
110
|
|
112
111
|
def enable_cloning!
|
113
112
|
self.clone_link_enabled = true
|
114
|
-
|
113
|
+
save! # go and populate our model with the clone link
|
115
114
|
end
|
116
115
|
|
117
116
|
def disable_cloning
|
@@ -120,12 +119,12 @@ class Pop < RestfulModel
|
|
120
119
|
end
|
121
120
|
|
122
121
|
def has_unpopulated_region(region_identifier)
|
123
|
-
|
122
|
+
unpopulated_api_regions.include?(region_identifier)
|
124
123
|
end
|
125
124
|
|
126
125
|
def type_of_unpopulated_region(region_identifier)
|
127
|
-
return false unless
|
128
|
-
|
126
|
+
return false unless has_unpopulated_region(region_identifier)
|
127
|
+
unpopulated_api_regions[region_identifier]['type']
|
129
128
|
end
|
130
129
|
|
131
130
|
def populate_region(region_identifier, assets)
|
@@ -136,16 +135,16 @@ class Pop < RestfulModel
|
|
136
135
|
raise AssetMustBeSaved.new unless a._id
|
137
136
|
a._id
|
138
137
|
})
|
139
|
-
|
138
|
+
unpopulated_api_regions.delete(region_identifier)
|
140
139
|
end
|
141
140
|
|
142
141
|
def has_unpopulated_tag(tag_identifier)
|
143
|
-
|
142
|
+
unpopulated_api_tags.include?(tag_identifier)
|
144
143
|
end
|
145
144
|
|
146
145
|
def populate_tag(tag_identifier, tag_contents)
|
147
146
|
@newly_populated_tags[tag_identifier] = tag_contents
|
148
|
-
|
147
|
+
unpopulated_api_tags.delete(tag_identifier)
|
149
148
|
end
|
150
149
|
|
151
150
|
def analytics
|
data/lib/populr.rb
CHANGED
@@ -32,7 +32,7 @@ class Populr
|
|
32
32
|
raise ResourceNotFound.new if result.code.to_i == 404
|
33
33
|
raise AccessDenied.new if result.code.to_i == 403
|
34
34
|
|
35
|
-
#
|
35
|
+
# Handle content expectation errors
|
36
36
|
raise UnexpectedResponse.new if options[:expected_class] && result_content.empty?
|
37
37
|
json = JSON.parse(result_content)
|
38
38
|
raise APIError.new(json['error_type'], json['error']) if json.is_a?(Hash) && json['error_type']
|
data/lib/restful_model.rb
CHANGED
@@ -24,17 +24,16 @@ class RestfulModel
|
|
24
24
|
def inflate(json)
|
25
25
|
setters = methods.grep(/^\w+=$/)
|
26
26
|
setters.each do |setter|
|
27
|
-
property_name = setter.to_s
|
28
|
-
|
27
|
+
property_name = setter.to_s.sub('=', '')
|
28
|
+
send(setter, json[property_name]) if json.has_key?(property_name)
|
29
29
|
end
|
30
|
-
self.created_at = Time.parse(self.created_at) if self.created_at
|
31
30
|
end
|
32
31
|
|
33
32
|
def save!
|
34
33
|
if _id
|
35
|
-
update('PUT', '',
|
34
|
+
update('PUT', '', as_json(:api_representation => true))
|
36
35
|
else
|
37
|
-
update('POST', '',
|
36
|
+
update('POST', '', as_json(:api_representation => true))
|
38
37
|
end
|
39
38
|
end
|
40
39
|
|
@@ -42,14 +41,12 @@ class RestfulModel
|
|
42
41
|
hash = {}
|
43
42
|
setters = methods.grep(/^\w+=$/)
|
44
43
|
setters.each do |setter|
|
45
|
-
getter = setter.to_s
|
44
|
+
getter = setter.to_s.sub('=', '')
|
46
45
|
unless options[:except] && options[:except].include?(getter)
|
47
|
-
value =
|
48
|
-
unless value.is_a?
|
46
|
+
value = send(getter)
|
47
|
+
unless value.is_a?(RestfulModelCollection)
|
48
|
+
value = value.as_json(options) if value.respond_to?(:as_json)
|
49
49
|
hash[getter] = value
|
50
|
-
if value.class.method_defined? :as_json
|
51
|
-
value = value.as_json(options)
|
52
|
-
end
|
53
50
|
end
|
54
51
|
end
|
55
52
|
end
|
@@ -58,13 +55,14 @@ class RestfulModel
|
|
58
55
|
|
59
56
|
def update(http_method, action, data = {})
|
60
57
|
http_method = http_method.downcase
|
61
|
-
action_url = @_api.url_for_path(
|
62
|
-
|
58
|
+
action_url = @_api.url_for_path(path(action))
|
59
|
+
|
60
|
+
RestClient.send(http_method, action_url, data) do |response, request, result|
|
63
61
|
unless http_method == 'delete'
|
64
|
-
json = Populr.interpret_response(result, response,
|
62
|
+
json = Populr.interpret_response(result, response, :expected_class => Object)
|
65
63
|
inflate(json)
|
66
64
|
end
|
67
|
-
|
65
|
+
end
|
68
66
|
self
|
69
67
|
end
|
70
68
|
|
@@ -79,4 +77,4 @@ class RestfulModel
|
|
79
77
|
end
|
80
78
|
|
81
79
|
|
82
|
-
end
|
80
|
+
end
|
@@ -48,7 +48,7 @@ class RestfulModelCollection
|
|
48
48
|
|
49
49
|
def delete(item_or_id)
|
50
50
|
item_or_id = item_or_id._id if item_or_id.is_a?(RestfulModel)
|
51
|
-
url = @_api.url_for_path(
|
51
|
+
url = @_api.url_for_path(path(item_or_id))
|
52
52
|
RestClient.delete(url)
|
53
53
|
end
|
54
54
|
|
@@ -86,7 +86,7 @@ class RestfulModelCollection
|
|
86
86
|
|
87
87
|
def get_restful_model(id)
|
88
88
|
model = nil
|
89
|
-
url = @_api.url_for_path(
|
89
|
+
url = @_api.url_for_path(path(id))
|
90
90
|
|
91
91
|
RestClient.get(url){ |response,request,result|
|
92
92
|
json = Populr.interpret_response(result, response, {:expected_class => Object})
|
@@ -101,7 +101,7 @@ class RestfulModelCollection
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def get_restful_model_collection(offset = 0, count = 50)
|
104
|
-
url = @_api.url_for_path("#{
|
104
|
+
url = @_api.url_for_path("#{path}?offset=#{offset}&count=#{count}")
|
105
105
|
models = []
|
106
106
|
RestClient.get(url){ |response,request,result|
|
107
107
|
items = Populr.interpret_response(result, response, {:expected_class => Array})
|
data/lib/tracer.rb
CHANGED
data/populr.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "populr"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.12"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ben Gotow"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-07-14"
|
13
13
|
s.description = "Gem for interacting with the Populr.me API that allows you to create and publish one-page websites, subscribe to web hooks and receive events when those pages are interacted with. Visit http://www.populr.me/ for more information. "
|
14
14
|
s.email = "ben@populr.me"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -18,6 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
+
".rspec",
|
22
|
+
".rvmrc",
|
21
23
|
"Gemfile",
|
22
24
|
"Gemfile.lock",
|
23
25
|
"LICENSE.md",
|
@@ -47,7 +49,7 @@ Gem::Specification.new do |s|
|
|
47
49
|
s.homepage = "http://github.com/populr/populr_api_ruby"
|
48
50
|
s.licenses = ["MIT"]
|
49
51
|
s.require_paths = ["lib"]
|
50
|
-
s.rubygems_version = "1.8.
|
52
|
+
s.rubygems_version = "1.8.25"
|
51
53
|
s.summary = "Gem for interacting with the Populr.me API"
|
52
54
|
|
53
55
|
if s.respond_to? :specification_version then
|
@@ -55,23 +57,35 @@ Gem::Specification.new do |s|
|
|
55
57
|
|
56
58
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
59
|
s.add_runtime_dependency(%q<rest-client>, [">= 1.6"])
|
60
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
58
61
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
59
62
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
60
63
|
s.add_development_dependency(%q<bundler>, ["~> 1.3.5"])
|
61
64
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
65
|
+
s.add_development_dependency(%q<pry>, [">= 0"])
|
66
|
+
s.add_development_dependency(%q<pry-nav>, [">= 0"])
|
67
|
+
s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
|
62
68
|
else
|
63
69
|
s.add_dependency(%q<rest-client>, [">= 1.6"])
|
70
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
64
71
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
65
72
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
66
73
|
s.add_dependency(%q<bundler>, ["~> 1.3.5"])
|
67
74
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
75
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
76
|
+
s.add_dependency(%q<pry-nav>, [">= 0"])
|
77
|
+
s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
|
68
78
|
end
|
69
79
|
else
|
70
80
|
s.add_dependency(%q<rest-client>, [">= 1.6"])
|
81
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
71
82
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
72
83
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
73
84
|
s.add_dependency(%q<bundler>, ["~> 1.3.5"])
|
74
85
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
86
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
87
|
+
s.add_dependency(%q<pry-nav>, [">= 0"])
|
88
|
+
s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
|
75
89
|
end
|
76
90
|
end
|
77
91
|
|
data/spec/pop_spec.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
::ENV['RACK_ENV'] = 'test'
|
2
2
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
|
-
require 'rack/test'
|
4
3
|
|
5
4
|
describe 'Pop' do
|
6
|
-
include Rack::Test::Methods
|
7
5
|
before (:each) do
|
8
6
|
@api = Populr.new('key')
|
9
7
|
end
|
@@ -11,6 +9,8 @@ describe 'Pop' do
|
|
11
9
|
describe "#initialize" do
|
12
10
|
it "should accept an API connection followed by a template" do
|
13
11
|
template = Template.new(@api)
|
12
|
+
template.stub(:api_regions).and_return([])
|
13
|
+
template.stub(:api_tags).and_return([])
|
14
14
|
template._id = '123'
|
15
15
|
pop = Pop.new(template)
|
16
16
|
pop.template_id.should == '123'
|
@@ -48,8 +48,7 @@ describe 'Pop' do
|
|
48
48
|
|
49
49
|
@result = double('result')
|
50
50
|
@result.stub(:code).and_return(200)
|
51
|
-
|
52
|
-
RestClient.stub(:post).and_yield(nil, nil, @result)
|
51
|
+
RestClient.stub(:post).and_yield("{\"_id\":\"5107089add02dcaecc000003\",\"created_at\":\"2013-01-28T23:24:10Z\",\"domain\":\"generic\",\"name\":\"Untitled\",\"password\":null,\"slug\":\"\",\"tracers\":[{\"_id\":\"5109b5e0dd02dc5976000001\",\"created_at\":\"2013-01-31T00:08:00Z\",\"name\":\"Facebook\"},{\"_id\":\"5109b5f5dd02dc4c43000002\",\"created_at\":\"2013-01-31T00:08:21Z\",\"name\":\"Twitter\"}],\"published_pop_url\":\"http://group3.lvh.me\",\"unpopulated_api_tags\":[],\"unpopulated_api_regions\":[],\"label_names\":[]}", '', @result)
|
53
52
|
end
|
54
53
|
|
55
54
|
it "should call update with the publish action" do
|
@@ -62,9 +61,9 @@ describe 'Pop' do
|
|
62
61
|
end
|
63
62
|
|
64
63
|
it "should set the published_pop_url" do
|
65
|
-
@pop.published_pop_url.
|
64
|
+
@pop.published_pop_url.should be_empty
|
66
65
|
@pop.publish!
|
67
|
-
@pop.published_pop_url.
|
66
|
+
@pop.published_pop_url.should_not be_empty
|
68
67
|
end
|
69
68
|
end
|
70
69
|
|
@@ -76,8 +75,7 @@ describe 'Pop' do
|
|
76
75
|
|
77
76
|
@result = double('result')
|
78
77
|
@result.stub(:code).and_return(200)
|
79
|
-
|
80
|
-
RestClient.stub(:post).and_yield(nil, nil, @result)
|
78
|
+
RestClient.stub(:post).and_yield("{\"_id\":\"5107089add02dcaecc000003\",\"created_at\":\"2013-01-28T23:24:10Z\",\"domain\":\"generic\",\"name\":\"Untitled\",\"password\":null,\"slug\":\"\",\"tracers\":[{\"_id\":\"5109b5e0dd02dc5976000001\",\"created_at\":\"2013-01-31T00:08:00Z\",\"name\":\"Facebook\"},{\"_id\":\"5109b5f5dd02dc4c43000002\",\"created_at\":\"2013-01-31T00:08:21Z\",\"name\":\"Twitter\"}],\"published_pop_url\":\"\",\"unpopulated_api_tags\":[],\"unpopulated_api_regions\":[],\"label_names\":[]}", '', @result)
|
81
79
|
end
|
82
80
|
|
83
81
|
it "should call update with the unpublish action" do
|
data/spec/populr_spec.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
::ENV['RACK_ENV'] = 'test'
|
2
2
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
|
-
require 'rack/test'
|
4
3
|
|
5
4
|
describe 'Populr' do
|
6
|
-
include Rack::Test::Methods
|
7
|
-
|
8
5
|
before (:each) do
|
9
6
|
@api_key = 'UXXMOCJW-BKSLPCFI-UQAQFWLO'
|
10
7
|
@populr = Populr.new(@api_key)
|
@@ -32,26 +29,23 @@ describe 'Populr' do
|
|
32
29
|
describe "#self.interpret_response" do
|
33
30
|
before (:each) do
|
34
31
|
@result = double('result')
|
35
|
-
@result.stub(:body).and_return("")
|
36
32
|
@result.stub(:code).and_return(200)
|
37
33
|
end
|
38
34
|
|
39
35
|
context "when an expected_class is provided" do
|
40
36
|
context "when the server responds with a 200 but unknown, invalid body" do
|
41
37
|
it "should raise an UnexpectedResponse" do
|
42
|
-
@result.stub(:body).and_return("I AM NOT JSON")
|
43
38
|
lambda {
|
44
|
-
Populr.interpret_response(@result, {:expected_class => Array})
|
39
|
+
Populr.interpret_response(@result, "I AM NOT JSON", {:expected_class => Array})
|
45
40
|
}.should raise_error(Populr::UnexpectedResponse)
|
46
41
|
end
|
47
42
|
end
|
48
43
|
|
49
44
|
context "when the server responds with JSON that does not represent an array" do
|
50
45
|
it "should raise an UnexpectedResponse" do
|
51
|
-
@result.stub(:body).and_return("{\"_id\":\"5107089add02dcaecc000003\",\"created_at\":\"2013-01-28T23:24:10Z\",\"domain\":\"generic\",\"name\":\"Untitled\",\"password\":null,\"slug\":\"\",\"tracers\":[{\"_id\":\"5109b5e0dd02dc5976000001\",\"created_at\":\"2013-01-31T00:08:00Z\",\"name\":\"Facebook\"},{\"_id\":\"5109b5f5dd02dc4c43000002\",\"created_at\":\"2013-01-31T00:08:21Z\",\"name\":\"Twitter\"}],\"published_pop_url\":\"http://group3.lvh.me\",\"unpopulated_api_tags\":[],\"unpopulated_api_regions\":[],\"label_names\":[]}")
|
52
46
|
@result.stub(:code).and_return(500)
|
53
47
|
lambda {
|
54
|
-
Populr.interpret_response(@result, {:expected_class => Array})
|
48
|
+
Populr.interpret_response(@result, "{\"_id\":\"5107089add02dcaecc000003\",\"created_at\":\"2013-01-28T23:24:10Z\",\"domain\":\"generic\",\"name\":\"Untitled\",\"password\":null,\"slug\":\"\",\"tracers\":[{\"_id\":\"5109b5e0dd02dc5976000001\",\"created_at\":\"2013-01-31T00:08:00Z\",\"name\":\"Facebook\"},{\"_id\":\"5109b5f5dd02dc4c43000002\",\"created_at\":\"2013-01-31T00:08:21Z\",\"name\":\"Twitter\"}],\"published_pop_url\":\"http://group3.lvh.me\",\"unpopulated_api_tags\":[],\"unpopulated_api_regions\":[],\"label_names\":[]}", {:expected_class => Array})
|
55
49
|
}.should raise_error(Populr::UnexpectedResponse)
|
56
50
|
end
|
57
51
|
end
|
@@ -61,7 +55,7 @@ describe 'Populr' do
|
|
61
55
|
it "should raise AccessDenied" do
|
62
56
|
@result.stub(:code).and_return(403)
|
63
57
|
lambda {
|
64
|
-
Populr.interpret_response(@result)
|
58
|
+
Populr.interpret_response(@result, '')
|
65
59
|
}.should raise_error(Populr::AccessDenied)
|
66
60
|
end
|
67
61
|
end
|
@@ -70,7 +64,7 @@ describe 'Populr' do
|
|
70
64
|
it "should raise ResourceNotFound" do
|
71
65
|
@result.stub(:code).and_return(404)
|
72
66
|
lambda {
|
73
|
-
Populr.interpret_response(@result)
|
67
|
+
Populr.interpret_response(@result, '')
|
74
68
|
}.should raise_error(Populr::ResourceNotFound)
|
75
69
|
end
|
76
70
|
end
|
@@ -79,7 +73,7 @@ describe 'Populr' do
|
|
79
73
|
it "should raise an UnexpectedResponse" do
|
80
74
|
@result.stub(:code).and_return(500)
|
81
75
|
lambda {
|
82
|
-
Populr.interpret_response(@result)
|
76
|
+
Populr.interpret_response(@result, '')
|
83
77
|
}.should raise_error(Populr::UnexpectedResponse)
|
84
78
|
end
|
85
79
|
end
|
@@ -1,18 +1,13 @@
|
|
1
1
|
::ENV['RACK_ENV'] = 'test'
|
2
2
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
|
-
require 'rack/test'
|
4
3
|
|
5
4
|
describe 'RestfulModelCollection' do
|
6
|
-
include Rack::Test::Methods
|
7
|
-
|
8
5
|
before (:each) do
|
9
6
|
@api_key = 'UXXMOCJW-BKSLPCFI-UQAQFWLO'
|
10
7
|
@populr = Populr.new(@api_key)
|
11
8
|
@collection = @populr.pops
|
12
9
|
end
|
13
10
|
|
14
|
-
|
15
|
-
|
16
11
|
describe "#first" do
|
17
12
|
it "should return the first item in the all collection" do
|
18
13
|
@collection.stub(:get_restful_model_collection).and_return(['a','b'])
|
@@ -29,9 +24,8 @@ describe 'RestfulModelCollection' do
|
|
29
24
|
context "when the server responds correctly" do
|
30
25
|
before (:each) do
|
31
26
|
result = double('result')
|
32
|
-
result.stub(:body).and_return("{\"_id\":\"5107089add02dcaecc000003\",\"created_at\":\"2013-01-28T23:24:10Z\",\"domain\":\"generic\",\"name\":\"Untitled\",\"password\":null,\"slug\":\"\",\"tracers\":[{\"_id\":\"5109b5e0dd02dc5976000001\",\"created_at\":\"2013-01-31T00:08:00Z\",\"name\":\"Facebook\"},{\"_id\":\"5109b5f5dd02dc4c43000002\",\"created_at\":\"2013-01-31T00:08:21Z\",\"name\":\"Twitter\"}],\"published_pop_url\":\"http://group3.lvh.me\",\"unpopulated_api_tags\":[],\"unpopulated_api_regions\":[],\"label_names\":[]}")
|
33
27
|
result.stub(:code).and_return(200)
|
34
|
-
RestClient.should_receive(:get).and_yield(
|
28
|
+
RestClient.should_receive(:get).and_yield("{\"_id\":\"5107089add02dcaecc000003\",\"created_at\":\"2013-01-28T23:24:10Z\",\"domain\":\"generic\",\"name\":\"Untitled\",\"password\":null,\"slug\":\"\",\"tracers\":[{\"_id\":\"5109b5e0dd02dc5976000001\",\"created_at\":\"2013-01-31T00:08:00Z\",\"name\":\"Facebook\"},{\"_id\":\"5109b5f5dd02dc4c43000002\",\"created_at\":\"2013-01-31T00:08:21Z\",\"name\":\"Twitter\"}],\"published_pop_url\":\"http://group3.lvh.me\",\"unpopulated_api_tags\":[],\"unpopulated_api_regions\":[],\"label_names\":[]}", nil, result)
|
35
29
|
end
|
36
30
|
|
37
31
|
it "should return a pop" do
|
data/spec/restful_model_spec.rb
CHANGED
data/spec/tracer_spec.rb
CHANGED
@@ -1,16 +1,13 @@
|
|
1
1
|
::ENV['RACK_ENV'] = 'test'
|
2
2
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
|
-
require 'rack/test'
|
4
3
|
|
5
4
|
describe 'Pop' do
|
6
|
-
include Rack::Test::Methods
|
7
5
|
before (:each) do
|
8
6
|
@api = Populr.new('key')
|
9
7
|
@tracer = Tracer.new(@api)
|
10
8
|
@tracer.inflate(JSON.parse("{\"code\":\"tc\",\"name\":\"Twitter\",\"notify_on_open\":false,\"analytics\":{\"views\":6,\"clicks\":24,\"links\":{\"http://www.populr.me/\":{\"clicks\":4}},\"assets\":{\"empty_region\":{},\"unnamed_region_0\":{\"132213ae12bc1312\":{\"clicks\":10}},\"my_image_region\":{\"132213ae21f4812f\":{\"clicks\":10},\"f48121f48121f421\":{\"clicks\":3}}}}}"))
|
11
9
|
end
|
12
10
|
|
13
|
-
|
14
11
|
describe "#views" do
|
15
12
|
it "should retrieve the total views from analytics" do
|
16
13
|
@tracer.views.should == 6
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: populr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,31 @@ dependencies:
|
|
21
21
|
version: '1.6'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.6'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
25
46
|
- !ruby/object:Gem::Dependency
|
26
47
|
name: shoulda
|
27
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
28
49
|
none: false
|
29
50
|
requirements:
|
30
51
|
- - ! '>='
|
@@ -32,10 +53,15 @@ dependencies:
|
|
32
53
|
version: '0'
|
33
54
|
type: :development
|
34
55
|
prerelease: false
|
35
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
36
62
|
- !ruby/object:Gem::Dependency
|
37
63
|
name: rdoc
|
38
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
39
65
|
none: false
|
40
66
|
requirements:
|
41
67
|
- - ~>
|
@@ -43,10 +69,15 @@ dependencies:
|
|
43
69
|
version: '3.12'
|
44
70
|
type: :development
|
45
71
|
prerelease: false
|
46
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.12'
|
47
78
|
- !ruby/object:Gem::Dependency
|
48
79
|
name: bundler
|
49
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
50
81
|
none: false
|
51
82
|
requirements:
|
52
83
|
- - ~>
|
@@ -54,10 +85,15 @@ dependencies:
|
|
54
85
|
version: 1.3.5
|
55
86
|
type: :development
|
56
87
|
prerelease: false
|
57
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.3.5
|
58
94
|
- !ruby/object:Gem::Dependency
|
59
95
|
name: jeweler
|
60
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
61
97
|
none: false
|
62
98
|
requirements:
|
63
99
|
- - ~>
|
@@ -65,7 +101,60 @@ dependencies:
|
|
65
101
|
version: 1.8.4
|
66
102
|
type: :development
|
67
103
|
prerelease: false
|
68
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.8.4
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: pry
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: pry-nav
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: pry-stack_explorer
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
69
158
|
description: ! 'Gem for interacting with the Populr.me API that allows you to create
|
70
159
|
and publish one-page websites, subscribe to web hooks and receive events when those
|
71
160
|
pages are interacted with. Visit http://www.populr.me/ for more information. '
|
@@ -77,6 +166,8 @@ extra_rdoc_files:
|
|
77
166
|
- README.rdoc
|
78
167
|
files:
|
79
168
|
- .document
|
169
|
+
- .rspec
|
170
|
+
- .rvmrc
|
80
171
|
- Gemfile
|
81
172
|
- Gemfile.lock
|
82
173
|
- LICENSE.md
|
@@ -117,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
208
|
version: '0'
|
118
209
|
segments:
|
119
210
|
- 0
|
120
|
-
hash: -
|
211
|
+
hash: -821552930244231200
|
121
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
213
|
none: false
|
123
214
|
requirements:
|
@@ -126,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
217
|
version: '0'
|
127
218
|
requirements: []
|
128
219
|
rubyforge_project:
|
129
|
-
rubygems_version: 1.8.
|
220
|
+
rubygems_version: 1.8.25
|
130
221
|
signing_key:
|
131
222
|
specification_version: 3
|
132
223
|
summary: Gem for interacting with the Populr.me API
|