nucleo-client 0.1.0
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 +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
|
+
|