Introduction
Introduction Statistics Contact Development Disclaimer Help
Initial commit - nextbike - Lita Slack chatbot plugin for nextbike interactions.
Log
Files
Refs
README
---
commit 313798ba3af4f11ab53e9bb687a082db17e87302
Author: Jay Scott <[email protected]>
Date: Fri, 24 Feb 2017 16:16:46 +0000
Initial commit
Diffstat:
A Gemfile | 16 ++++++++++++++++
A Gemfile.lock | 90 +++++++++++++++++++++++++++++…
A handlers/nextbike.rb | 86 ++++++++++++++++++++++++++++++
A lita_config.rb | 35 +++++++++++++++++++++++++++++…
A requirements.txt | 1 +
A templates/nextbike_cities.slack.erb | 5 +++++
A templates/nextbike_location.slack.… | 5 +++++
7 files changed, 238 insertions(+), 0 deletions(-)
---
diff --git a/Gemfile b/Gemfile
@@ -0,0 +1,16 @@
+source "https://rubygems.org"
+
+# Core
+gem "lita"
+
+# Adapters
+gem 'lita-slack'
+
+# Plugins
+gem 'lita-dig', '~> 1.3'
+gem 'lita-whois', '~> 1.1'
+gem "lita-rules"
+gem 'lita-ai'
+
+#Deps
+gem 'nokogiri', '~> 1.6', '>= 1.6.8'
diff --git a/Gemfile.lock b/Gemfile.lock
@@ -0,0 +1,90 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ cleverbot_io (1.2.2)
+ httpclient (~> 2.8)
+ oj (~> 2.15)
+ eventmachine (1.2.1)
+ faraday (0.11.0)
+ multipart-post (>= 1.2, < 3)
+ faye-websocket (0.10.5)
+ eventmachine (>= 0.12.0)
+ websocket-driver (>= 0.5.1)
+ htmlentities (4.3.4)
+ http_router (0.11.2)
+ rack (>= 1.0.0)
+ url_mount (~> 0.2.1)
+ httpclient (2.8.3)
+ i18n (0.7.0)
+ ice_nine (0.11.2)
+ lita (4.7.1)
+ bundler (>= 1.3)
+ faraday (>= 0.8.7)
+ http_router (>= 0.11.2)
+ i18n (>= 0.6.9)
+ ice_nine (>= 0.11.0)
+ multi_json (>= 1.7.7)
+ puma (>= 2.7.1)
+ rack (>= 1.5.2, < 2.0.0)
+ rb-readline (>= 0.5.1)
+ redis-namespace (>= 1.3.0)
+ thor (>= 0.18.1)
+ lita-ai (0.1.3)
+ cleverbot_io (~> 1.2.2)
+ htmlentities (~> 4.3)
+ lita (>= 4.6)
+ lita-dig (1.3.0)
+ lita (>= 4.2)
+ net-dns2
+ lita-rules (0.0.1)
+ lita (>= 3.0)
+ lita-slack (1.8.0)
+ eventmachine
+ faraday
+ faye-websocket (>= 0.8.0)
+ lita (>= 4.7.1)
+ multi_json
+ lita-whois (1.1.0)
+ lita (~> 4.2)
+ whois
+ mini_portile2 (2.1.0)
+ multi_json (1.12.1)
+ multipart-post (2.0.0)
+ net-dns2 (0.8.7)
+ packetfu
+ network_interface (0.0.1)
+ nokogiri (1.7.0.1)
+ mini_portile2 (~> 2.1.0)
+ oj (2.18.1)
+ packetfu (1.1.11)
+ network_interface (~> 0.0)
+ pcaprub (~> 0.12)
+ pcaprub (0.12.4)
+ puma (3.6.2)
+ rack (1.6.5)
+ rb-readline (0.5.3)
+ redis (3.3.2)
+ redis-namespace (1.5.2)
+ redis (~> 3.0, >= 3.0.4)
+ thor (0.19.4)
+ url_mount (0.2.1)
+ rack
+ websocket-driver (0.6.4)
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.2)
+ whois (4.0.1)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ lita
+ lita-ai
+ lita-dig (~> 1.3)
+ lita-rules
+ lita-slack
+ lita-whois (~> 1.1)
+ nokogiri (~> 1.6, >= 1.6.8)
+
+BUNDLED WITH
+ 1.13.5
diff --git a/handlers/nextbike.rb b/handlers/nextbike.rb
@@ -0,0 +1,86 @@
+require 'nokogiri'
+require 'open-uri'
+
+module Lita
+ module Handlers
+
+ class NextBike < Handler
+ REDIS_CITY_KEY = "nc_"
+
+ template_root File.expand_path("../../templates", __FILE__)
+ route('nextbike', :nextbike, help: { "nextbike" => "Shows how many bikes…
+ route('nextbike status', :status)
+ route('nextbike update', :update)
+ route('nextbike show cities', :listcities)
+ route(/^nextbike show location\s(.+)/, :listlocation)
+
+ def status(response)
+ response.reply "Status: All good in the hood."
+ end
+
+ def update(response)
+ doc = Nokogiri::XML(open("https://nextbike.net/maps/nextbike-official.…
+ count = 0
+ doc.search('//country//city').each do |data|
+ uid = data['uid']
+ name = data['name']
+ redis.hset(REDIS_CITY_KEY,uid,name)
+ count+=1
+ end
+ response.reply "*Update*: #{count} cities added/refreshed."
+ end
+
+ def listcities(response)
+ city_list = redis.hvals(REDIS_CITY_KEY)
+ if city_list.empty?
+ response.reply("*Info*: No cities are stored, run update?")
+ else
+ response.reply(render_template("nextbike_cities.slack", data: city_l…
+ end
+ end
+
+ def getUID
+ end
+
+ def getName
+ end
+
+ def listlocation(response)
+ city_uid = nil
+ city_name = response.matches.first
+ city_list = redis.hgetall(REDIS_CITY_KEY)
+ city_list.each do |key, value|
+ if "#{value.downcase}" == "#{city_name.first}"
+ city_uid = key
+ end
+ end
+
+ if city_uid.nil?
+ response.reply("*Info*: Could not find the city #{city_name.first}…
+ return true
+ end
+
+ doc = Nokogiri::XML(open("https://nextbike.net/maps/nextbike-official.…
+ location_list = []
+ doc.search('//country//city//place').each do |data|
+ location_list.push(data['name'])
+ end
+
+ response.reply(render_template("nextbike_location.slack", data: locati…
+ end
+
+ def nextbike(response)
+ doc = Nokogiri::XML(open("https://nextbike.net/maps/nextbike-official.…
+ doc.search('//country//city//place').each do |data|
+ if data['uid'] == "264308"
+ response.reply("*#{data['name']}* has *#{data['bikes']}* bikes lef…
+ end
+ end
+ end
+
+ end
+
+ Lita.register_handler(NextBike)
+
+ end
+end
diff --git a/lita_config.rb b/lita_config.rb
@@ -0,0 +1,35 @@
+require './handlers/nextbike.rb'
+
+Lita.configure do |config|
+
+ # Core
+ config.robot.name = "Gendry"
+ config.robot.alias = "#"
+ config.robot.locale = :en
+ config.robot.log_level = :info
+ #config.robot.adapter = :shell
+ config.robot.admins = ["U3NREU9U0", "U09ADE44V"]
+
+ # Adapter
+ config.robot.adapter = :slack
+ config.adapters.slack.token = ""
+ config.adapters.slack.link_names = true
+ config.adapters.slack.parse = "full"
+ config.adapters.slack.unfurl_links = false
+ config.adapters.slack.unfurl_media = false
+
+ # Redis & HTTP
+ config.redis.host = ""
+ config.redis.port = 6379
+ config.http.port = 7777
+
+ # Plugins
+
+ # lita-dig
+ config.handlers.dig.default_resolver = '8.8.8.8'
+
+ # lita-ai
+ config.handlers.ai.api_user = ''
+ config.handlers.ai.api_key = ''
+
+end
diff --git a/requirements.txt b/requirements.txt
@@ -0,0 +1 @@
+libpcap-devel
diff --git a/templates/nextbike_cities.slack.erb b/templates/nextbike_cities.sl…
@@ -0,0 +1,5 @@
+<% @data.each do | name | %>
+ • <%= name %>
+<% end %>
+
+
diff --git a/templates/nextbike_location.slack.erb b/templates/nextbike_locatio…
@@ -0,0 +1,5 @@
+<% @data.each do | name | %>
+ • <%= name %>
+<% end %>
+
+
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.