def _get_annotations(self, inst): """ Get annotations of the inst pandas Series object """ params = { "beginDT": unix_time_millis( parser.parse( inst.begin_date).replace(tzinfo=pytz.UTC)), # noqa "endDT": unix_time_millis( parser.parse(inst.end_date).replace(tzinfo=pytz.UTC)), # noqa "method": inst.stream_method, "refdes": inst.reference_designator, "stream": inst.stream_rd, } rannotations = fetch_url( requests.Request( "GET", self._OOI_M2M_ANNOTATIONS, auth=(self.ooi_username, self.ooi_token), params=params, ).prepare(), session=self._session, ) if rannotations: return parse_annotations_json(rannotations.json()) return None
def _perform_request(self, arg): """ Function that perform task from queue """ # when this exits, the print_lock is released with print_lock: req = fetch_url(prepped_request=arg, session=self._session) if req.json(): jsonres = req.json() if "status_code" in jsonres: jsonres["request_url"] = req.url self._raw_data.append(jsonres) logger.debug(arg)
def _get_global_ranges(self): """ Get global ranges in OOI """ if self._rglobal_range: rglobal_range = self._rglobal_range else: rglobal_range = fetch_url( requests.Request("GET", self._OOI_GLOBAL_RANGE).prepare(), session=self._session, ) self._rglobal_range = rglobal_range global_ranges = pd.read_csv(StringIO(rglobal_range.text)) return parse_global_range_dataframe(global_ranges)
def _get_deployments(self, inst): """ Get deployment of the inst pandas Series object """ params = {"refdes": inst.reference_designator} rdeployments = fetch_url( requests.Request( "GET", self._OOI_M2M_DEPLOYMENT_QUERY, # noqa auth=(self.ooi_username, self.ooi_token), params=params, ).prepare(), session=self._session, ) if rdeployments: return parse_deployments_json(rdeployments.json(), inst) return None
def _get_vocab(self): """ Get vocabulary """ if self._rvocab: rvocab = self._rvocab else: rvocab = fetch_url( requests.Request( "GET", self._OOI_M2M_VOCAB, auth=(self.ooi_username, self.ooi_token), ).prepare(), session=self._session, ) self._rvocab = rvocab return pd.DataFrame(rvocab.json())
def _get_streams(self): """ Get OOI Streams """ if self._rstreams: rstreams = self._rstreams else: rstreams = fetch_url( requests.Request( "GET", self._OOI_M2M_STREAMS, auth=(self.ooi_username, self.ooi_token), ).prepare(), session=self._session, ) self._rstreams = rstreams streamsdf = pd.DataFrame.from_records(rstreams.json()).copy() return parse_streams_dataframe(streamsdf)
def _fetch_monthly_stats(self, inst): """ Fetched monthly stats for instrument object """ rmstats = fetch_url( requests.Request( "GET", f"{self._OOI_VISUALOCEAN_M_STATS}/{inst.reference_designator}.json", ).prepare(), # noqa session=self._session, ) mstatsdf = pd.DataFrame(rmstats.json()).copy() mstatsdf.loc[:, "percentage"] = mstatsdf.percentage.apply( lambda row: row * 100.0) mstatsdf.loc[:, "reference_designator"] = inst.reference_designator return mstatsdf.rename( { "stream": "stream_rd", "method": "stream_method" }, axis=1)
def _get_instruments_catalog(self): """ Get instruments catalog """ if self._rtoc: rtoc = self._rtoc else: rtoc = fetch_url( requests.Request( "GET", self._OOI_M2M_TOC, auth=(self.ooi_username, self.ooi_token), ).prepare(), session=self._session, ) self._rtoc = rtoc toc_json = rtoc.json() instruments_json = toc_json["instruments"] return parse_toc_instruments(instruments_json)