You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: mod.rs
    path of file: ./repos/cnosdb/main/src/report
    
    the code of the file until where you have to start completion: use std::fmt::Debug;
use std::ops::Add;

use lazy_static::lazy_static;
use serde::Serialize;
use tokio::task::JoinHandle;
use trace::debug;

use crate::spi::service::Service;
use crate::{server, VERSION};

async fn get_country_code_and_regin_name() -> (String, String) {
    let client = reqwest::Client::new();

    let request = match client.post("http://ip-api.com/json/").build() {
        Ok(request) => request,
        Err(_) => return (String::new(), String::new()),
    };

    let resp = match client.execute(request).await {
        Ok(resp) => resp,
        Err(_) => return (String::new(), String::new()),
    };

    let json = match resp.json::<serde_json::Value>().await {
        Ok(text) => text,
        Err(_) => return 
    
async fn get_country_code_and_regin_name() -> (String, String) {
    let client = reqwest::Client::new();

    let request = match client.post("http://ip-api.com/json/").build() {
        Ok(request) => request,
        Err(_) => return (String::new(), String::new()),
    };

    let resp = match client.execute(request).await {
        Ok(resp) => resp,
        Err(_) => return (String::new(), String::new()),
    };

    let json = match resp.json::<serde_json::Value>().await {
        Ok(text) => text,
        Err(_) => return (String::new(), String::new()),
    };

    let country_code = json
        .get("countryCode")
        .map(|v| v.as_str())
        .unwrap_or_default()
        .unwrap_or_default()
        .to_string();

    let regin_name = json
        .get("regionName")
        .map(|v| v.as_str())
        .unwrap_or_default()
        .unwrap_or_default()
        .to_string();

    (country_code, regin_name)
}