populr 0.1.5 → 0.1.6
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/README.rdoc +115 -1
- data/VERSION +1 -1
- data/lib/pop.rb +34 -2
- data/lib/restful_model.rb +8 -4
- data/lib/template.rb +2 -0
- data/populr.gemspec +2 -2
- metadata +13 -13
data/README.rdoc
CHANGED
@@ -1,6 +1,120 @@
|
|
1
1
|
= Populr.me Ruby Gem
|
2
2
|
|
3
|
-
A rubygem for interacting with the Populr.me API from Ruby apps.
|
3
|
+
A rubygem for interacting with the Populr.me API from Ruby apps. If you're just getting started, be sure to check out the sample app at http://github.com/populr/populr_api_ruby_sample
|
4
|
+
|
5
|
+
=== Getting an API Key
|
6
|
+
|
7
|
+
Read the 'Getting Started' section of the API documentation, which explains how to get an API key and create API templates on the Populr.me website:
|
8
|
+
http://developers.populr.me/api
|
9
|
+
|
10
|
+
|
11
|
+
=== Retrieving and Listing Pops and Templates
|
12
|
+
|
13
|
+
# Create an API Connection
|
14
|
+
require 'populr'
|
15
|
+
@populr = Populr.new(<Your API Key>)
|
16
|
+
|
17
|
+
# List the templates in your populr account
|
18
|
+
@populr.templates.each do |template|
|
19
|
+
puts template.id
|
20
|
+
end
|
21
|
+
|
22
|
+
# Fetch a specific template
|
23
|
+
@template = @populr.templates.first
|
24
|
+
@template = @populr.templates.find(params[:template_id])
|
25
|
+
|
26
|
+
# List the pops that have already been created with a template
|
27
|
+
@template.pops.each do |pop|
|
28
|
+
puts pop.id
|
29
|
+
end
|
30
|
+
|
31
|
+
# List pops 100-150
|
32
|
+
@template.pops.range(100,50).each do |pop|
|
33
|
+
puts pop.id
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
=== Creating & Publishing a Pop
|
38
|
+
|
39
|
+
# You must always create a pop from an existing template created
|
40
|
+
# on Populr.me
|
41
|
+
template = @populr.templates.find(<Template ID>)
|
42
|
+
pop = Pop.new(template)
|
43
|
+
|
44
|
+
# Assign it's title, slug, and other properties
|
45
|
+
p.slug = params[:pop_data]['slug']
|
46
|
+
|
47
|
+
# Fill in {{tags}} in the body of the pop using the
|
48
|
+
# values the user has provided in the pop_data parameter
|
49
|
+
for tag,value in params[:pop_data]['tags']
|
50
|
+
p.populate_tag(tag, value)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Optionally set a password that will be required to view
|
54
|
+
p.password = 'pass'
|
55
|
+
|
56
|
+
# Save the pop. This commits our changes above.
|
57
|
+
p.save!
|
58
|
+
|
59
|
+
# Publish the pop. This makes it available at http://p.domain/p.slug.
|
60
|
+
# The pop model is updated with a valid published_pop_url after this line!
|
61
|
+
p.publish!
|
62
|
+
|
63
|
+
|
64
|
+
=== Creating Assets
|
65
|
+
|
66
|
+
# Create a new image asset and fill the region named
|
67
|
+
# 'profile-image-region' with it.
|
68
|
+
file = File.open('my-image.jpg', 'r')
|
69
|
+
asset = @populr.images.build(file, 'Image Name').save!
|
70
|
+
p.populate_region('profile-image-region', asset)
|
71
|
+
|
72
|
+
# Fill in an embed regions by creating a new embed asset with HTML
|
73
|
+
html = "My HTML"
|
74
|
+
asset = @populr.embeds.build(html).save!
|
75
|
+
p.populate_region('youtube-region', asset)
|
76
|
+
|
77
|
+
|
78
|
+
=== Creating Tracers
|
79
|
+
|
80
|
+
# Create a new tracer for our pop. This will allow us to collect
|
81
|
+
# analytics when users visit the page with the tracer code added.
|
82
|
+
tracer = pop.tracers.build
|
83
|
+
tracer.name = 'bengotow@gmail.com'
|
84
|
+
tracer.enable_webhook('http://mysite.com/tracer_viewed/%{pop-id}')
|
85
|
+
tracer.save!
|
86
|
+
|
87
|
+
# The URL (with the ?tc tracer extension) to give to the user.
|
88
|
+
traced_url = #{pop.published_pop_url}?#{tracer.code}
|
89
|
+
|
90
|
+
|
91
|
+
=== Retrieving Tracer Analytics
|
92
|
+
|
93
|
+
pop = @populr.pops.find('<Pop ID>')
|
94
|
+
tracer = pop.tracers.find('<Tracer ID>')
|
95
|
+
|
96
|
+
# Fetch the number of views
|
97
|
+
puts tracer.views
|
98
|
+
|
99
|
+
# Fetch the number of clicks for a particular asset we placed in a region
|
100
|
+
puts tracer.clicks_for_asset('<Asset ID>')
|
101
|
+
|
102
|
+
# Fetch the number of clicks within an entire region (for example, clicks on
|
103
|
+
# a set of documents that were all placed in the same region.)
|
104
|
+
puts tracer.clicks_for_region('profile-image-region')
|
105
|
+
|
106
|
+
|
107
|
+
== Best Practices & Tips
|
108
|
+
|
109
|
+
* Create template pops using the Populr.me website that have everything _except_ what you need to insert via the API.
|
110
|
+
* Show a list of available templates to users, or store template IDs on your server or hardcode them into your app.
|
111
|
+
You cannot perform 'where' queries using the Populr API, so you can't retrieve pops or template by name or labels.
|
112
|
+
* Avoid creating the same asset each time you create a pop. If you plan to put the same image, document or embed in
|
113
|
+
multiple pops, create the assets ahead of time and insert them into each pop.
|
114
|
+
* Consider using the tracer name property to store extra information, such as a user ID or email address.
|
115
|
+
* Do not create hundreds of pops in a hard loop. If you make an exessive number of requests in a small period of time,
|
116
|
+
your API access may be suspended. Use Resque or a rake task to push pop creation to the background.
|
117
|
+
|
4
118
|
|
5
119
|
== Contributing to the Populr.me Ruby Gem
|
6
120
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/lib/pop.rb
CHANGED
@@ -15,6 +15,14 @@ class Pop < RestfulModel
|
|
15
15
|
attr_accessor :published_pop_url
|
16
16
|
attr_accessor :unpopulated_api_regions
|
17
17
|
attr_accessor :unpopulated_api_tags
|
18
|
+
attr_accessor :custom_links
|
19
|
+
attr_accessor :custom_code
|
20
|
+
attr_accessor :clone_link_enabled
|
21
|
+
attr_accessor :clone_link_url
|
22
|
+
attr_accessor :collaboration_link_enabled
|
23
|
+
attr_accessor :collaboration_interstitial_text
|
24
|
+
attr_accessor :collaboration_link_url
|
25
|
+
attr_accessor :collaboration_webhook
|
18
26
|
attr_accessor :domain
|
19
27
|
attr_accessor :password
|
20
28
|
|
@@ -27,8 +35,10 @@ class Pop < RestfulModel
|
|
27
35
|
self.template_id = parent._id
|
28
36
|
self.title = parent.title
|
29
37
|
self.name = parent.name
|
30
|
-
self.unpopulated_api_regions = parent.api_regions
|
31
|
-
self.unpopulated_api_tags = parent.api_tags
|
38
|
+
self.unpopulated_api_regions = parent.api_regions.dup
|
39
|
+
self.unpopulated_api_tags = parent.api_tags.dup
|
40
|
+
self.custom_code = parent.custom_code
|
41
|
+
self.custom_links = parent.custom_links.dup
|
32
42
|
|
33
43
|
elsif parent.is_a?(RestfulModelCollection)
|
34
44
|
@_api = parent.instance_variable_get :@_api
|
@@ -78,6 +88,28 @@ class Pop < RestfulModel
|
|
78
88
|
update('POST', 'unpublish')
|
79
89
|
end
|
80
90
|
|
91
|
+
def enable_collaboration!(interstitial_text = '', webhook = nil)
|
92
|
+
self.collaboration_link_enabled = true
|
93
|
+
self.collaboration_webhook = webhook
|
94
|
+
self.collaboration_interstitial_text = interstitial_text
|
95
|
+
self.save! # go and populate our model with the collaboration link
|
96
|
+
end
|
97
|
+
|
98
|
+
def disable_collaboration
|
99
|
+
self.collaboration_link_enabled = false
|
100
|
+
self.collaboration_link_url = nil
|
101
|
+
end
|
102
|
+
|
103
|
+
def enable_cloning!
|
104
|
+
self.clone_link_enabled = true
|
105
|
+
self.save! # go and populate our model with the clone link
|
106
|
+
end
|
107
|
+
|
108
|
+
def disable_cloning
|
109
|
+
self.clone_link_enabled = false
|
110
|
+
self.clone_link_url = nil # doesn't get saed, just for developer interface
|
111
|
+
end
|
112
|
+
|
81
113
|
def has_unpopulated_region(region_identifier)
|
82
114
|
self.unpopulated_api_regions.include?(region_identifier)
|
83
115
|
end
|
data/lib/restful_model.rb
CHANGED
@@ -43,10 +43,14 @@ class RestfulModel
|
|
43
43
|
setters = methods.grep(/^\w+=$/)
|
44
44
|
setters.each do |setter|
|
45
45
|
getter = setter.to_s[0..setter.to_s.index('=')-1]
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
unless options[:except] && options[:except].include?(getter)
|
47
|
+
value = self.send(getter)
|
48
|
+
unless value.is_a? RestfulModelCollection
|
49
|
+
hash[getter] = value
|
50
|
+
if value.class.method_defined? :as_json
|
51
|
+
value = value.as_json(options)
|
52
|
+
end
|
53
|
+
end
|
50
54
|
end
|
51
55
|
end
|
52
56
|
hash
|
data/lib/template.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.6"
|
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-05-22"
|
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 = [
|
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.6
|
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-05-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &70304957231240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.6'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70304957231240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: shoulda
|
27
|
-
requirement: &
|
27
|
+
requirement: &70304957230380 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70304957230380
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rdoc
|
38
|
-
requirement: &
|
38
|
+
requirement: &70304957229640 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.12'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70304957229640
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70304957227780 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.3.5
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70304957227780
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70304957226680 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 1.8.4
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70304957226680
|
69
69
|
description: ! 'Gem for interacting with the Populr.me API that allows you to create
|
70
70
|
and publish one-page websites, subscribe to web hooks and receive events when those
|
71
71
|
pages are interacted with. Visit http://www.populr.me/ for more information. '
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash: -
|
119
|
+
hash: -668596441403544786
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
122
|
requirements:
|