|
1 | 1 | import logging |
| 2 | +import urllib.parse |
2 | 3 | from typing import Any, Dict, List, Optional |
3 | 4 |
|
4 | 5 | from asgiref.sync import async_to_sync |
@@ -100,22 +101,43 @@ def provider_slug() -> str: |
100 | 101 | @classmethod |
101 | 102 | def get_output_template(cls) -> OutputTemplate | None: |
102 | 103 | return OutputTemplate( |
103 | | - markdown="", |
| 104 | + markdown="{{response}}", |
| 105 | + jsonpath="$.accounts", |
104 | 106 | ) |
105 | 107 |
|
106 | 108 | def process(self) -> dict: |
107 | | - data = self._input.model_dump() |
108 | | - data["page"] = self._config.page |
109 | | - data["per_page"] = self._config.page_size |
110 | | - |
111 | 109 | provider_config = self.get_provider_config(provider_slug=self.provider_slug()) |
112 | 110 | api_key = provider_config.api_key |
113 | 111 |
|
| 112 | + query_params_str = "" |
| 113 | + for key, values in self._input.model_dump().items(): |
| 114 | + if not values: |
| 115 | + continue |
| 116 | + |
| 117 | + values = [urllib.parse.quote(value) for value in values] |
| 118 | + if key == "organization_num_employees_ranges" and values: |
| 119 | + query_params_str += f"&organization_num_employees_ranges[]={','.join(values)}" |
| 120 | + elif key == "organization_locations" and values: |
| 121 | + query_params_str += f"&organization_locations[]={','.join(values)}" |
| 122 | + elif key == "organization_not_locations" and values: |
| 123 | + query_params_str += f"&organization_not_locations[]={','.join(values)}" |
| 124 | + elif key == "q_organization_keyword_tags" and values: |
| 125 | + query_params_str += f"&q_organization_keyword_tags[]={','.join(values)}" |
| 126 | + elif key == "q_organization_name" and values: |
| 127 | + query_params_str += f"&q_organization_name={values}" |
| 128 | + elif key == "organization_ids" and values: |
| 129 | + query_params_str += f"&organization_ids[]={','.join(values)}" |
| 130 | + |
| 131 | + if query_params_str: |
| 132 | + query_params_str = "?" + query_params_str[1:] |
| 133 | + |
| 134 | + query_url = f"https://api.apollo.io/api/v1/mixed_companies/search{query_params_str}&page={self._config.page}&per_page={self._config.page_size}" |
| 135 | + |
114 | 136 | response = prequests.post( |
115 | | - url="https://api.apollo.io/api/v1/mixed_companies/search", |
116 | | - json=data, |
| 137 | + url=query_url, |
117 | 138 | headers={"Cache-Control": "no-cache", "Content-Type": "application/json", "X-Api-Key": api_key}, |
118 | 139 | ) |
| 140 | + |
119 | 141 | if response.ok: |
120 | 142 | self._usage_data.append( |
121 | 143 | ("apollo/*/*/*", MetricType.API_INVOCATION, (provider_config.provider_config_source, 1)) |
|
0 commit comments