-
Notifications
You must be signed in to change notification settings - Fork 9
/
BuildUpdater.m
47 lines (38 loc) · 1.12 KB
/
BuildUpdater.m
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
//
// BuildUpdater.m
// Travis CI
//
// Created by Henrik Hodne on 12/1/12.
// Copyright (c) 2012 Travis CI GmbH. All rights reserved.
//
#import "BuildUpdater.h"
#import <ReactiveCocoa/ReactiveCocoa.h>
#import <libextobjc/EXTScope.h>
#import "TravisAPI.h"
#import "BuildEvent.h"
@interface BuildUpdater ()
@property (nonatomic, strong, readonly) RACSignal *inputStream;
@property (nonatomic, strong, readonly) TravisAPI *API;
@end
@implementation BuildUpdater
- (RACSignal *)outputStream {
@weakify(self);
return [[self inputStream] flattenMap:^(BuildEvent *event) {
@strongify(self);
return [[[self API] fetchBuildWithID:[event buildID] forRepository:[event name]] map:^(NSDictionary *build) {
[event updateBuildInfo:build];
return event;
}];
}];
}
+ (BuildUpdater *)buildUpdaterWithInputStream:(RACSignal *)inputStream API:(TravisAPI *)API {
return [[self alloc] initWithInputStream:inputStream API:API];
}
- (id)initWithInputStream:(RACSignal *)inputStream API:(TravisAPI *)API {
self = [super init];
if (self == nil) return nil;
_inputStream = inputStream;
_API = API;
return self;
}
@end