def _check_custom_insights_entries(self, insights: List[Mapping[str, Any]]): default_fields = list( ResourceSchemaLoader(package_name_from_class(self.__class__)).get_schema("ads_insights").get("properties", {}).keys() ) default_breakdowns = list( ResourceSchemaLoader(package_name_from_class(self.__class__)).get_schema("ads_insights_breakdowns").get("properties", {}).keys() ) default_actions_breakdowns = [e for e in default_breakdowns if "action_" in e] for insight in insights: if insight.get("fields"): value_checked, value = self._check_values(default_fields, insight.get("fields")) if not value_checked: message = f"{value} is not a valid field name" raise Exception("Config validation error: " + message) from None if insight.get("breakdowns"): value_checked, value = self._check_values(default_breakdowns, insight.get("breakdowns")) if not value_checked: message = f"{value} is not a valid breakdown name" raise Exception("Config validation error: " + message) from None if insight.get("action_breakdowns"): value_checked, value = self._check_values(default_actions_breakdowns, insight.get("action_breakdowns")) if not value_checked: message = f"{value} is not a valid action_breakdown name" raise Exception("Config validation error: " + message) from None return True
def get_json_schema(self) -> Mapping[str, Any]: """Add fields from breakdowns to the stream schema :return: A dict of the JSON schema representing this stream. """ schema = ResourceSchemaLoader(package_name_from_class(self.__class__)).get_schema("ads_insights") schema["properties"].update(self._schema_for_breakdowns()) return schema
def fields(self) -> List[str]: """List of fields that we want to query, for now just all properties from stream's schema""" if self._fields: return self._fields schema = ResourceSchemaLoader(package_name_from_class( self.__class__)).get_schema("ads_insights") return list(schema.get("properties", {}).keys())
def get_json_schema(self) -> Mapping[str, Any]: """Add fields from breakdowns to the stream schema :return: A dict of the JSON schema representing this stream. """ loader = ResourceSchemaLoader(package_name_from_class(self.__class__)) schema = loader.get_schema("ads_insights") if self._fields: schema["properties"] = {k: v for k, v in schema["properties"].items() if k in self._fields} if self.breakdowns: breakdowns_properties = loader.get_schema("ads_insights_breakdowns")["properties"] schema["properties"].update({prop: breakdowns_properties[prop] for prop in self.breakdowns}) return schema
def get_json_schema(self) -> Mapping[str, Any]: return ResourceSchemaLoader(package_name_from_class( self.__class__)).get_schema(self.report_schema_name)
def get_json_schema(self) -> Mapping[str, Any]: """All reports have same schema""" return ResourceSchemaLoader( package_name_from_class(AdvertiserIds)).get_schema( self.schema_name)