user_location_agent.rb 1.3KB

    require 'securerandom' module Agents class UserLocationAgent < Agent cannot_receive_events! cannot_be_scheduled! description do <<-MD The UserLocationAgent creates events based on WebHook POSTS that contain a `latitude` and `longitude`. You can use the POSTLocation iOS app to post your location. Your POST path will be `https://#{DOMAIN}/users/#{user.id}/update_location/:secret` where `:secret` is specified in your options. MD end event_description <<-MD Assuming you're using the iOS application, events look like this: { :latitude => "37.12345", :longitude => "-122.12345", :timestamp => "123456789.0", :altitude => "22.0", :horizontal_accuracy => "5.0", :vertical_accuracy => "3.0", :speed => "0.52595", :course => "72.0703", :device_token => "..." } MD def working? (event = event_created_within(2.days)) && event.payload.present? end def default_options { :secret => SecureRandom.hex(7) } end def validate_options errors.add(:base, "secret is required and must be longer than 4 characters") unless options[:secret].present? && options[:secret].length > 4 end end end