Total Complexity | 5 |
Total Lines | 32 |
Duplicated Lines | 0 % |
Changes | 4 | ||
Bugs | 0 | Features | 0 |
1 | """ |
||
18 | class WaterOffice(RemoteGage): |
||
19 | """ |
||
20 | BC_07EA004 |
||
21 | """ |
||
22 | @staticmethod |
||
23 | def get_from_wateroffice(remote_id): |
||
24 | province = remote_id.split('_')[0] |
||
25 | url = 'http://dd.weather.gc.ca/hydrometric/csv/{}/hourly/{}_hourly_hydrometric.csv'.format(province, remote_id) |
||
26 | response = requests.get(url) |
||
27 | riter = response.iter_lines(decode_unicode=True) |
||
28 | next(riter) |
||
29 | reader = csv.reader(riter) |
||
30 | lines = [] |
||
31 | for row in reader: |
||
32 | lines.append(row) |
||
33 | last = lines[-1] |
||
34 | level = float(last[2]) |
||
35 | try: |
||
36 | discharge = float(last[6]) |
||
37 | except ValueError: |
||
38 | discharge = None |
||
39 | dt = arrow.get(last[1]).datetime |
||
40 | |||
41 | return dt, level, discharge |
||
42 | |||
43 | def get_sample(self, sensor_id): |
||
44 | sensor = self.sensor(sensor_id) |
||
45 | dt, level, discharge = self.get_from_wateroffice(sensor.remote_id) |
||
46 | if sensor.remote_parameter == 'discharge': |
||
47 | add_new_sample(sensor.id, dt, discharge) |
||
48 | else: |
||
49 | add_new_sample(sensor.id, dt, level) |
||
50 |