View/send SMS via pushbullet.
Author: yazgoo
— Version: 1.0
— License: MIT
For WeeChat ≥ 0.3.0.
Tags: notify, sms
Added: 2018-11-11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | # author: Olivier 'yazgoo' Abdesselam # license: MIT # home repository: https://github.com/yazgoo/weechat-pushbullet require 'rubygems' require 'presbeus' $presbeus = Presbeus.new(false) def send_sms(b, command, rc, out, err) Weechat.print(b, ">\t#{out}") return Weechat::WEECHAT_RC_OK end def buffer_input_cb(data, b, input_data) device = Weechat.buffer_get_string(b, "localvar_device") req = $presbeus.send_sms device, data, input_data args = h(req).merge({"postfields" => req[:payload].to_s, "post" => 1}) Weechat.print(b, ">\t#{input_data}") Weechat.hook_process_hashtable( "url:#{req[:url]}", args, 120 * 1000, "send_sms", b) return Weechat::WEECHAT_RC_OK end def buffer_close_cb(data, buffer) return Weechat::WEECHAT_RC_OK end def load_thread(b, command, rc, out, err) JSON.parse(out)["thread"].reverse.each do |c| Weechat.print(b, "#{c["direction"] == "outgoing" ? ">" : "<"}\t#{c["body"]}") end return Weechat::WEECHAT_RC_OK end def reload_thread(data, b, args) address = Weechat.buffer_get_string(b, "localvar_address") device = Weechat.buffer_get_string(b, "localvar_device") req = $presbeus.get_v2("permanents/#{device}_thread_#{address}") Weechat.hook_process_hashtable( "url:#{req[:url]}", h(req), 120 * 1000, "load_thread", b) return Weechat::WEECHAT_RC_OK end def load_threads(device, command, rc, out, err) Weechat.print('', "loading device #{device}") JSON.parse(out)["threads"].map{|x| Presbeus.parse_thread(x)}.each do |address, name| Weechat.print('', "creating buffer for #{device} #{address} #{name}") b = Weechat.buffer_new(name, 'buffer_input_cb', name, 'buffer_close_cb', name) Weechat.buffer_set(b, "localvar_set_address", address) Weechat.buffer_set(b, "localvar_set_device", device) reload_thread(nil, b, nil) end return Weechat::WEECHAT_RC_OK end def get_devices(data, command, rc, out, err) Weechat.print('', "devices:") JSON.parse(out)["devices"].each { |d| Weechat.print('', "#{d["iden"]} : #{d["model"]}") } return Weechat::WEECHAT_RC_OK end def h req {"httpheader" => req[:headers].map { |a, b| "#{a}:#{b}" }.join("\n")} end def load_device(data, b, device) Weechat.print('', "loading treads for device #{$presbeus.default_device}") req = $presbeus.get_v2("permanents/#{device}_threads") Weechat.hook_process_hashtable( "url:#{req[:url]}", h(req), 120 * 1000, "load_threads", device) end def weechat_init Weechat.register('pushbullet', 'PushBullet', '1.0', 'GPL3', 'Pushbullet', '', '') Weechat.hook_command("pb_r", "reload pushbullet tread", "", "", "", "reload_thread", "") Weechat.hook_command("pb_d", "load device", "", "", "", "load_device", "") req = $presbeus.get_v2("devices") Weechat.hook_process_hashtable( "url:#{req[:url]}", h(req), 120 * 1000, "get_devices", "") Weechat.print('', "launch '/pb_d <device_id>' to load device") if !$presbeus.default_device.nil? load_device(nil, nil, $presbeus.default_device) end return Weechat::WEECHAT_RC_OK end |