Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
qtoauth
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jesus Fernandez
qtoauth
Commits
8e36a693
Commit
8e36a693
authored
Aug 15, 2016
by
Jesus Fernandez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
QAuth1Signature does not inherits from QVariantMap. Now using composition.
parent
b8461709
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
55 additions
and
43 deletions
+55
-43
QtOAuth/private/qoauth1signature_p.h
QtOAuth/private/qoauth1signature_p.h
+2
-1
QtOAuth/qoauth1signature.cpp
QtOAuth/qoauth1signature.cpp
+46
-36
QtOAuth/qoauth1signature.h
QtOAuth/qoauth1signature.h
+7
-6
No files found.
QtOAuth/private/qoauth1signature_p.h
View file @
8e36a693
...
...
@@ -45,7 +45,7 @@
class
QOAuth1SignaturePrivate
{
public:
QByteArray
signatureBaseString
(
const
QOAuth1Signature
&
instance
)
;
QByteArray
signatureBaseString
(
)
const
;
QByteArray
secret
()
const
;
static
QByteArray
parameterString
(
const
QVariantMap
&
parameters
);
static
QByteArray
encodeHeaders
(
const
QVariantMap
&
headers
);
...
...
@@ -55,6 +55,7 @@ public:
QUrl
url
;
QString
clientSharedKey
;
QString
tokenSecret
;
QVariantMap
parameters
;
};
#endif // QOAUTH1SIGNATURE_P_H
QtOAuth/qoauth1signature.cpp
View file @
8e36a693
...
...
@@ -62,16 +62,7 @@ static_assert(static_cast<int>(QOAuth1Signature::HttpRequestMethod::Head) ==
static_cast
<
int
>
(
QNetworkAccessManager
::
DeleteOperation
),
"Invalid QOAuth1Signature::HttpRequestMethod enumeration values"
);
inline
static
QOAuth1SignaturePrivate
*
d_ptr
(
const
QScopedPointer
<
QOAuth1SignaturePrivate
>
*
instance
)
{
auto
casted
=
const_cast
<
QScopedPointer
<
QOAuth1SignaturePrivate
>
*>
(
instance
);
if
(
casted
->
isNull
())
casted
->
reset
(
new
QOAuth1SignaturePrivate
);
return
casted
->
data
();
}
QByteArray
QOAuth1SignaturePrivate
::
signatureBaseString
(
const
QOAuth1Signature
&
instance
)
QByteArray
QOAuth1SignaturePrivate
::
signatureBaseString
()
const
{
// https://tools.ietf.org/html/rfc5849#section-3.4.1
QByteArray
base
;
...
...
@@ -98,13 +89,13 @@ QByteArray QOAuth1SignaturePrivate::signatureBaseString(const QOAuth1Signature &
base
.
append
(
'&'
);
base
.
append
(
QUrl
::
toPercentEncoding
(
url
.
toString
(
QUrl
::
RemoveQuery
))
+
"&"
);
QVariantMap
p
arameters
=
instance
;
QVariantMap
p
=
parameters
;
{
const
auto
queryItems
=
QUrlQuery
(
url
.
query
()).
queryItems
();
for
(
auto
it
=
queryItems
.
begin
(),
end
=
queryItems
.
end
();
it
!=
end
;
++
it
)
p
arameters
.
insert
(
it
->
first
,
it
->
second
);
p
.
insert
(
it
->
first
,
it
->
second
);
}
base
.
append
(
encodeHeaders
(
p
arameters
));
base
.
append
(
encodeHeaders
(
p
));
return
base
;
}
...
...
@@ -140,20 +131,21 @@ QByteArray QOAuth1SignaturePrivate::encodeHeaders(const QVariantMap &headers)
}
QOAuth1Signature
::
QOAuth1Signature
(
const
QUrl
&
url
,
QOAuth1Signature
::
HttpRequestMethod
method
,
const
QVariantMap
&
parameters
)
:
QVariantMap
(
parameters
)
const
QVariantMap
&
parameters
)
:
d_ptr
(
new
QOAuth1SignaturePrivate
)
{
d_ptr
(
&
d
)
->
url
=
url
;
d_ptr
(
&
d
)
->
method
=
method
;
d_ptr
->
url
=
url
;
d_ptr
->
method
=
method
;
d_ptr
->
parameters
=
parameters
;
}
QOAuth1Signature
::
QOAuth1Signature
(
const
QUrl
&
url
,
const
QString
&
clientSharedKey
,
const
QString
&
tokenSecret
,
HttpRequestMethod
method
,
const
QVariantMap
&
parameters
)
:
QVariantMap
(
parameters
)
const
QVariantMap
&
parameters
)
:
QOAuth1Signature
(
url
,
method
,
parameters
)
{
d_ptr
(
&
d
)
->
url
=
url
;
d_ptr
(
&
d
)
->
method
=
method
;
d_ptr
(
&
d
)
->
clientSharedKey
=
clientSharedKey
;
d_ptr
(
&
d
)
->
tokenSecret
=
tokenSecret
;
d_ptr
->
clientSharedKey
=
clientSharedKey
;
d_ptr
->
tokenSecret
=
tokenSecret
;
}
QOAuth1Signature
::~
QOAuth1Signature
()
...
...
@@ -161,67 +153,84 @@ QOAuth1Signature::~QOAuth1Signature()
QOAuth1Signature
::
HttpRequestMethod
QOAuth1Signature
::
httpRequestMethod
()
const
{
return
d_ptr
(
&
d
)
->
method
;
Q_D
(
const
QOAuth1Signature
);
return
d
->
method
;
}
void
QOAuth1Signature
::
setHttpRequestMethod
(
QOAuth1Signature
::
HttpRequestMethod
method
)
{
d_ptr
(
&
d
)
->
method
=
method
;
Q_D
(
QOAuth1Signature
);
d
->
method
=
method
;
}
QUrl
QOAuth1Signature
::
url
()
const
{
return
d_ptr
(
&
d
)
->
url
;
Q_D
(
const
QOAuth1Signature
);
return
d
->
url
;
}
void
QOAuth1Signature
::
setUrl
(
const
QUrl
&
url
)
{
d_ptr
(
&
d
)
->
url
=
url
;
Q_D
(
QOAuth1Signature
);
d
->
url
=
url
;
}
QVariantMap
QOAuth1Signature
::
parameters
()
const
{
return
*
this
;
Q_D
(
const
QOAuth1Signature
);
return
d
->
parameters
;
}
void
QOAuth1Signature
::
setParameters
(
const
QVariantMap
&
parameters
)
{
static_cast
<
QVariantMap
&>
(
*
this
)
=
parameters
;
Q_D
(
QOAuth1Signature
);
d
->
parameters
=
parameters
;
}
void
QOAuth1Signature
::
addRequestBody
(
const
QUrlQuery
&
body
)
{
Q_D
(
QOAuth1Signature
);
const
auto
list
=
body
.
queryItems
();
for
(
auto
it
=
list
.
begin
(),
end
=
list
.
end
();
it
!=
end
;
++
it
)
insert
(
it
->
first
,
it
->
second
);
d
->
parameters
.
insert
(
it
->
first
,
it
->
second
);
}
void
QOAuth1Signature
::
insert
(
const
QString
&
key
,
const
QVariant
&
value
)
{
Q_D
(
QOAuth1Signature
);
d
->
parameters
.
insert
(
key
,
value
);
}
QString
QOAuth1Signature
::
clientSharedKey
()
const
{
return
d_ptr
(
&
d
)
->
clientSharedKey
;
Q_D
(
const
QOAuth1Signature
);
return
d
->
clientSharedKey
;
}
void
QOAuth1Signature
::
setClientSharedKey
(
const
QString
&
secret
)
{
d_ptr
(
&
d
)
->
clientSharedKey
=
secret
;
Q_D
(
QOAuth1Signature
);
d
->
clientSharedKey
=
secret
;
}
QString
QOAuth1Signature
::
tokenSecret
()
const
{
return
d_ptr
(
&
d
)
->
tokenSecret
;
Q_D
(
const
QOAuth1Signature
);
return
d
->
tokenSecret
;
}
void
QOAuth1Signature
::
setTokenSecret
(
const
QString
&
secret
)
{
d_ptr
(
&
d
)
->
tokenSecret
=
secret
;
Q_D
(
QOAuth1Signature
);
d
->
tokenSecret
=
secret
;
}
QByteArray
QOAuth1Signature
::
hmacSha1
()
const
{
const
auto
priv
=
d_ptr
(
&
d
);
Q_D
(
const
QOAuth1Signature
);
QMessageAuthenticationCode
code
(
QCryptographicHash
::
Sha1
);
code
.
setKey
(
priv
->
secret
());
code
.
addData
(
priv
->
signatureBaseString
(
*
this
));
code
.
setKey
(
d
->
secret
());
code
.
addData
(
d
->
signatureBaseString
(
));
return
code
.
result
();
}
...
...
@@ -233,9 +242,10 @@ QByteArray QOAuth1Signature::rsaSha1() const
QByteArray
QOAuth1Signature
::
plainText
(
const
QString
&
clientIdentifier
)
const
{
Q_D
(
const
QOAuth1Signature
);
QByteArray
ret
;
ret
.
append
(
clientIdentifier
.
toUtf8
());
ret
.
append
(
'&'
);
ret
.
append
(
d
_ptr
(
&
d
)
->
clientSharedKey
.
toUtf8
());
ret
.
append
(
d
->
clientSharedKey
.
toUtf8
());
return
ret
;
}
QtOAuth/qoauth1signature.h
View file @
8e36a693
...
...
@@ -44,7 +44,7 @@
#include <QtCore/qvariant.h>
class
QOAuth1SignaturePrivate
;
class
QOAuth1Signature
:
public
QVariantMap
class
QOAuth1Signature
{
public:
enum
class
HttpRequestMethod
{
...
...
@@ -58,9 +58,9 @@ public:
Unknown
=
0
};
using
QVariantMap
::
QVariantMap
;
explicit
QOAuth1Signature
(
const
QUrl
&
url
,
HttpRequestMethod
method
=
HttpRequestMethod
::
Post
,
const
QVariantMap
&
parameters
=
QVariantMap
());
explicit
QOAuth1Signature
(
const
QUrl
&
url
=
QUrl
(),
HttpRequestMethod
method
=
HttpRequestMethod
::
Post
,
const
QVariantMap
&
parameters
=
QVariantMap
());
QOAuth1Signature
(
const
QUrl
&
url
,
const
QString
&
clientSharedKey
,
const
QString
&
tokenSecret
,
HttpRequestMethod
method
=
HttpRequestMethod
::
Post
,
const
QVariantMap
&
parameters
=
QVariantMap
());
...
...
@@ -75,6 +75,7 @@ public:
QVariantMap
parameters
()
const
;
void
setParameters
(
const
QVariantMap
&
parameters
);
void
addRequestBody
(
const
QUrlQuery
&
body
);
void
insert
(
const
QString
&
key
,
const
QVariant
&
value
);
QString
clientSharedKey
()
const
;
void
setClientSharedKey
(
const
QString
&
secret
);
...
...
@@ -87,8 +88,8 @@ public:
QByteArray
plainText
(
const
QString
&
clientIdentifier
)
const
;
private:
friend
class
QOAuth1SignaturePrivate
;
Q
ScopedPointer
<
QOAuth1SignaturePrivate
>
d
;
Q_DECLARE_PRIVATE
(
QOAuth1Signature
)
Q
OAuth1SignaturePrivate
*
d_ptr
;
};
#endif // QOAUTH1SIGNATURE_H
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment