libfchat 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
+ # This file contains an object designed for writing bots/clients for fchat
2
+
1
3
  module Libfchat
2
4
  begin
3
5
  require 'rubygems'
@@ -17,11 +19,18 @@ module Libfchat
17
19
  attr_reader :version
18
20
  attr_reader :clientname
19
21
 
22
+ ##
23
+ # Initialize the object with the name and version.
24
+ # Default to just identifying as the library
25
+
20
26
  def initialize(clientname="libfchat-ruby by Jippen Faddoul ( http://github.com/jippen/libfchat-ruby )",version=Libfchat::VERSION)
21
27
  @clientname = clientname
22
28
  @version = version
23
29
  end
24
30
 
31
+ ##
32
+ # Login to fchat as a specific user, and start the event machine
33
+
25
34
  def login(server,account,password,character,timeout=30)
26
35
  webapi = Libfchat::WebAPI.new
27
36
  @ticket = webapi.get_ticket(account,password)
@@ -31,16 +40,56 @@ module Libfchat
31
40
  self.http.errback { puts "Could not connect to " + server }
32
41
  self.http.callback {
33
42
  puts "Websocket connected"
34
- self.IDN()
43
+ self.send_IDN(account,character,ticket)
35
44
  }
36
45
 
37
46
  self.http.stream { |msg|
38
- puts "Received: #{msg}"
47
+ puts "#{msg[0,3]}: #{msg[4,-1]}"
48
+ self.send(msg[0,3].upcase,MultiJson.load(msg[4,-1]))
39
49
  }
40
50
  }
41
51
  end
42
52
 
43
- def IDN(account,character,ticket,cname=@clientname,cversion=@version,method="ticket")
53
+ ##
54
+ # Some method_missing magic to make ruby handle just throwing around
55
+ # commands that may or may not exist.
56
+
57
+ def method_missing(method_name, *args, &block)
58
+ # Try to handle all three-letter strings
59
+ if method_name.to_s[0,3] == method_name.to_s
60
+ puts "Dunno how to handle #{method_name.to_s}"
61
+ else
62
+ super(method_name,*args,&block)
63
+ end
64
+ end
65
+
66
+ # ====================================================== #
67
+ # All commands that can be sent by a client have helpers #
68
+ # ====================================================== #
69
+
70
+ ##
71
+ # Performs an account ban against a characters account.
72
+ # *This command requires chat op or higher.*
73
+
74
+ def send_ACB(character)
75
+ json = { :character => character }
76
+ self.http.send( "ACB " + MultiJSON.dump(json) )
77
+ end
78
+
79
+ ##
80
+ # Adds a character to the chat operator list.
81
+ # *This command is admin only.*
82
+
83
+ def send_AOP(character)
84
+ json = { :character => character }
85
+ self.http.send( "AOP " + MultiJSON.dump(json) )
86
+ end
87
+
88
+ ##
89
+ # This command is used to identify with the server.
90
+ # NOTE: If you send any commands before identifying, you will be disconnected.
91
+
92
+ def send_IDN(account,character,ticket,cname=@clientname,cversion=@version,method="ticket")
44
93
  # Initial identification with the server
45
94
  json = {:account => account,
46
95
  :character => character,
@@ -2,5 +2,5 @@ module Libfchat
2
2
  # We're doing this because we might write tests that deal
3
3
  # with other versions of Libfchat and we are unsure how to
4
4
  # handle this better.
5
- VERSION = "0.1.4" unless defined?(::Libfchat::VERSION)
5
+ VERSION = "0.1.5" unless defined?(::Libfchat::VERSION)
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libfchat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: