nucleo-client 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.env.sample +2 -0
- data/.gitignore +16 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +37 -0
- data/lib/nucleo/client.rb +172 -0
- data/lib/nucleo/client/version.rb +5 -0
- data/lib/nucleo/configuration.rb +83 -0
- data/lib/nucleo/configurations.rb +6 -0
- data/lib/nucleo/configurations/default.rb +100 -0
- data/lib/nucleo/connection.rb +44 -0
- data/lib/nucleo/errors.rb +7 -0
- data/lib/nucleo/errors/invalid_uri_error.rb +6 -0
- data/lib/nucleo/errors/record_not_found.rb +6 -0
- data/lib/nucleo/logger.rb +36 -0
- data/lib/nucleo/models.rb +50 -0
- data/lib/nucleo/models/change_types.rb +10 -0
- data/lib/nucleo/models/change_types/base.rb +81 -0
- data/lib/nucleo/models/change_types/seo.rb +13 -0
- data/lib/nucleo/models/change_types/seo/base.rb +50 -0
- data/lib/nucleo/models/change_types/seo/meta_description.rb +10 -0
- data/lib/nucleo/models/change_types/seo/page_title.rb +10 -0
- data/lib/nucleo/models/changes.rb +50 -0
- data/lib/nucleo/models/check_js.rb +41 -0
- data/lib/nucleo/models/check_types.rb +11 -0
- data/lib/nucleo/models/check_types/base.rb +25 -0
- data/lib/nucleo/models/check_types/count.rb +26 -0
- data/lib/nucleo/models/check_types/length.rb +26 -0
- data/lib/nucleo/models/check_types/not_exists.rb +8 -0
- data/lib/nucleo/models/checks.rb +56 -0
- data/lib/nucleo/models/concerns.rb +7 -0
- data/lib/nucleo/models/concerns/count.rb +57 -0
- data/lib/nucleo/models/concerns/length.rb +57 -0
- data/lib/nucleo/models/date_range.rb +66 -0
- data/lib/nucleo/models/element.rb +40 -0
- data/lib/nucleo/models/elements.rb +47 -0
- data/lib/nucleo/models/feed.rb +141 -0
- data/lib/nucleo/models/feed_types.rb +11 -0
- data/lib/nucleo/models/feed_types/analytics.rb +18 -0
- data/lib/nucleo/models/feed_types/analytics/base.rb +12 -0
- data/lib/nucleo/models/feed_types/analytics/page/channels.rb +61 -0
- data/lib/nucleo/models/feed_types/analytics/page/pages.rb +58 -0
- data/lib/nucleo/models/feed_types/analytics/page/referrers.rb +61 -0
- data/lib/nucleo/models/feed_types/analytics/page/social.rb +61 -0
- data/lib/nucleo/models/feed_types/analytics/site/channels.rb +61 -0
- data/lib/nucleo/models/feed_types/analytics/site/pages.rb +61 -0
- data/lib/nucleo/models/feed_types/analytics/site/referrers.rb +61 -0
- data/lib/nucleo/models/feed_types/analytics/site/social.rb +61 -0
- data/lib/nucleo/models/feed_types/base.rb +182 -0
- data/lib/nucleo/models/feed_types/seo.rb +22 -0
- data/lib/nucleo/models/feed_types/seo/page/base.rb +47 -0
- data/lib/nucleo/models/feed_types/seo/page/img_alt.rb +90 -0
- data/lib/nucleo/models/feed_types/seo/page/meta_description.rb +49 -0
- data/lib/nucleo/models/feed_types/seo/page/meta_robots.rb +48 -0
- data/lib/nucleo/models/feed_types/seo/page/page_title.rb +48 -0
- data/lib/nucleo/models/feed_types/seo/page/seo_summary.rb +53 -0
- data/lib/nucleo/models/feed_types/seo/page/summary.rb +52 -0
- data/lib/nucleo/models/feed_types/seo/site/base.rb +22 -0
- data/lib/nucleo/models/feed_types/seo/site/img_alt.rb +14 -0
- data/lib/nucleo/models/feed_types/seo/site/meta_description.rb +14 -0
- data/lib/nucleo/models/feed_types/seo/site/meta_robots.rb +14 -0
- data/lib/nucleo/models/feed_types/seo/site/page_title.rb +14 -0
- data/lib/nucleo/models/feeds.rb +126 -0
- data/lib/nucleo/models/metric.rb +54 -0
- data/lib/nucleo/models/metric_period.rb +97 -0
- data/lib/nucleo/models/metric_period_row.rb +125 -0
- data/lib/nucleo/models/metric_period_rows.rb +34 -0
- data/lib/nucleo/models/metric_period_totals.rb +121 -0
- data/lib/nucleo/models/metric_periods.rb +78 -0
- data/lib/nucleo/models/metric_periods_comparison.rb +80 -0
- data/lib/nucleo/models/metric_periods_comparisons.rb +73 -0
- data/lib/nucleo/models/metric_periods_totals.rb +58 -0
- data/lib/nucleo/models/page.rb +147 -0
- data/lib/nucleo/models/page_alerts.rb +27 -0
- data/lib/nucleo/models/page_metric.rb +58 -0
- data/lib/nucleo/models/page_rank.rb +28 -0
- data/lib/nucleo/models/pages.rb +40 -0
- data/lib/nucleo/models/seo_score.rb +28 -0
- data/lib/nucleo/models/site_feed.rb +82 -0
- data/lib/nucleo/models/tag.rb +48 -0
- data/lib/nucleo/models/tags.rb +35 -0
- data/lib/nucleo/requests.rb +14 -0
- data/lib/nucleo/requests/analyzer.rb +35 -0
- data/lib/nucleo/requests/check_js.rb +56 -0
- data/lib/nucleo/requests/feed.rb +58 -0
- data/lib/nucleo/requests/page.rb +113 -0
- data/lib/nucleo/requests/page_alerts.rb +36 -0
- data/lib/nucleo/requests/page_changes.rb +44 -0
- data/lib/nucleo/requests/site.rb +26 -0
- data/lib/nucleo/requests/site_changes.rb +56 -0
- data/lib/nucleo/requests/site_feed.rb +41 -0
- data/lib/nucleo/response.rb +52 -0
- data/lib/nucleo/utilities.rb +7 -0
- data/lib/nucleo/utilities/status_code_mapper.rb +53 -0
- data/lib/nucleo/webhook.rb +26 -0
- data/nucleo-client.gemspec +35 -0
- data/spec/data/models/feed_types/seo/heading_tag_length.json +55 -0
- data/spec/data/models/feed_types/seo/internal_link_count.json +149 -0
- data/spec/data/models/feed_types/seo/no_follow_link_count.json +142 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/unit/nucleo/models/concerns/count_spec.rb +103 -0
- data/spec/unit/nucleo/models/concerns/length_spec.rb +79 -0
- data/spec/unit/nucleo/models/feed_types/analytics/site/pages_no_data_spec.rb +39 -0
- data/spec/unit/nucleo/models/metric_periods_comparison_spec.rb +50 -0
- data/spec/unit/nucleo/models/metric_periods_comparisons_spec.rb +58 -0
- metadata +341 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Models
|
3
|
+
class PageRank
|
4
|
+
# Returns an instance of the PageRank domain model
|
5
|
+
#
|
6
|
+
# @param attributes [Hash]
|
7
|
+
#
|
8
|
+
# @return [Nucleo::Models::PageRank]
|
9
|
+
def initialize(attributes={})
|
10
|
+
@attributes = attributes
|
11
|
+
end
|
12
|
+
|
13
|
+
# Returns the numeric rank
|
14
|
+
#
|
15
|
+
# @return [Integer]
|
16
|
+
def rank
|
17
|
+
@attributes['rank'].to_i
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns the numeric rank max
|
21
|
+
#
|
22
|
+
# @return [Integer]
|
23
|
+
def rank_max
|
24
|
+
@attributes['rank_max'].to_i
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Models
|
3
|
+
class Pages
|
4
|
+
include Enumerable
|
5
|
+
|
6
|
+
def initialize(collection)
|
7
|
+
@collection = Array(collection)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.all(site_id)
|
11
|
+
response_body = Nucleo::Requests::Page.all(site_id)
|
12
|
+
|
13
|
+
Nucleo::Models::Feed.for_record(response_body)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.retrieve(site_id, id)
|
17
|
+
response_body = Nucleo::Requests::Page.retrieve(site_id, id)
|
18
|
+
|
19
|
+
Nucleo::Models::Page.new(response_body)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.retrieve!(site_id, id)
|
23
|
+
response_body = Nucleo::Requests::Page.retrieve!(site_id, id)
|
24
|
+
|
25
|
+
Nucleo::Models::Page.new(response_body)
|
26
|
+
end
|
27
|
+
|
28
|
+
def each(&block)
|
29
|
+
internal_collection.each(&block)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def internal_collection
|
34
|
+
@collection.map do |r|
|
35
|
+
Nucleo::Models::Page.new(r)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Models
|
3
|
+
class SeoScore
|
4
|
+
# Returns an instance of the SeoScore domain model
|
5
|
+
#
|
6
|
+
# @param attributes [Hash]
|
7
|
+
#
|
8
|
+
# @return [Nucleo::Models::SeoScore]
|
9
|
+
def initialize(attributes={})
|
10
|
+
@attributes = attributes
|
11
|
+
end
|
12
|
+
|
13
|
+
# Returns the numeric score
|
14
|
+
#
|
15
|
+
# @return [Integer]
|
16
|
+
def score
|
17
|
+
@attributes['score'].to_i
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns an alpha grade
|
21
|
+
#
|
22
|
+
# @return [String]
|
23
|
+
def grade
|
24
|
+
@attributes['grade']
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require File.expand_path('../feeds', __FILE__)
|
2
|
+
|
3
|
+
module Nucleo
|
4
|
+
module Models
|
5
|
+
class SiteFeed
|
6
|
+
# Returns an instanc eof the Site Feed domain model
|
7
|
+
#
|
8
|
+
# @param attributes [Hash]
|
9
|
+
#
|
10
|
+
# @return [Nucleo::Models::SiteFeed]
|
11
|
+
def initialize(attributes={})
|
12
|
+
@attributes = attributes
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.retrieve(id, params={})
|
16
|
+
response_body = Nucleo::Requests::SiteFeed.retrieve(id, params)
|
17
|
+
|
18
|
+
self.new(response_body)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns the Analytics Pages domain model
|
22
|
+
#
|
23
|
+
# @return [Nucleo::Models::FeedTypes::Analytics::Pages]
|
24
|
+
def pages
|
25
|
+
if @attributes.has_key?('pages')
|
26
|
+
Nucleo::Models::FeedTypes::Analytics::Site::Pages.new(@attributes.fetch('pages', {}))
|
27
|
+
else
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns true if there is an Analytics Pages domain model
|
33
|
+
#
|
34
|
+
# @return [Boolean]
|
35
|
+
def pages?
|
36
|
+
self.pages.present?
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns the Metrics as Feeds
|
40
|
+
#
|
41
|
+
# @return [Nucleo::Models::Feeds]
|
42
|
+
def metrics
|
43
|
+
Nucleo::Models::Feeds.new(@attributes.fetch('metrics', []))
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns true if there are any Metric feed items
|
47
|
+
#
|
48
|
+
# @return [Boolean]
|
49
|
+
def metrics?
|
50
|
+
self.metrics.any?
|
51
|
+
end
|
52
|
+
|
53
|
+
# Returns the Alerts as Feeds
|
54
|
+
#
|
55
|
+
# @return [Nucleo::Models::Feeds]
|
56
|
+
def alerts
|
57
|
+
Nucleo::Models::Feeds.new(@attributes.fetch('alerts', []))
|
58
|
+
end
|
59
|
+
|
60
|
+
# Returns true if there are any alert feed items
|
61
|
+
#
|
62
|
+
# @return [Boolean]
|
63
|
+
def alerts?
|
64
|
+
self.alerts.any?
|
65
|
+
end
|
66
|
+
|
67
|
+
# Returns the changes as Rules
|
68
|
+
#
|
69
|
+
# @return [Nucleo::Models::Rules]
|
70
|
+
def changes
|
71
|
+
Nucleo::Models::Rules.new(@attributes.fetch('changes', []))
|
72
|
+
end
|
73
|
+
|
74
|
+
# Returns true if there are any change rules
|
75
|
+
#
|
76
|
+
# @return [Boolean]
|
77
|
+
def changes?
|
78
|
+
self.changes.any?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Models
|
3
|
+
class Tag
|
4
|
+
include Comparable
|
5
|
+
|
6
|
+
def initialize(attributes={})
|
7
|
+
@attributes = attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
def <=>(other)
|
11
|
+
self.length <=> other.length
|
12
|
+
end
|
13
|
+
|
14
|
+
# Returns the full tag content
|
15
|
+
#
|
16
|
+
# @return [String]
|
17
|
+
def full_tag
|
18
|
+
@attributes['full_tag']
|
19
|
+
end
|
20
|
+
alias :raw_content :full_tag
|
21
|
+
|
22
|
+
# Returns the tag content
|
23
|
+
#
|
24
|
+
# @return [String]
|
25
|
+
def tag_content
|
26
|
+
@attributes['tag_content']
|
27
|
+
end
|
28
|
+
alias :content :tag_content
|
29
|
+
|
30
|
+
# Returns the content length
|
31
|
+
#
|
32
|
+
# @return [Integer]
|
33
|
+
def content_length
|
34
|
+
@attributes['content_length'].to_i
|
35
|
+
end
|
36
|
+
alias :length :content_length
|
37
|
+
|
38
|
+
# Returns the HTML wrapped snippet
|
39
|
+
#
|
40
|
+
# @todo: Extract this to a view helper
|
41
|
+
#
|
42
|
+
# @return [String]
|
43
|
+
def snippet
|
44
|
+
"<p><code>%s</code></p>" % [CGI.escapeHTML(self.full_tag)]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Models
|
3
|
+
class Tags
|
4
|
+
include Enumerable
|
5
|
+
|
6
|
+
def initialize(collection)
|
7
|
+
@collection = Array(collection)
|
8
|
+
end
|
9
|
+
|
10
|
+
def each(&block)
|
11
|
+
internal_collection.each(&block)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Returns true if there is a snipped
|
15
|
+
#
|
16
|
+
# @return [Boolean]
|
17
|
+
def has_snippet?
|
18
|
+
self.any?
|
19
|
+
end
|
20
|
+
alias :snippet? :has_snippet?
|
21
|
+
|
22
|
+
# Returns the code snippet
|
23
|
+
#
|
24
|
+
# @return [String]
|
25
|
+
def snippet
|
26
|
+
self.map(&:snippet).join("\n")
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def internal_collection
|
31
|
+
@collection.map { |r| Nucleo::Models::Tag.new(r) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path('../requests/analyzer', __FILE__)
|
2
|
+
require File.expand_path('../requests/page_alerts', __FILE__)
|
3
|
+
require File.expand_path('../requests/site_feed', __FILE__)
|
4
|
+
require File.expand_path('../requests/site_changes', __FILE__)
|
5
|
+
require File.expand_path('../requests/page_changes', __FILE__)
|
6
|
+
require File.expand_path('../requests/site', __FILE__)
|
7
|
+
require File.expand_path('../requests/feed', __FILE__)
|
8
|
+
require File.expand_path('../requests/page', __FILE__)
|
9
|
+
require File.expand_path('../requests/check_js', __FILE__)
|
10
|
+
|
11
|
+
module Nucleo
|
12
|
+
module Requests
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Requests
|
3
|
+
class Analyzer
|
4
|
+
def self.analyze!(attributes={})
|
5
|
+
route = Nucleo::Client.routes.route_for('analyzer')
|
6
|
+
url = route.url_for
|
7
|
+
|
8
|
+
request_params = attributes
|
9
|
+
|
10
|
+
response = Nucleo::Client.post(url, MultiJson.dump(request_params))
|
11
|
+
|
12
|
+
unless response.success?
|
13
|
+
raise Nucleo::Errors::InvalidUriError.new("URL is invalid")
|
14
|
+
end
|
15
|
+
|
16
|
+
response.body
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.analyze(attributes={})
|
20
|
+
route = Nucleo::Client.routes.route_for('analyzer')
|
21
|
+
url = route.url_for
|
22
|
+
|
23
|
+
request_params = attributes
|
24
|
+
|
25
|
+
response = Nucleo::Client.post(url, MultiJson.dump(request_params))
|
26
|
+
|
27
|
+
if response.success?
|
28
|
+
response.body
|
29
|
+
else
|
30
|
+
{}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Requests
|
3
|
+
class CheckJS
|
4
|
+
|
5
|
+
# Check if a url has the JS installed
|
6
|
+
#
|
7
|
+
# @param url [String] The url to check
|
8
|
+
#
|
9
|
+
# @return [JSON]
|
10
|
+
def self.retrieve(params={})
|
11
|
+
url = params[:url]
|
12
|
+
|
13
|
+
default_params = {
|
14
|
+
:url => url,
|
15
|
+
}
|
16
|
+
|
17
|
+
request_params = default_params.merge!(params)
|
18
|
+
|
19
|
+
route = Nucleo::Client.routes.route_for('util-checkjs')
|
20
|
+
url = route.url_for(request_params)
|
21
|
+
|
22
|
+
request = Nucleo::Client.get(url)
|
23
|
+
|
24
|
+
request.on(:success) do |resp|
|
25
|
+
response_body = resp.body
|
26
|
+
|
27
|
+
if response_body.is_a?(Hash) && response_body.has_key?("errorType")
|
28
|
+
Nucleo::Client.configuration.logger.error do
|
29
|
+
"ERR: %s" % [response_body]
|
30
|
+
end
|
31
|
+
|
32
|
+
return {}
|
33
|
+
else
|
34
|
+
return response_body
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
request.on(:failure) do |resp|
|
39
|
+
Nucleo::Client.configuration.logger.error do
|
40
|
+
"App Error: %s" % [resp.body]
|
41
|
+
end
|
42
|
+
|
43
|
+
return {}
|
44
|
+
end
|
45
|
+
|
46
|
+
request.on(:server_error) do |resp|
|
47
|
+
Nucleo::Client.configuration.logger.error do
|
48
|
+
"Server Error: %s" % [resp.body]
|
49
|
+
end
|
50
|
+
|
51
|
+
return {}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Requests
|
3
|
+
class Feed
|
4
|
+
|
5
|
+
# Retrieve a feed with the specified params
|
6
|
+
#
|
7
|
+
# @param site_id [String,Integer] The ID of the site for the feed
|
8
|
+
# @param max_feed_items [Integer] Max number of feed items
|
9
|
+
#
|
10
|
+
# @return [JSON]
|
11
|
+
def self.retrieve(site_id, params={})
|
12
|
+
|
13
|
+
default_params = {
|
14
|
+
:id => site_id,
|
15
|
+
:max_feed_items => 10
|
16
|
+
}
|
17
|
+
|
18
|
+
request_params = default_params.merge!(params)
|
19
|
+
|
20
|
+
route = Nucleo::Client.routes.route_for('site-feed')
|
21
|
+
url = route.url_for(request_params)
|
22
|
+
|
23
|
+
request = Nucleo::Client.get(url)
|
24
|
+
|
25
|
+
request.on(:success) do |resp|
|
26
|
+
response_body = resp.body
|
27
|
+
|
28
|
+
if response_body.is_a?(Hash) && response_body.has_key?("errorType")
|
29
|
+
Nucleo::Client.configuration.logger.error do
|
30
|
+
"ERR: %s" % [response_body]
|
31
|
+
end
|
32
|
+
|
33
|
+
return []
|
34
|
+
else
|
35
|
+
return response_body
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
request.on(:failure) do |resp|
|
40
|
+
Nucleo::Client.configuration.logger.error do
|
41
|
+
"App Error: %s" % [resp.body]
|
42
|
+
end
|
43
|
+
|
44
|
+
return []
|
45
|
+
end
|
46
|
+
|
47
|
+
request.on(:server_error) do |resp|
|
48
|
+
Nucleo::Client.configuration.logger.error do
|
49
|
+
"Server Error: %s" % [resp.body]
|
50
|
+
end
|
51
|
+
|
52
|
+
return []
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module Nucleo
|
2
|
+
module Requests
|
3
|
+
class Page
|
4
|
+
def self.all(site_id)
|
5
|
+
route = Nucleo::Client.routes.route_for('site-pages')
|
6
|
+
url = route.url_for(id: site_id)
|
7
|
+
|
8
|
+
request = Nucleo::Client.get(url)
|
9
|
+
|
10
|
+
request.on(:success) do |resp|
|
11
|
+
response_body = resp.body
|
12
|
+
|
13
|
+
if response_body.is_a?(Hash) && response_body.has_key?("errorType")
|
14
|
+
Nucleo::Client.configuration.logger.error do
|
15
|
+
"ERR: %s" % [response_body]
|
16
|
+
end
|
17
|
+
|
18
|
+
return []
|
19
|
+
else
|
20
|
+
return response_body
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
request.on(:failure) do |resp|
|
25
|
+
Nucleo::Client.configuration.logger.error do
|
26
|
+
"App Error: %s" % [resp.body]
|
27
|
+
end
|
28
|
+
|
29
|
+
return []
|
30
|
+
end
|
31
|
+
|
32
|
+
request.on(:server_error) do |resp|
|
33
|
+
Nucleo::Client.configuration.logger.error do
|
34
|
+
"Server Error: %s" % [resp.body]
|
35
|
+
end
|
36
|
+
|
37
|
+
return []
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.retrieve!(site_id, id)
|
42
|
+
route = Nucleo::Client.routes.route_for('site-page-detail')
|
43
|
+
url = route.url_for(site_id: site_id, id: id)
|
44
|
+
|
45
|
+
request = Nucleo::Client.get(url)
|
46
|
+
|
47
|
+
request.on(:success) do |resp|
|
48
|
+
response_body = resp.body
|
49
|
+
|
50
|
+
if response_body.is_a?(Hash) && response_body.has_key?("errorType")
|
51
|
+
msg = "Could not page with id %s" % [id]
|
52
|
+
raise Nucleo::Errors::RecordNotFound.new(msg) and return
|
53
|
+
else
|
54
|
+
# We need to merge in the `page` to be the root object
|
55
|
+
page_object = response_body.fetch('page', {})
|
56
|
+
|
57
|
+
response_body = response_body.merge!(page_object)
|
58
|
+
|
59
|
+
return response_body
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
request.on(:failure, :server_error) do |resp|
|
64
|
+
msg = "Could not find page with id %s" % [id]
|
65
|
+
raise Nucleo::Errors::RecordNotFound.new(msg) and return
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.retrieve(site_id, id)
|
70
|
+
route = Nucleo::Client.routes.route_for('site-page-detail')
|
71
|
+
url = route.url_for(site_id: site_id, id: id)
|
72
|
+
|
73
|
+
request = Nucleo::Client.get(url)
|
74
|
+
|
75
|
+
request.on(:success) do |resp|
|
76
|
+
response_body = resp.body
|
77
|
+
|
78
|
+
if response_body.is_a?(Hash) && response_body.has_key?("errorType")
|
79
|
+
Nucleo::Client.configuration.logger.error do
|
80
|
+
"ERR: %s" % [response_body]
|
81
|
+
end
|
82
|
+
|
83
|
+
return []
|
84
|
+
else
|
85
|
+
# We need to merge in the `page` to be the root object
|
86
|
+
page_object = response_body.fetch('page', {})
|
87
|
+
|
88
|
+
response_body = response_body.merge!(page_object)
|
89
|
+
|
90
|
+
return response_body
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
request.on(:failure) do |resp|
|
95
|
+
Nucleo::Client.configuration.logger.error do
|
96
|
+
"App Error: %s" % [resp.body]
|
97
|
+
end
|
98
|
+
|
99
|
+
return []
|
100
|
+
end
|
101
|
+
|
102
|
+
request.on(:server_error) do |resp|
|
103
|
+
Nucleo::Client.configuration.logger.error do
|
104
|
+
"Server Error: %s" % [resp.body]
|
105
|
+
end
|
106
|
+
|
107
|
+
return []
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|