diff --git a/STTwitter/NSString+STTwitter.h b/STTwitter/NSString+STTwitter.h old mode 100644 new mode 100755 index e1346f9..e3f708c --- a/STTwitter/NSString+STTwitter.h +++ b/STTwitter/NSString+STTwitter.h @@ -21,5 +21,8 @@ extern NSUInteger kSTTwitterDefaultShortURLLengthHTTPS; // use default values for URL shortening - (NSInteger)numberOfCharactersInATweet; +- (NSString *)stringByConvertingHTMLToPlainText; +-(NSString *)stringByRemovingURLs; +-(NSString *)stringByRemovingMentions; @end diff --git a/STTwitter/NSString+STTwitter.m b/STTwitter/NSString+STTwitter.m old mode 100644 new mode 100755 index 1e4e928..7f46cfe --- a/STTwitter/NSString+STTwitter.m +++ b/STTwitter/NSString+STTwitter.m @@ -69,4 +69,70 @@ - (NSInteger)numberOfCharactersInATweet { shortURLLengthHTTPS:kSTTwitterDefaultShortURLLengthHTTPS]; } + +- (NSString *)stringByConvertingHTMLToPlainText { + return [[[self stringByReplacingOccurrencesOfString: @"&" withString: @"&"] + stringByReplacingOccurrencesOfString: @">" withString: @">"] + stringByReplacingOccurrencesOfString: @"<" withString: @"<"]; + +} + +-(NSString *)stringByRemovingURLs{ + NSString *s = [self precomposedStringWithCanonicalMapping]; + + + NSError *error = nil; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(https?://\\S+)" + options:0 + error:&error]; + + NSArray *matches = [regex matchesInString:s + options:0 + range:NSMakeRange(0, [s length])]; + + NSMutableArray* arr=[[NSMutableArray alloc] init]; + + for (NSTextCheckingResult *match in matches) { + + NSString* matchStr=[s substringWithRange:match.range]; + [arr addObject:matchStr]; + } + + for (NSString * match in arr) { + s=[s stringByReplacingOccurrencesOfString:match withString:@""]; + } + + return s; +} + + +-(NSString *)stringByRemovingMentions{ + NSString *s = [self precomposedStringWithCanonicalMapping]; + + + NSError *error = nil; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\b[@\\w]+\\b" + options:0 + error:&error]; + + NSArray *matches = [regex matchesInString:s + options:0 + range:NSMakeRange(0, [s length])]; + + NSMutableArray* arr=[[NSMutableArray alloc] init]; + + for (NSTextCheckingResult *match in matches) { + + NSString* matchStr=[s substringWithRange:match.range]; + [arr addObject:matchStr]; + } + + for (NSString * match in arr) { + s=[s stringByReplacingOccurrencesOfString:match withString:@""]; + } + + return s; +} + + @end diff --git a/STTwitter/STTwitterAPI.h b/STTwitter/STTwitterAPI.h index adb2f41..b0af05f 100644 --- a/STTwitter/STTwitterAPI.h +++ b/STTwitter/STTwitterAPI.h @@ -364,7 +364,7 @@ NS_ENUM(NSUInteger, STTwitterAPIErrorCode) { The Tweet text will be rewritten to include the media URL(s), which will reduce the number of characters allowed in the Tweet text. If the URL(s) cannot be appended without text truncation, the tweet will be rejected and this method will return an HTTP 403 error. */ -- (void)postStatusUpdate:(NSString *)status +- (id)postStatusUpdate:(NSString *)status mediaDataArray:(NSArray *)mediaDataArray // only one media is currently supported, help/configuration.json returns "max_media_per_upload" = 1 possiblySensitive:(NSNumber *)possiblySensitive inReplyToStatusID:(NSString *)inReplyToStatusID diff --git a/STTwitter/STTwitterAPI.m b/STTwitter/STTwitterAPI.m index 856fe16..19d2142 100644 --- a/STTwitter/STTwitterAPI.m +++ b/STTwitter/STTwitterAPI.m @@ -377,12 +377,12 @@ - (void)postAPIResource:(NSString *)resource errorBlock:errorBlock]; } -- (void)postAPIResource:(NSString *)resource +- (id)postAPIResource:(NSString *)resource parameters:(NSDictionary *)parameters successBlock:(void(^)(NSDictionary *rateLimits, id json))successBlock errorBlock:(void(^)(NSError *error))errorBlock { - [self postResource:resource + return [self postResource:resource baseURLString:kBaseURLStringAPI parameters:parameters progressBlock:nil @@ -827,7 +827,7 @@ - (void)postStatusUpdate:(NSString *)status }]; } -- (void)postStatusUpdate:(NSString *)status +- (id)postStatusUpdate:(NSString *)status mediaDataArray:(NSArray *)mediaDataArray // only one media is currently supported, help/configuration.json returns "max_media_per_upload" = 1 possiblySensitive:(NSNumber *)possiblySensitive inReplyToStatusID:(NSString *)inReplyToStatusID @@ -852,7 +852,7 @@ - (void)postStatusUpdate:(NSString *)status md[@"media[]"] = [mediaDataArray objectAtIndex:0]; md[kSTPOSTDataKey] = @"media[]"; - [self postAPIResource:@"statuses/update_with_media.json" parameters:md successBlock:^(NSDictionary *rateLimits, id response) { + return [self postAPIResource:@"statuses/update_with_media.json" parameters:md successBlock:^(NSDictionary *rateLimits, id response) { successBlock(response); } errorBlock:^(NSError *error) { errorBlock(error);