NSString+RACSupport.m 984 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //
  2. // NSString+RACSupport.m
  3. // ReactiveObjC
  4. //
  5. // Created by Josh Abernathy on 5/11/12.
  6. // Copyright (c) 2012 GitHub, Inc. All rights reserved.
  7. //
  8. #import "NSString+RACSupport.h"
  9. #import "RACReplaySubject.h"
  10. #import "RACScheduler.h"
  11. @implementation NSString (RACSupport)
  12. + (RACSignal *)rac_readContentsOfURL:(NSURL *)URL usedEncoding:(NSStringEncoding *)encoding scheduler:(RACScheduler *)scheduler {
  13. NSCParameterAssert(URL != nil);
  14. NSCParameterAssert(encoding != nil);
  15. NSCParameterAssert(scheduler != nil);
  16. RACReplaySubject *subject = [RACReplaySubject subject];
  17. [subject setNameWithFormat:@"+rac_readContentsOfURL: %@ usedEncoding:scheduler: %@", URL, scheduler];
  18. [scheduler schedule:^{
  19. NSError *error = nil;
  20. NSString *string = [NSString stringWithContentsOfURL:URL usedEncoding:encoding error:&error];
  21. if (string == nil) {
  22. [subject sendError:error];
  23. } else {
  24. [subject sendNext:string];
  25. [subject sendCompleted];
  26. }
  27. }];
  28. return subject;
  29. }
  30. @end