Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
bwinf
medal
Commits
27bb9a56
Commit
27bb9a56
authored
Feb 13, 2020
by
Robert Czechowski
Browse files
Show Oauth-Login buttons on contest page also
parent
47218be4
Pipeline
#396
passed with stages
in 17 minutes and 42 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/core.rs
View file @
27bb9a56
...
...
@@ -136,7 +136,11 @@ pub enum ContestVisibility {
Current
,
}
pub
fn
show_contests
<
T
:
MedalConnection
>
(
conn
:
&
T
,
session_token
:
&
str
,
visibility
:
ContestVisibility
)
->
MedalValue
{
pub
fn
show_contests
<
T
:
MedalConnection
>
(
conn
:
&
T
,
session_token
:
&
str
,
(
self_url
,
oauth_providers
):
(
Option
<
String
>
,
Option
<
Vec
<
OauthProvider
>>
),
visibility
:
ContestVisibility
)
->
MedalValue
{
let
mut
data
=
json_val
::
Map
::
new
();
let
session
=
conn
.get_session_or_new
(
&
session_token
);
...
...
@@ -146,6 +150,18 @@ pub fn show_contests<T: MedalConnection>(conn: &T, session_token: &str, visibili
data
.insert
(
"can_start"
.to_string
(),
to_json
(
&
true
));
}
let
mut
oauth_links
:
Vec
<
(
String
,
String
,
String
)
>
=
Vec
::
new
();
if
let
Some
(
oauth_providers
)
=
oauth_providers
{
for
oauth_provider
in
oauth_providers
{
oauth_links
.push
((
oauth_provider
.provider_id
.to_owned
(),
oauth_provider
.login_link_text
.to_owned
(),
oauth_provider
.url
.to_owned
()));
}
}
data
.insert
(
"self_url"
.to_string
(),
to_json
(
&
self_url
));
data
.insert
(
"oauth_links"
.to_string
(),
to_json
(
&
oauth_links
));
let
v
:
Vec
<
ContestInfo
>
=
conn
.get_contest_list
()
.iter
()
.map
(|
c
|
ContestInfo
{
id
:
c
.id
.unwrap
(),
...
...
src/webfw_iron.rs
View file @
27bb9a56
...
...
@@ -355,7 +355,19 @@ fn debug_create_session<C>(req: &mut Request) -> IronResult<Response>
fn
contests
<
C
>
(
req
:
&
mut
Request
)
->
IronResult
<
Response
>
where
C
:
MedalConnection
+
std
::
marker
::
Send
+
'static
{
let
session_token
=
req
.require_session_token
()
?
;
let
(
template
,
data
)
=
with_conn!
[
core
::
show_contests
,
C
,
req
,
&
session_token
,
core
::
ContestVisibility
::
All
];
let
(
self_url
,
oauth_providers
)
=
{
let
mutex
=
req
.get
::
<
Write
<
SharedConfiguration
>>
()
.unwrap
();
let
config
=
mutex
.lock
()
.unwrap_or_else
(|
e
|
e
.into_inner
());
(
config
.self_url
.clone
(),
config
.oauth_providers
.clone
())
};
let
(
template
,
data
)
=
with_conn!
[
core
::
show_contests
,
C
,
req
,
&
session_token
,
(
self_url
,
oauth_providers
),
core
::
ContestVisibility
::
All
];
let
mut
resp
=
Response
::
new
();
resp
.set_mut
(
Template
::
new
(
&
template
,
data
))
.set_mut
(
status
::
Ok
);
...
...
@@ -365,7 +377,19 @@ fn contests<C>(req: &mut Request) -> IronResult<Response>
fn
opencontests
<
C
>
(
req
:
&
mut
Request
)
->
IronResult
<
Response
>
where
C
:
MedalConnection
+
std
::
marker
::
Send
+
'static
{
let
session_token
=
req
.require_session_token
()
?
;
let
(
template
,
data
)
=
with_conn!
[
core
::
show_contests
,
C
,
req
,
&
session_token
,
core
::
ContestVisibility
::
Open
];
let
(
self_url
,
oauth_providers
)
=
{
let
mutex
=
req
.get
::
<
Write
<
SharedConfiguration
>>
()
.unwrap
();
let
config
=
mutex
.lock
()
.unwrap_or_else
(|
e
|
e
.into_inner
());
(
config
.self_url
.clone
(),
config
.oauth_providers
.clone
())
};
let
(
template
,
data
)
=
with_conn!
[
core
::
show_contests
,
C
,
req
,
&
session_token
,
(
self_url
,
oauth_providers
),
core
::
ContestVisibility
::
Open
];
let
mut
resp
=
Response
::
new
();
resp
.set_mut
(
Template
::
new
(
&
template
,
data
))
.set_mut
(
status
::
Ok
);
...
...
@@ -375,7 +399,19 @@ fn opencontests<C>(req: &mut Request) -> IronResult<Response>
fn
currentcontests
<
C
>
(
req
:
&
mut
Request
)
->
IronResult
<
Response
>
where
C
:
MedalConnection
+
std
::
marker
::
Send
+
'static
{
let
session_token
=
req
.require_session_token
()
?
;
let
(
template
,
data
)
=
with_conn!
[
core
::
show_contests
,
C
,
req
,
&
session_token
,
core
::
ContestVisibility
::
Current
];
let
(
self_url
,
oauth_providers
)
=
{
let
mutex
=
req
.get
::
<
Write
<
SharedConfiguration
>>
()
.unwrap
();
let
config
=
mutex
.lock
()
.unwrap_or_else
(|
e
|
e
.into_inner
());
(
config
.self_url
.clone
(),
config
.oauth_providers
.clone
())
};
let
(
template
,
data
)
=
with_conn!
[
core
::
show_contests
,
C
,
req
,
&
session_token
,
(
self_url
,
oauth_providers
),
core
::
ContestVisibility
::
Current
];
let
mut
resp
=
Response
::
new
();
resp
.set_mut
(
Template
::
new
(
&
template
,
data
))
.set_mut
(
status
::
Ok
);
...
...
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