def __init__(self, url, dest_dir=None): self._request = None # make connection self._request = requests.get( url, stream=True, headers={"User-Agent": app.get_user_agent()}, verify=sys.version_info >= (2, 7, 9), ) if self._request.status_code != 200: raise FDUnrecognizedStatusCode(self._request.status_code, url) disposition = self._request.headers.get("content-disposition") if disposition and "filename=" in disposition: self._fname = ( disposition[disposition.index("filename=") + 9 :] .replace('"', "") .replace("'", "") ) else: self._fname = [p for p in url.split("/") if p][-1] self._fname = str(self._fname) self._destination = self._fname if dest_dir: self.set_destination(join(dest_dir, self._fname))
def get_pypi_latest_version(): r = requests.get( "https://pypi.org/pypi/platformio/json", headers={"User-Agent": app.get_user_agent()}, ) r.raise_for_status() return r.json()["info"]["version"]
def __next__(self): base_url = next(self.endpoints_iter) session = EndpointSession(base_url) session.headers.update({"User-Agent": app.get_user_agent()}) adapter = requests.adapters.HTTPAdapter(max_retries=self.retry) session.mount(base_url, adapter) return session
def fetch_remote_content(*args, **kwargs): kwargs["headers"] = kwargs.get("headers", {}) if "User-Agent" not in kwargs["headers"]: kwargs["headers"]["User-Agent"] = app.get_user_agent() if "timeout" not in kwargs: kwargs["timeout"] = __default_requests_timeout__ r = requests.get(*args, **kwargs) r.raise_for_status() return r.text
def load_manifest(url): r = None try: r = requests.get(url, headers={"User-Agent": app.get_user_agent()}) r.raise_for_status() return r.json() except: # pylint: disable=bare-except pass finally: if r: r.close() return None
def _get_api_result( url, params=None, data=None, auth=None # pylint: disable=too-many-branches ): # pylint: disable=import-outside-toplevel from platformio.app import get_user_agent, get_setting result = {} r = None verify_ssl = sys.version_info >= (2, 7, 9) if not url.startswith("http"): url = __apiurl__ + url if not get_setting("strict_ssl"): url = url.replace("https://", "http://") headers = {"User-Agent": get_user_agent()} try: if data: r = _api_request_session().post( url, params=params, data=data, headers=headers, auth=auth, verify=verify_ssl, ) else: r = _api_request_session().get(url, params=params, headers=headers, auth=auth, verify=verify_ssl) result = r.json() r.raise_for_status() return r.text except requests.exceptions.HTTPError as e: if result and "message" in result: raise exception.APIRequestError(result["message"]) if result and "errors" in result: raise exception.APIRequestError(result["errors"][0]["title"]) raise exception.APIRequestError(e) except ValueError: raise exception.APIRequestError("Invalid response: %s" % r.text.encode("utf-8")) finally: if r: r.close() return None
def __init__( self, api_base_url=__pioaccount_api__, retries=3, ): if api_base_url.endswith("/"): api_base_url = api_base_url[:-1] self.api_base_url = api_base_url self._session = requests.Session() self._session.headers.update({"User-Agent": app.get_user_agent()}) retry = Retry( total=retries, read=retries, connect=retries, backoff_factor=2, method_whitelist=list(Retry.DEFAULT_METHOD_WHITELIST) + ["POST"], ) adapter = requests.adapters.HTTPAdapter(max_retries=retry) self._session.mount(api_base_url, adapter)
def _send_data(self, data): if self._http_offline: return False try: r = self._http_session.post( "https://ssl.google-analytics.com/collect", data=data, headers={"User-Agent": app.get_user_agent()}, timeout=1, ) r.raise_for_status() return True except requests.exceptions.HTTPError as e: # skip Bad Request if 400 >= e.response.status_code < 500: return True except: # pylint: disable=W0702 pass self._http_offline = True return False
def get_develop_latest_version(): version = None r = requests.get( "https://raw.githubusercontent.com/platformio/platformio" "/develop/platformio/__init__.py", headers={"User-Agent": app.get_user_agent()}, ) r.raise_for_status() for line in r.text.split("\n"): line = line.strip() if not line.startswith("VERSION"): continue match = re.match(r"VERSION\s*=\s*\(([^\)]+)\)", line) if not match: continue version = match.group(1) for c in (" ", "'", '"'): version = version.replace(c, "") version = ".".join(version.split(",")) assert version return version
def __init__(self, url, dest_dir=None): self._request = None # make connection self._request = requests.get( url, stream=True, headers={"User-Agent": app.get_user_agent()}, timeout=__default_requests_timeout__, ) if self._request.status_code != 200: raise PackageException( "Got the unrecognized status code '{0}' when downloaded {1}". format(self._request.status_code, url)) disposition = self._request.headers.get("content-disposition") if disposition and "filename=" in disposition: self._fname = (disposition[disposition.index("filename=") + 9:].replace('"', "").replace("'", "")) else: self._fname = [p for p in url.split("/") if p][-1] self._fname = str(self._fname) self._destination = self._fname if dest_dir: self.set_destination(join(dest_dir, self._fname))
def _prefill_appinfo(self): self["av"] = __version__ self["an"] = app.get_user_agent()