LibIRCClient 1.10 Used by Probotic
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

158 lines
4.5KB

  1. /*
  2. * Copyright (C) 2009 Nathan Ollerenshaw chrome@stupendous.net
  3. *
  4. * This library is free software; you can redistribute it and/or modify it
  5. * under the terms of the GNU Lesser General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or (at your
  7. * option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
  12. * License for more details.
  13. */
  14. #import "IRCClientChannel.h"
  15. #import "IRCClientSession.h"
  16. #import "NSObject+DDExtensions.h"
  17. @implementation IRCClientChannel
  18. @synthesize delegate;
  19. @synthesize name;
  20. @synthesize encoding;
  21. @synthesize session;
  22. @synthesize topic;
  23. @synthesize modes;
  24. @synthesize names;
  25. -(id)init
  26. {
  27. return [self initWithName:nil];
  28. }
  29. -(id)initWithName:(NSString *)aName
  30. {
  31. if ((self = [super init])) {
  32. [self setName:aName];
  33. topic = [[NSString alloc] init];
  34. encoding = NSASCIIStringEncoding;
  35. }
  36. return self;
  37. }
  38. -(void)dealloc
  39. {
  40. [super dealloc];
  41. }
  42. - (int)part
  43. {
  44. return irc_cmd_part([session session], [name cStringUsingEncoding:NSASCIIStringEncoding]);
  45. }
  46. - (int)invite:(NSString *)nick
  47. {
  48. return irc_cmd_invite([session session], [nick cStringUsingEncoding:NSASCIIStringEncoding], [name cStringUsingEncoding:NSASCIIStringEncoding]);
  49. }
  50. - (int)refreshNames
  51. {
  52. return irc_cmd_names([session session], [name cStringUsingEncoding:NSASCIIStringEncoding]);
  53. }
  54. - (void)setTopic:(NSString *)aTopic
  55. {
  56. irc_cmd_topic([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [topic cStringUsingEncoding:encoding]);
  57. }
  58. - (int)setMode:(NSString *)mode params:(NSString *)params
  59. {
  60. return irc_cmd_channel_mode([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [mode cStringUsingEncoding:NSASCIIStringEncoding]);
  61. }
  62. - (int)message:(NSString *)message
  63. {
  64. return irc_cmd_msg([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [message cStringUsingEncoding:encoding]);
  65. }
  66. - (int)action:(NSString *)action
  67. {
  68. return irc_cmd_me([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [action cStringUsingEncoding:encoding]);
  69. }
  70. - (int)notice:(NSString *)notice
  71. {
  72. return irc_cmd_notice([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [notice cStringUsingEncoding:encoding]);
  73. }
  74. - (int)kick:(NSString *)nick reason:(NSString *)reason
  75. {
  76. return irc_cmd_kick([session session], [nick cStringUsingEncoding:NSASCIIStringEncoding], [name cStringUsingEncoding:NSASCIIStringEncoding], [reason cStringUsingEncoding:encoding]);
  77. }
  78. - (int)ctcpRequest:(NSString *)request
  79. {
  80. return irc_cmd_ctcp_request([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [request cStringUsingEncoding:encoding]);
  81. }
  82. // event handlers
  83. //
  84. // These farm events out to the delegate on the main thread.
  85. - (void)onJoin:(NSString *)nick
  86. {
  87. if ([delegate respondsToSelector:@selector(onJoin:)])
  88. [[delegate dd_invokeOnMainThread] onJoin:nick];
  89. }
  90. - (void)onPart:(NSString *)nick reason:(NSString *)reason
  91. {
  92. if ([delegate respondsToSelector:@selector(onPart:reason:)])
  93. [[delegate dd_invokeOnMainThread] onPart:nick reason:reason];
  94. }
  95. - (void)onMode:(NSString *)mode params:(NSString *)params nick:(NSString *)nick
  96. {
  97. if ([delegate respondsToSelector:@selector(onMode:params:nick:)])
  98. [[delegate dd_invokeOnMainThread] onMode:mode params:params nick:nick];
  99. }
  100. - (void)onTopic:(NSString *)aTopic nick:(NSString *)nick
  101. {
  102. [topic release];
  103. topic = [NSString stringWithString:aTopic];
  104. if ([delegate respondsToSelector:@selector(onTopic:nick:)])
  105. [[delegate dd_invokeOnMainThread] onTopic:aTopic nick:nick];
  106. }
  107. - (void)onKick:(NSString *)nick reason:(NSString *)reason byNick:(NSString *)byNick
  108. {
  109. if ([delegate respondsToSelector:@selector(onKick:reason:byNick:)])
  110. [[delegate dd_invokeOnMainThread] onKick:nick reason:reason byNick:byNick];
  111. }
  112. - (void)onPrivmsg:(NSString *)message nick:(NSString *)nick
  113. {
  114. if ([delegate respondsToSelector:@selector(onPrivmsg:nick:)])
  115. [[delegate dd_invokeOnMainThread] onPrivmsg:message nick:nick];
  116. }
  117. - (void)onNotice:(NSString *)notice nick:(NSString *)nick
  118. {
  119. if ([delegate respondsToSelector:@selector(onNotice:nick:)])
  120. [[delegate dd_invokeOnMainThread] onNotice:notice nick:nick];
  121. }
  122. - (void)onAction:(NSString *)action nick:(NSString *)nick
  123. {
  124. if ([delegate respondsToSelector:@selector(onAction:nick:)])
  125. [[delegate dd_invokeOnMainThread] onAction:action nick:nick];
  126. }
  127. @end