Completed
Push — master ( 87f9b3...c6cee3 )
by Sergey
07:03 queued 03:28
created

Password::parseCurrentUrl()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
namespace seregazhuk\PinterestBot\Api\Providers;
4
5
use seregazhuk\PinterestBot\Api\Response;
6
use seregazhuk\PinterestBot\Helpers\UrlBuilder;
7
8
class Password extends Provider
9
{
10
    /**
11
     * Ask for password reset link in email
12
     *
13
     * @param string $user Username or user mail
14
     * @return bool
15
     */
16
    public function sendResetLink($user)
17
    {
18
        $request = ['username_or_email' => $user];
19
20
        return $this->execPostRequest($request, UrlBuilder::RESOURCE_RESET_PASSWORD_SEND_LINK);
21
    }
22
23
    /**
24
     * Set a new password by link from reset password email
25
     *
26
     * @param string $link
27
     * @param string $newPassword
28
     * @return bool|Response
29
     */
30
    public function reset($link, $newPassword)
31
    {
32
        // Visit link to get current reset token, username and token expiration
33
        $this->execGetRequest([], $link);
34
        $this->request->clearToken();
35
36
        $urlData = $this->parseCurrentUrl();
37
        $username = trim(str_replace('/pw/', '', $urlData['path']), '/');
38
39
        $query = [];
40
        parse_str($urlData['query'], $query);
41
42
43
        return $this->execPostRequest([
44
            'username'             => $username,
45
            'new_password'         => $newPassword,
46
            'new_password_confirm' => $newPassword,
47
            'token'                => $query['t'],
48
            'expiration'           => $query['e'],
49
        ], UrlBuilder::RESOURCE_RESET_PASSWORD_UPDATE, true);
50
    }
51
52
    /**
53
     * @param string $oldPassword
54
     * @param string $newPassword
55
     * @return bool
56
     */
57
    public function change($oldPassword, $newPassword)
58
    {
59
        $request = [
60
            'old_password'         => $oldPassword,
61
            'new_password'         => $newPassword,
62
            'new_password_confirm' => $newPassword,
63
        ];
64
65
        return $this->execPostRequest($request, UrlBuilder::RESOURCE_CHANGE_PASSWORD);
66
    }
67
68
    /**
69
     * @return string
70
     */
71
    protected function parseCurrentUrl()
72
    {
73
        $url = $this->request->getHttpClient()->getCurrentUrl();
74
75
        return parse_url($url);
76
    }
77
}