populr 0.1.1 → 0.1.3
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/VERSION +1 -1
- data/lib/asset.rb +1 -2
- data/lib/pop.rb +9 -2
- data/lib/populr.rb +9 -1
- data/lib/restful_model.rb +4 -0
- data/lib/restful_model_collection.rb +5 -1
- data/populr.gemspec +75 -0
- data/spec/pop_spec.rb +17 -0
- metadata +15 -39
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/asset.rb
CHANGED
@@ -12,10 +12,9 @@ class Asset < RestfulModel
|
|
12
12
|
@file = file
|
13
13
|
self.title = title
|
14
14
|
self.description = description
|
15
|
-
self.link = link
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
17
|
+
def as_json(options = {})
|
19
18
|
hash = super(options)
|
20
19
|
hash[:file] = @file if options[:api_representation] && @file
|
21
20
|
hash
|
data/lib/pop.rb
CHANGED
@@ -4,6 +4,7 @@ require 'tracer'
|
|
4
4
|
class Pop < RestfulModel
|
5
5
|
|
6
6
|
class TemplateRequired < StandardError; end
|
7
|
+
class AssetMustBeSaved < StandardError; end
|
7
8
|
|
8
9
|
attr_accessor :template_id
|
9
10
|
attr_accessor :name
|
@@ -25,7 +26,10 @@ class Pop < RestfulModel
|
|
25
26
|
|
26
27
|
if template.is_a?(Template)
|
27
28
|
self.template_id = template._id
|
28
|
-
|
29
|
+
self.unpopulated_api_regions = template.api_regions
|
30
|
+
self.unpopulated_api_tags = template.api_tags
|
31
|
+
|
32
|
+
@_api = template.instance_variable_get :@_api
|
29
33
|
else
|
30
34
|
@_api = api_or_template
|
31
35
|
end
|
@@ -76,7 +80,10 @@ class Pop < RestfulModel
|
|
76
80
|
assets = [assets] unless assets.is_a?(Array)
|
77
81
|
|
78
82
|
@newly_populated_regions[region_identifier] ||= []
|
79
|
-
@newly_populated_regions[region_identifier].concat(assets.map {|a|
|
83
|
+
@newly_populated_regions[region_identifier].concat(assets.map {|a|
|
84
|
+
raise AssetMustBeSaved.new unless a._id
|
85
|
+
a._id
|
86
|
+
})
|
80
87
|
self.unpopulated_api_regions.delete(region_identifier)
|
81
88
|
end
|
82
89
|
|
data/lib/populr.rb
CHANGED
@@ -13,6 +13,13 @@ class Populr
|
|
13
13
|
class AccessDenied < StandardError; end
|
14
14
|
class ResourceNotFound < StandardError; end
|
15
15
|
class UnexpectedResponse < StandardError; end
|
16
|
+
class APIError < StandardError
|
17
|
+
attr_accessor :error_type
|
18
|
+
def initialize(type, error)
|
19
|
+
super(error)
|
20
|
+
self.error_type = type
|
21
|
+
end
|
22
|
+
end
|
16
23
|
|
17
24
|
attr_accessor :api_server
|
18
25
|
attr_reader :api_key
|
@@ -22,11 +29,12 @@ class Populr
|
|
22
29
|
# Handle HTTP errors and RestClient errors
|
23
30
|
raise ResourceNotFound.new if result.code.to_i == 404
|
24
31
|
raise AccessDenied.new if result.code.to_i == 403
|
25
|
-
raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
|
26
32
|
|
27
33
|
# Hande content expectation errors
|
28
34
|
raise UnexpectedResponse.new if options[:expected_class] && result.body.empty?
|
29
35
|
json = JSON.parse(result.body)
|
36
|
+
raise APIError.new(json['error_type'], json['error']) if json.is_a?(Hash) && json['error_type']
|
37
|
+
raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
|
30
38
|
raise UnexpectedResponse.new if options[:expected_class] && !json.is_a?(options[:expected_class])
|
31
39
|
json
|
32
40
|
|
data/lib/restful_model.rb
CHANGED
@@ -39,6 +39,10 @@ class RestfulModel
|
|
39
39
|
setters.each do |setter|
|
40
40
|
getter = setter.to_s[0..setter.to_s.index('=')-1]
|
41
41
|
hash[getter] = self.send(getter)
|
42
|
+
|
43
|
+
if hash[getter].class.method_defined? :as_json
|
44
|
+
hash[getter] = hash[getter].as_json(options)
|
45
|
+
end
|
42
46
|
end
|
43
47
|
hash
|
44
48
|
end
|
@@ -19,6 +19,7 @@ class RestfulModelCollection
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def find(id)
|
22
|
+
return nil unless id
|
22
23
|
get_restful_model(id)
|
23
24
|
end
|
24
25
|
|
@@ -36,6 +37,8 @@ class RestfulModelCollection
|
|
36
37
|
|
37
38
|
def inflate_collection(items = [])
|
38
39
|
@_collection = []
|
40
|
+
|
41
|
+
return unless items.is_a?(Array)
|
39
42
|
items.each do |json|
|
40
43
|
if @model_class < RestfulModel
|
41
44
|
model = @model_class.new(self)
|
@@ -63,7 +66,8 @@ class RestfulModelCollection
|
|
63
66
|
RestClient.get(url){ |response,request,result|
|
64
67
|
json = Populr.interpret_response(result, {:expected_class => Object})
|
65
68
|
if @model_class < RestfulModel
|
66
|
-
model = @model_class.new(
|
69
|
+
model = @model_class.new(@_api)
|
70
|
+
model.instance_variable_set(:@_parent, @_parent)
|
67
71
|
model.inflate(json)
|
68
72
|
else
|
69
73
|
model = @model_class.new(json)
|
data/populr.gemspec
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "populr"
|
8
|
+
s.version = "0.1.3"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Ben Gotow"]
|
12
|
+
s.date = "2013-04-18"
|
13
|
+
s.description = "Gem for interacting with the Populr.me API"
|
14
|
+
s.email = "ben@populr.me"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.md",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.md",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"lib/asset.rb",
|
28
|
+
"lib/document_asset.rb",
|
29
|
+
"lib/domain.rb",
|
30
|
+
"lib/image_asset.rb",
|
31
|
+
"lib/pop.rb",
|
32
|
+
"lib/populr.rb",
|
33
|
+
"lib/restful_model.rb",
|
34
|
+
"lib/restful_model_collection.rb",
|
35
|
+
"lib/template.rb",
|
36
|
+
"lib/tracer.rb",
|
37
|
+
"populr.gemspec",
|
38
|
+
"spec/pop_spec.rb",
|
39
|
+
"spec/populr_spec.rb",
|
40
|
+
"spec/restful_model_collection_spec.rb",
|
41
|
+
"spec/restful_model_spec.rb",
|
42
|
+
"spec/spec_helper.rb",
|
43
|
+
"spec/tracer_spec.rb"
|
44
|
+
]
|
45
|
+
s.homepage = "http://github.com/bengotow/populr"
|
46
|
+
s.licenses = ["MIT"]
|
47
|
+
s.require_paths = ["lib"]
|
48
|
+
s.rubygems_version = "1.8.10"
|
49
|
+
s.summary = "Gem for interacting with the Populr.me API"
|
50
|
+
|
51
|
+
if s.respond_to? :specification_version then
|
52
|
+
s.specification_version = 3
|
53
|
+
|
54
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
55
|
+
s.add_runtime_dependency(%q<rest-client>, [">= 1.6"])
|
56
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
58
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.3.5"])
|
59
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
60
|
+
else
|
61
|
+
s.add_dependency(%q<rest-client>, [">= 1.6"])
|
62
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
63
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
64
|
+
s.add_dependency(%q<bundler>, ["~> 1.3.5"])
|
65
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
66
|
+
end
|
67
|
+
else
|
68
|
+
s.add_dependency(%q<rest-client>, [">= 1.6"])
|
69
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
70
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
71
|
+
s.add_dependency(%q<bundler>, ["~> 1.3.5"])
|
72
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
data/spec/pop_spec.rb
CHANGED
@@ -8,6 +8,23 @@ describe 'Pop' do
|
|
8
8
|
@api = Populr.new('key')
|
9
9
|
end
|
10
10
|
|
11
|
+
describe "#initialize" do
|
12
|
+
it "should accept an API connection followed by a template" do
|
13
|
+
template = Template.new(@api)
|
14
|
+
template._id = '123'
|
15
|
+
pop = Pop.new(@api, template)
|
16
|
+
pop.template_id.should == '123'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should accept just a template" do
|
20
|
+
template = Template.new(@api)
|
21
|
+
template._id = '123'
|
22
|
+
pop = Pop.new(template)
|
23
|
+
pop.template_id.should == '123'
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
11
28
|
describe "#inflate" do
|
12
29
|
it "should inflate tracers into embedded tracer objects" do
|
13
30
|
pop = Pop.new(@api)
|
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.3
|
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-04-
|
12
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70289664776560 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.6'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.6'
|
24
|
+
version_requirements: *70289664776560
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: shoulda
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70289664776020 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *70289664776020
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: rdoc
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70289664775420 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ~>
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '3.12'
|
54
44
|
type: :development
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.12'
|
46
|
+
version_requirements: *70289664775420
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: bundler
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70289664774880 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: 1.3.5
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 1.3.5
|
57
|
+
version_requirements: *70289664774880
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: jeweler
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70289664774400 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ~>
|
@@ -85,12 +65,7 @@ dependencies:
|
|
85
65
|
version: 1.8.4
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 1.8.4
|
68
|
+
version_requirements: *70289664774400
|
94
69
|
description: Gem for interacting with the Populr.me API
|
95
70
|
email: ben@populr.me
|
96
71
|
executables: []
|
@@ -116,6 +91,7 @@ files:
|
|
116
91
|
- lib/restful_model_collection.rb
|
117
92
|
- lib/template.rb
|
118
93
|
- lib/tracer.rb
|
94
|
+
- populr.gemspec
|
119
95
|
- spec/pop_spec.rb
|
120
96
|
- spec/populr_spec.rb
|
121
97
|
- spec/restful_model_collection_spec.rb
|
@@ -137,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
137
113
|
version: '0'
|
138
114
|
segments:
|
139
115
|
- 0
|
140
|
-
hash: -
|
116
|
+
hash: -2374986328273655785
|
141
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
118
|
none: false
|
143
119
|
requirements:
|
@@ -146,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
122
|
version: '0'
|
147
123
|
requirements: []
|
148
124
|
rubyforge_project:
|
149
|
-
rubygems_version: 1.8.
|
125
|
+
rubygems_version: 1.8.10
|
150
126
|
signing_key:
|
151
127
|
specification_version: 3
|
152
128
|
summary: Gem for interacting with the Populr.me API
|