Projet

Général

Profil

0001-build-cookies-from-page.cookies-9702.patch

Josué Kouka, 20 janvier 2016 01:14

Télécharger (2,92 ko)

Voir les différences:

Subject: [PATCH] build cookies from page.cookies (#9702)

 mandayejs/do_login.js      | 13 +------------
 mandayejs/mandaye/utils.py | 22 ++++++++++++++--------
 mandayejs/mandaye/views.py |  2 +-
 3 files changed, 16 insertions(+), 21 deletions(-)
mandayejs/do_login.js
20 20

  
21 21
var input = JSON.parse(system.stdin.read(2000)); // no .readAll()...
22 22

  
23
headers_list = []
24

  
25
page.onResourceReceived = function(response){
26
    for (var i=0; i < response.headers.length; i++){
27
        var c_header = response.headers[i];
28
        if (c_header['name'] === 'Set-Cookie'){
29
            headers_list.push(c_header);
30
        }
31
    }
32
}
33

  
34 23
page.open(input.address, function() {
35 24
  page.onLoadFinished = function() {
36 25
     if (page.injectJs(input.auth_checker)){
......
44 33
        phantom.exit();
45 34
    }
46 35
    page.render('login.png');
47
    console.log(JSON.stringify({'result': 'ok', 'cookies': page.cookies, 'headers': headers_list, 'url': page.frameUrl}));
36
    console.log(JSON.stringify({'result': 'ok', 'cookies': page.cookies, 'url': page.frameUrl}));
48 37
    phantom.exit();
49 38
  }
50 39
  page.evaluate(function(input) {
mandayejs/mandaye/utils.py
35 35
    result = json.loads(stdout)
36 36
    return result
37 37

  
38
def cookie_builder(headers):
39
    """Build Cookies from list of headers
40
    """
41
    cookie = SimpleCookie()
42
    for header in headers:
43
        cookie.load('; '.join(header.values()).encode('ascii'))
44

  
45
    return cookie
38
def cookie_builder(cookies):
39
    ck = SimpleCookie()
40
    for cookie in cookies:
41
        raw_cookie = ';'.join([
42
            '{}={}'.format(k,v) for k,v in cookie.items() 
43
            if k not in ('name','value')
44
        ])
45
        raw_cookie = '{}={};{}'.format(
46
            cookie['name'],
47
            cookie['value'],
48
            raw_cookie
49
        )
50
        ck.load(raw_cookie)
51
    return ck
46 52

  
47 53
def get_password_field():
48 54
    """Return name of the password field
mandayejs/mandaye/views.py
168 168
    context = RequestContext(request, {'url': url})
169 169
    response = HttpResponse(template.render(context))
170 170
    if result.get('headers',None):
171
        response.cookies = cookie_builder(result.get('headers'))
171
        response.cookies = cookie_builder(result.get('cookies'))
172 172

  
173 173
    return response
174
-