Не удалось разобрать gmail api вернул данные в swift - PullRequest
0 голосов
/ 22 декабря 2018

Я запрашиваю Gmail API для полного сообщения, и оно отвечает какими-то данными, но я не могу их проанализировать, потому что данные, которые возвращает API, не в формате JSON, мне нужна помощь.Я застрял, и это мой дипломный проект.

let request = Alamofire.request("https://www.googleapis.com/gmail/v1/users/"+userRet.email+"/messages/16742b05a0d01d9c", method: HTTPMethod.get, parameters: parameters, encoding:URLEncoding.default, headers: headers)
request.responseJSON { response in
    print("json result is upto print\(response.error)" )
    let result=MCOMessageParser(data: response.data?.base64EncodedData())
    let x=result?.htmlBodyRendering()
    print(x)
    if let json = response.result.value {
        print("JSON: \(json)") // serialized json response
    }
    // print(result?.data().base64EncodedData().)
    if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
        //  print("Data: \(utf8Text)") // original server data as UTF8 string
    }
}

Это результат, который возвращает API:

{

    historyId = 257071; 
    id = 16742b05a0d01d9c; 
    internalDate = 1543011118000; 
    labelIds =     ( 
        UNREAD, 
        "CATEGORY_UPDATES", 
        INBOX 
    ); 
    payload =     { 
        body =         { 
            size = 0; 
        }; 
        filename = ""; 
        headers =         ( 
                        { 
                name = "Delivered-To"; 
                value = "adilkhanmsd007@gmail.com"; 
            }, 
                        { 
                name = Received; 
                value = "by 2002:a1c:cf48:0:0:0:0:0 with SMTP id  f69csp2744266wmg;        Fri, 23 Nov 2018 14:28:33 -0800 (PST)"; 
            }, 
                        { 
                name = "X-Google-Smtp-Source"; 
                value =  "AJdET5fc93MYGVO9J/LQRTx80ndZ1/15xBspFIcS4IU2jKcavcZvZP/3fQHejt1jMozdy/n7SPQ8";
            },
                        {
                name = "X-Received";
                value = "by 2002:a67:3f1d:: with SMTP id m29mr7424740vsa.37.1543012113277;        Fri, 23 Nov 2018 14:28:33 -0800 (PST)";
            }, 
                        {
                name = "ARC-Seal";
                value = "i=1; a=rsa-sha256; t=1543012113; cv=none;        d=google.com; s=arc-20160816;         b=g4YbBSojY0tEPKsnSK3L+0vdqGmgdczww2jJdNKj+5APrmgmLO4I8Ti+wJafwMNihj         ToZgO9aJt3AN37kr6uXk3mgBgq7Qe9CeIiRaGk2vv/UvS5/niT4hCPVWbhPq0lZM3ZNj         tKlH3NoMk8YpHesiw/VkgeiNGJW9TOGqdSnIU2/KEToFx8LrnOYR55U0/3XYsKaS6ln0         RVfhpvLWV6ky8jqZ7AqKW5JrdjjMNXEpAPhnrK80bDkZVg+j+YfESkuf/HVnriAxvIT1         pGPA8vW+byIwje70VvQSQj7vWvkDMK9tPLNdMljOqBM3CiwSRFkGhIbw/5MvIq6w39yZ         MUuA=="; 
            },
                        { 
                name = "ARC-Message-Signature";
                value = "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;        h=feedback-id:message-id:list-id:reply-to:mime-version         :list-unsubscribe:date:subject:to:from:dkim-signature;        bh=BAHuexLV4770OceTaeaElZ9EXHHPt89rfgy8JOY3tc8=;        b=UT5272UnrXeztJFZu4abnsYEoTHF/ydvNc3DlRMB6mUT+1ucjhlJDxUd7BdT/ukCva         sbFws/QHt4WHRBu+E5NAV50c2ugK/OxytZQ7EDnafyML1jpThHOZK5txPrWdX9DAqRb1         ya5Q/IpIKnAHTVPHExVIPuUY7lGXThsnjEVGylUnSQL0d5qIehi3xhgCloc1dzocxf+W         3CRoLFsnOaE8qFASQj5BSi0TYZhlk2BZvVnODuFFYZvwxmaFxVcpg4Y9i0MVX/tgDy21         +Qow6LdF98e1Vt59pl97nuIAVXAR2uUEAlgZV6DVPlsyz6uwMvPPiD5BAvi7875qa65n         iTDw==";
            }, 
                        {
                name = "ARC-Authentication-Results";
                value = "i=1; mx.google.com;       dkim=pass header.i=@em.usconcealedcarry.com header.s=200608 header.b=gELil58n;       spf=pass (google.com: domain of bounce-15_html-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com designates 13.111.25.182 as permitted sender) smtp.mailfrom=bounce-15_HTML-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com";
            }, 
                        {
                name = "Return-Path";
                value = "<bounce-15_HTML-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com>";
            }, 
                        {
                name = Received;
                value = "from mta4.em.usconcealedcarry.com (mta4.em.usconcealedcarry.com. [13.111.25.182])        by mx.google.com with ESMTPS id s11si19051150uaj.180.2018.11.23.14.28.32        for <adilkhanmsd007@gmail.com>        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);        Fri, 23 Nov 2018 14:28:33 -0800 (PST)";
            }, 
                        {
                name = "Received-SPF";
                value = "pass (google.com: domain of bounce-15_html-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com designates 13.111.25.182 as permitted sender) client-ip=13.111.25.182;";
            }, 
                        {
                name = "Authentication-Results";
                value = "mx.google.com;       dkim=pass header.i=@em.usconcealedcarry.com header.s=200608 header.b=gELil58n;       spf=pass (google.com: domain of bounce-15_html-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com designates 13.111.25.182 as permitted sender) smtp.mailfrom=bounce-15_HTML-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com";
            }, 
                        {
                name = "DKIM-Signature";
                value = "v=1; a=rsa-sha256; c=relaxed/relaxed; s=200608; d=em.usconcealedcarry.com; h=From:To:Subject:Date:List-Unsubscribe:MIME-Version:Reply-To:List-ID: Message-ID:Content-Type; i=timschmidt@em.usconcealedcarry.com; bh=BAHuexLV4770OceTaeaElZ9EXHHPt89rfgy8JOY3tc8=; b=gELil58njX4LjZ2wic33KmdKQbrg158GzunG7ev9D5y5QNOIE4fWjZUbf3uAb2wIq49DzsYP4fzX   hmHK4HL1nfN+gBIYvbvRBAcDmi1VGJbb2QPofQib/MdU/aiHyp1fq7MNneLjPZjVMl6wA5y4/NTS   T/517090Hgd5+edhNEc=";
            }, 
                        {
                name = Received;
                value = "by mta4.em.usconcealedcarry.com id hv1vh22fmd4h for <adilkhanmsd007@gmail.com>; Fri, 23 Nov 2018 22:11:58 +0000 (envelope-from <bounce-15_HTML-15290364-13844-7295358-819@bounce.em.usconcealedcarry.com>)";
            }, 
                        {
                name = From;
                value = "Tim Schmidt <timschmidt@em.usconcealedcarry.com>";
            },
                        {
                name = To;
                value = "<adilkhanmsd007@gmail.com>";
            }, 
                        {
                name = Subject;
                value = "Shipments close at exactly midnight";
            }, 
                        {
                name = Date;
                value = "Fri, 23 Nov 2018 16:11:58 -0600";
            }, 
                        {
                name = "List-Unsubscribe";
                value = "<mailto:leave-fd8515751a3c402029-fe611575776d047e7310-fefb15737d6000-fe8813727c6107787d-ff5d1c717c@leave.em.usconcealedcarry.com>";
            }, 
                        {
                name = "MIME-Version";
                value = "1.0";
            }, 
                        {
                name = "Reply-To";
                value = "Delta Defense <reply-fefb15737d6000-15_HTML-15290364-7295358-819@em.usconcealedcarry.com>";
            },
                        {
                name = "List-ID";
                value = "<7295358.xt.local>";
            }, 
                        {
                name = "X-CSA-Complaints";
                value = "whitelistcomplaints@eco.de";
            },
                        {
                name = "x-job";
                value = "7295358_13844";
            }, 
                        {
                name = "Message-ID";
                value = "<2b06b915-0a3b-4dab-8ca4-8a190e2dd23e@atl1s07mta1417.xt.local>";
            }, 
                        {
                name = "Feedback-ID";
                value = "7295358:13844:13.111.25.182:sfmktgcld";
            },
                        {
                name = "Content-Type";
                value = "multipart/alternative; boundary=\"FCfl401MoT1g=_?:\"";
            } 
        );
        mimeType = "multipart/alternative";
        partId = "";
        parts =         (
                         {
                body =                  {
                    data =  "DQogDQogDQoNCiBUaW1lJ3MgUnVubmluZyBPdXQgLSBZb3VyIEJvbnVzIFBhY2thZ2UgRXhwaXJlcyBJbiBBIEZldyBTaG9ydCBIb3VycyAoVXAgVG8gJDYzNCBWYWx1ZSkuLi4NCkZyYW5rbHksIGJ5IG5vdyB5b3Uga25vdyB0aGF0IGEgVVNDQ0EgTWVtYmVyc2hpcCBpcyBhIHZpdGFsIG5lY2Vzc2l0eSBpZiB5b3Ugb3duIGEgZ3VuJmhlbGxpcDsNCg0KWW91IGFsc28ga25vdyB0aGF0IEknbSBnb2luZyB0byBzZW5kIHlvdSBhIHRvbiBvZiBvdXIgYmVzdCB0cmFpbmluZyBhbmQgZ2VhciAmbmRhc2g7IHZhbHVlZCBhdCB1cCB0byAkNjM0IHdoZW4geW91IA0KaHR0cDovL2NsaWNrLmVtLnVzY29uY2VhbGVkY2FycnkuY29tLz9xcz01Yjc1YmI3ZWQxY2Q3YjUyNWFhNDc2Yzc5MzVhYmU1ODk4ZTIwNjM4Yjg5NjM5ZTQyZGE4NDMxYTkzYjM1NGE0YzRiODhhYzY4OWQzNGVhNTJkMjdhZTk3ZTJjMGMzODY5OWU4OWNhZjkyMzlkMDFhIA0KYWN0aXZhdGUgeW91ciBVU0NDQSBNZW1iZXJzaGlwIC4NCg0KU28sIGl0IGFsbCBjb21lcyBkb3duIHRvIHRoaXMmaGVsbGlwOw0KDQpJZiB5b3UndmUgYmVlbiB3YWl0aW5nIHRvIGFjdGl2YXRlLCBkb24ndCB3YWl0IGFueSBsb25nZXImaGVsbGlwOw0KDQpBbmQgaGVyZSdzIHdoeTogDQoNCkkgcHJvbWlzZSB5b3UgdGhhdCB0aGlzIG9mZmVyIHdpbGwgZW5kIGF0IGV4YWN0bHkgbWlkbmlnaHQgdG9uaWdodCwgYW5kIHdvbid0IGJlIHNlZW4gYWdhaW4uDQoNClRvbmlnaHQncyB5b3VyIGxhc3QgY2hhbmNlJmhlbGxpcDsNCg0KaHR0cDovL2NsaWNrLmVtLnVzY29uY2VhbGVkY2FycnkuY29tLz9xcz01Yjc1YmI3ZWQxY2Q3YjUyNWFhNDc2Yzc5MzVhYmU1ODk4ZTIwNjM4Yjg5NjM5ZTQyZGE4NDMxYTkzYjM1NGE0YzRiODhhYzY4OWQzNGVhNTJkMjdhZTk3ZTJjMGMzODY5OWU4OWNhZjkyMzlkMDFhIA0KDQoNCmh0dHA6Ly9jbGljay5lbS51c2NvbmNlYWxlZGNhcnJ5LmNvbS8_cXM9NWI3NWJiN2VkMWNkN2I1MjVhYTQ3NmM3OTM1YWJlNTg5OGUyMDYzOGI4OTYzOWU0MmRhODQzMWE5M2IzNTRhNGM0Yjg4YWM2ODlkMzRlYTUyZDI3YWU5N2UyYzBjMzg2OTllODljYWY5MjM5ZDAxYSANCg0KQ2xh=";
                    size = 3845;
                };
                filename = "";
                headers =                 (
                                        {
                        name = "Content-Type";
                        value = "text/plain; charset=\"utf-8\"";
                    },
                                        {
                        name = "Content-Transfer-Encoding";
                        value = 8bit;
                    }
                );
                mimeType = "text/plain";
                partId = 0;
            },
                         {
                body =                 {
                    data =  "PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI-DQo8aHRtbD4NCiAgPGhlYWQ-YWN0aXZhdGUgeW91ciBVU0NDQSBNZW1iZXJzaGlwPC9hPjwvYj4uPGJyPg0KPGJyPg0KPGk-PHNwYW4gaWQ9ImRvY3MtaW50ZXJuYWwtZ3VpZC00ODI3MThhZS0zZjJkLWZmNmItZTAyMS00MDk3MTUxNjFjZDQiPlNvLCA8L3NwYW4-aXQgYWxsIGNvbWVzIGRvd24gdG8gdGhpcyZoZWxsaXA7PC9pPjxicj4NCjxicj4NCjxzcGFuIGlkPSJkb2NzLWludGVybmFsLWd1aWQtNDgyNzE4YWUtM2YyZC1mZjZiLWUwMjEtNDA5NzE1MTYxY2Q0Ij5JZiB5b3UndmUgYmVlbiB3YWl0aW5nIHRvIGFjdGl2YXRlLCBkb24ndCB3YWl0IGFueSBsb25nZXImaGVsbGlwOzwvc3Bhbj48YnI-DQo8YnI-DQo8c3BhbiBpZD0iZG9jcy1pbnRlcm5hbC1ndWlkLTQ4MjcxOGFlLTNmMmQtZmY2Yi1lMDIxLTQwOTcxNTE2MWNkNCI-QW5kIGhlcmUncyB3aHk6IDwvc3Bhbj48YnI-DQo8YnI-DQo8aT48c3BhbiBpZD0iZG9jcy1pbnRlcm5hbC1ndWlkLTQ4MjcxOGFlLTNmMmQtZmY2Yi1lMDIxLTQwOTcxNTE2MWNkNCI-SSBwcm9taXNlIHlvdSB0aGF0IHRoaXMgb2ZmZXIgd2lsbCBlbmQgYXQgZXhhY3RseSA8L3NwYW4-PGI-bWlkbmlnaHQgdG9uaWdodCw8L2I-IGFuZCB3b24ndCBiZSBzZWVuIGFnYWluLjwvaT48YnI-DQo8YnI-DQo8aT48Yj48c3BhbiBpZD0iZG9jcy1pbnRlcm5hbC1ndWlkLTQ4MjcxOGFlLTNmMmQtZmY2Yi1lMDIxLTQwOTcxNTE2MWNkNCI-VG9uaWdodCdzIDwvc3Bhbj55b3VyIGxhc3QgY2hhbmNlJmhlbGxpcDs8L2I-PC9pPjwvdGQ-PC90cj48L3RhYmxlPjwhLS0tLT48IS0tLS0-PHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgbWluLXdpZHRoOiAxMDAlOyAiIGNsYXNzPSJzdHlsaW5nYmxvY2stY29udGVudC13cmFwcGVyIj48dHI-PHRkIHN0eWxlPSJwYWRkaW5nOiA1cHggMzVweCA1cHggMHB4OyAiIGNsYXNzPSJzdHlsaW5nYmxvY2stY29udGVudC13cmFwcGVyIGNhbWFya2VyLWlubmVyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI-PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48YSBocmVmPSJodHRwOi8vY2xpY2suZW0udXNjb25jZWFsZWRjYXJyeS5jb20vP3FzPTViNzViYjdlZDFjZDdiNTJlMTFiMTdlNWE4ZmY3OTM4MTQ5YTExMzQwMDhiYzI3ZDk2Y2JhNjUzM2VjMDQ3Yzg3MDBmOWI2NDYxOWFmZTE1ZTBlM2U5ZDc2YjMzM2U5MDYyMWQ3YzgwNjgxZjRlOGQ4Y2E5Y2M5OTFiM2Q2MzNkIiB0aXRsZT0iIiAgIGRhdGEtbGlua3RvPSJodHRwczovLyI-PGltZyBzcmM9Imh0dHBzOi8vd3d3LnVzY29uY2VhbGVkY2FycnkuY29tL2ltYWdlcy9Ob3YxOF9SYW5nZUJhZ19NaWRuaWdodC5qcGciIGFsdD0iRW5kcyBNaWRuaWdodDogWW91ciBDaGFuY2UgVG8gQ2xhaW0gWW91ciBCb251cyBQYWNrYWdlIFtVcCBUbyAkNjM0IFZhbHVlXSIgaGVpZ2h0PSIyODQiIHdpZHRoPSI0NTAiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgcGFkZGluZzogMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGhlaWdodDogMjg0cHg7IHdpZHRoOiA0NTBweDsgYm9yZGVyOiAwcHg7Ij48L2E-PC90ZD4NCjwvdHI-PC90YWJsZT48L3RkPjwvdHI-PC90YWJsZT48IS0tLS0-DQogICAgDQogIDwvYm9keT4NCjwvaHRtbD4NCg==";
                    size = 25138;
                };
                filename = "";
                headers =                 (
                                        {
                        name = "Content-Type";
                        value = "text/html; charset=\"utf-8\"";
                    },
                                        {
                        name = "Content-Transfer-Encoding";
                        value = 8bit;
                    }
                );
                mimeType = "text/html";
                partId = 1;
            }
        );
    };
     sizeEstimate = 33624;
     snippet = "The honest truth... Time&#39;s Running Out - Your Bonus Package Expires In A Few Short Hours (Up To $634 Value)... Frankly, by now you know that a USCCA Membership is a vital necessity if you own a gun";
    threadId = 16742b05a0d01d9c;
}

Я пытаюсь в течение нескольких дней, но не получилось.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Полученные вами данные в формате MIMEвы можете разобрать его как NSDictionaryэто сделает для вас ключевой плательщик

 let x=response.result.value as! NSDictionary
0 голосов
/ 22 декабря 2018

Проблема в том, что вы декодируете это так, как будто это обычный base64.Тело на самом деле кодируется в base64url, что является безопасным URL-адресом.Так что вам просто нужно сделать дополнительный шаг для преобразования из одного в другое. Декодирование base64URL в base64 - Swift

...