Sha256: 6fde92ca17be24e54067d1c777da89c7fc8271d4c2ec2a22f866d7f6a79d167c

Contents?: true

Size: 1.35 KB

Versions: 8

Compression:

Stored size: 1.35 KB

Contents

require 'evma_httpserver'
require 'multi_json'

module Weeter
  module Plugins
    module Subscription
      class Http
        def initialize(client_app_config)
          @config = client_app_config
        end

        def get_initial_filters(&block)
          http = Weeter::Plugins::Net::OauthHttp.get(@config, @config.subscriptions_url)
          http.callback {
            filter_params = {}
            if http.response_header.status == 200
              yield MultiJson.decode(http.response)
            else
              Weeter.logger.error "Initial filters request failed with response code #{http.response_header.status}."
              yield
            end
          }
        end

        def listen_for_filter_update(tweet_consumer)
          EM.start_server('localhost', @config.subscription_updates_port, UpdateServer) do |conn|
            conn.tweet_consumer = tweet_consumer
          end
        end
        
        class UpdateServer < EM::Connection
          include EM::HttpServer
          attr_accessor :tweet_consumer

          def process_http_request
            Weeter.logger.info("Reconnecting Twitter stream")
            filter_params = MultiJson.decode(@http_post_content)
            tweet_consumer.reconnect(filter_params)
            EM::DelegatedHttpResponse.new(self).send_response
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
weeter-0.15.0 lib/weeter/plugins/subscription/http.rb
weeter-0.14.0 lib/weeter/plugins/subscription/http.rb
weeter-0.13.0 lib/weeter/plugins/subscription/http.rb
weeter-0.11.0 lib/weeter/plugins/subscription/http.rb
weeter-0.10.0 lib/weeter/plugins/subscription/http.rb
weeter-0.9.2 lib/weeter/plugins/subscription/http.rb
weeter-0.9.1 lib/weeter/plugins/subscription/http.rb
weeter-0.9.0 lib/weeter/plugins/subscription/http.rb