class PowerTrackV2::Rule
Constants
- DEFAULT_POST_HEADERS
- MAX_TAG_LENGTH
- MAX_VALUE_LENGTH
Attributes
tag[RW]
value[RW]
Public Class Methods
delete(url, rules, optional_headers={})
click to toggle source
# File lib/powertrack_v2/rule.rb, line 62 def self.delete(url, rules, optional_headers={}) post(url + '?_method=delete', rules, optional_headers) end
get(url, optional_headers={})
click to toggle source
# File lib/powertrack_v2/rule.rb, line 35 def self.get(url, optional_headers={}) headers = PowerTrackV2::HTTP.headers(optional_headers) response = PowerTrackV2::HTTP.get(url, headers) handle_response(response) end
handle_response(response)
click to toggle source
# File lib/powertrack_v2/rule.rb, line 41 def self.handle_response(response) return response.body if response.status == 200 || response.status < 300 return PowerTrackV2::Errors.raise_error_for_code(response.status, response.body) end
new(value, tag=nil)
click to toggle source
# File lib/powertrack_v2/rule.rb, line 12 def initialize(value, tag=nil) @value = value @tag = tag end
post(url, rules, optional_headers={})
click to toggle source
# File lib/powertrack_v2/rule.rb, line 50 def self.post(url, rules, optional_headers={}) validate(rules) base_headers = DEFAULT_POST_HEADERS.merge(optional_headers) headers = PowerTrackV2::HTTP.headers(base_headers) body = prepare_rules(rules) response = PowerTrackV2::HTTP.post(url, body, headers) handle_response(response) end
url(publisher, account, stream_label)
click to toggle source
# File lib/powertrack_v2/rule.rb, line 31 def self.url(publisher, account, stream_label) "https://gnip-api.#{publisher}.com/rules/powertrack/accounts/#{account}/publishers/#{publisher}/#{stream_label}.json" end
validate(rules)
click to toggle source
# File lib/powertrack_v2/rule.rb, line 66 def self.validate(rules) raise ::PowerTrackV2::Errors::TooManyRulesError if rules.length > 5000 raise ::PowerTrackV2::Errors::InvalidRuleError unless rules.all? &:valid? end
Private Class Methods
prepare_rules(rules)
click to toggle source
# File lib/powertrack_v2/rule.rb, line 73 def self.prepare_rules(rules) rules = rules.map {|rule| rule.as_json} ::MultiJson.dump({rules: rules}) end
Public Instance Methods
as_json()
click to toggle source
# File lib/powertrack_v2/rule.rb, line 17 def as_json hash = { value: @value } hash[:tag] = @tag if @tag && !@tag.empty? hash end
valid?()
click to toggle source
# File lib/powertrack_v2/rule.rb, line 25 def valid? return false if @value.nil? || @value.length > MAX_VALUE_LENGTH return false if @tag && @tag.length > MAX_TAG_LENGTH true end