Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
duniter4j
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
clients
java
duniter4j
Commits
8fe41bb4
Commit
8fe41bb4
authored
Jun 20, 2018
by
Benoit Lavenier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add OG Data URL to share profile and page easily on social network
parent
00d26ef5
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
91 additions
and
20 deletions
+91
-20
duniter4j-es-core/src/license/THIRD-PARTY.properties
duniter4j-es-core/src/license/THIRD-PARTY.properties
+35
-0
duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginSettings.java
...c/main/java/org/duniter/elasticsearch/PluginSettings.java
+4
-0
duniter4j-es-core/src/main/java/org/duniter/elasticsearch/rest/share/AbstractRestShareLinkAction.java
...elasticsearch/rest/share/AbstractRestShareLinkAction.java
+12
-4
duniter4j-es-core/src/main/java/org/duniter/elasticsearch/util/opengraph/OGData.java
...java/org/duniter/elasticsearch/util/opengraph/OGData.java
+3
-0
duniter4j-es-core/src/main/resources/org/duniter/elasticsearch/templates/html_share.st
...sources/org/duniter/elasticsearch/templates/html_share.st
+18
-6
duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/PluginSettings.java
...n/java/org/duniter/elasticsearch/user/PluginSettings.java
+1
-1
duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/rest/page/RestPageShareLinkAction.java
...elasticsearch/user/rest/page/RestPageShareLinkAction.java
+9
-5
duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/rest/user/RestUserShareLinkAction.java
...elasticsearch/user/rest/user/RestUserShareLinkAction.java
+9
-4
No files found.
duniter4j-es-core/src/license/THIRD-PARTY.properties
0 → 100644
View file @
8fe41bb4
# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - ASL, version 2
# - Apache 2.0
# - Apache License 2.0
# - Apache License Version 2.0
# - BSD License
# - BSD licence
# - CC0 1.0 Universal
# - CDDL
# - CDDL+GPL
# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
# - Common Development and Distribution License (CDDL) v1.0
# - Dual license consisting of the CDDL v1.1 and GPL v2
# - Eclipse Public License 1.0
# - GPLv2+CE
# - General Public License (GPL) v3
# - Indiana University Extreme! Lab Software License, vesion 1.1.1
# - LGPL, version 2.1
# - Lesser General Public License (LGPL) v 3.0
# - Lesser General Public License (LPGL)
# - Lesser General Public License (LPGL) v 2.1
# - Lesser General Public License (LPGL) version 3.0
# - MIT License
# - New BSD License
# - Public Domain, per Creative Commons CC0
# - The Apache Software License, Version 2.0
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
#Fri May 18 18:26:32 CEST 2018
commons-primitives--commons-primitives--1.0
=
The Apache Software License, Version 2.0
org.antlr--antlr-runtime--3.3
=
BSD License
duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginSettings.java
View file @
8fe41bb4
...
...
@@ -261,6 +261,10 @@ public class PluginSettings extends AbstractLifecycleComponent<PluginSettings> {
return
settings
.
getAsInt
(
"duniter.retry.waitDuration"
,
5000
);
}
public
String
getShareBaseUrl
()
{
return
settings
.
get
(
"duniter.share.base.url"
);
}
public
Peer
checkAndGetPeer
()
{
if
(
StringUtils
.
isBlank
(
getNodeBmaHost
()))
{
logger
.
error
(
"ERROR: node host is required"
);
...
...
duniter4j-es-core/src/main/java/org/duniter/elasticsearch/rest/share/AbstractRestShareLinkAction.java
View file @
8fe41bb4
...
...
@@ -14,7 +14,8 @@ import org.elasticsearch.common.logging.Loggers;
import
org.elasticsearch.common.settings.Settings
;
import
org.elasticsearch.rest.*
;
import
org.nuiton.i18n.I18n
;
import
org.stringtemplate.v4.*
;
import
org.stringtemplate.v4.ST
;
import
org.stringtemplate.v4.STGroup
;
import
java.util.Locale
;
...
...
@@ -31,23 +32,27 @@ public abstract class AbstractRestShareLinkAction extends BaseRestHandler {
private
OGDataResolver
resolver
;
private
STGroup
templates
;
private
String
urlPattern
;
public
AbstractRestShareLinkAction
(
Settings
settings
,
RestController
controller
,
Client
client
,
String
indexName
,
String
typeName
,
String
shareBaseUrl
,
OGDataResolver
resolver
)
{
super
(
settings
,
controller
,
client
);
log
=
Loggers
.
getLogger
(
"duniter.rest."
+
indexName
,
settings
,
String
.
format
(
"[%s]"
,
indexName
));
String
pathPattern
=
String
.
format
(
"/%s/%s/%s/_share"
,
indexName
,
typeName
,
"%s"
);
controller
.
registerHandler
(
GET
,
String
.
format
(
"/%s/%s/{id}/_share"
,
indexName
,
typeName
),
String
.
format
(
pathPattern
,
"{id}"
),
this
);
this
.
urlPattern
=
(
shareBaseUrl
!=
null
?
shareBaseUrl
:
""
)
+
pathPattern
;
this
.
resolver
=
resolver
;
// Configure springtemplate engine
this
.
templates
=
STUtils
.
newSTGroup
(
"org/duniter/elasticsearch/templates"
);
Preconditions
.
checkNotNull
(
this
.
templates
.
getInstanceOf
(
"html_share"
),
"Unable to load ST template for share page"
);
}
@Override
...
...
@@ -68,8 +73,11 @@ public abstract class AbstractRestShareLinkAction extends BaseRestHandler {
template
.
add
(
"description"
,
data
.
description
);
template
.
add
(
"siteName"
,
data
.
siteName
);
template
.
add
(
"image"
,
data
.
image
);
template
.
add
(
"url"
,
data
.
url
);
template
.
add
(
"url"
,
String
.
format
(
urlPattern
,
id
));
template
.
add
(
"redirectUrl"
,
data
.
url
);
template
.
add
(
"locale"
,
data
.
locale
);
template
.
add
(
"imageHeight"
,
data
.
imageHeight
);
template
.
add
(
"imageWidth"
,
data
.
imageWidth
);
if
(
StringUtils
.
isNotBlank
(
data
.
url
))
{
Locale
locale
=
data
.
locale
!=
null
?
new
Locale
(
data
.
locale
)
:
I18n
.
getDefaultLocale
();
template
.
add
(
"redirectMessage"
,
I18n
.
l
(
locale
,
"duniter4j.share.redirection.help"
));
...
...
duniter4j-es-core/src/main/java/org/duniter/elasticsearch/util/opengraph/OGData.java
View file @
8fe41bb4
...
...
@@ -10,4 +10,7 @@ public class OGData {
public
String
imageType
;
public
String
siteName
;
public
Integer
imageHeight
;
public
Integer
imageWidth
;
}
duniter4j-es-core/src/main/resources/org/duniter/elasticsearch/templates/html_share.st
View file @
8fe41bb4
html_share
(
type
,
title
,
summary
,
description
,
image
,
siteName
,
locale
,
url
,
redirectMessage
)
:
:=
<<
html_share
(
type
,
title
,
summary
,
description
,
image
,
imageHeight
,
imageWidth
,
siteName
,
locale
,
url
,
redirectUrl
,
redirectMessage
)
:
:=
<<
<
!
DOCTYPE
html>
<
html
prefix=
"og: http://ogp.me/ns#"
>
<
head
>
<
meta
charset=
"UTF-8"
>
...
...
@@ -30,17 +31,28 @@ html_share(type, title, summary, description, image, siteName, locale, url, redi
$i
f
(
image
)
$
<
meta
property=
"og:image"
content
=
"$image$"
/>
$e
ndif
$
$i
f
(
imageHeight
)
$
<
meta
property=
"og:image:height"
content
=
"$imageHeight$"
/>
$e
ndif
$
$i
f
(
imageWidth
)
$
<
meta
property=
"og:image:width"
content
=
"$imageWidth$"
/>
$e
ndif
$
$i
f
(
locale
)
$
<
meta
property=
"og:locale"
content
=
"$locale$"
/>
$e
ndif
$
$i
f
(
url
)
$
<
meta
property=
"og:url"
content
=
"$url$"
/>
<
meta
property=
"og:url"
content
=
"$url$"
/>
$e
ndif
$
$i
f
(
redirectUrl
)
$
<
script
type=
"text/javascript"
>
window
.
location
.
href
=
"$
u
rl$"
window
.
location
.
href
=
"$
redirectU
rl$"
</
script
>
<
META
HTTP-
EQUIV
=
"Refresh"
CONTENT
=
"0; URL=$url$"
>
<
!
--<
META
HTTP-
EQUIV
=
"Refresh"
CONTENT
=
"0; URL=$redirectUrl$"
>
-->
$e
ndif
$
</
head
>
<
body
>
...
...
@@ -54,9 +66,9 @@ html_share(type, title, summary, description, image, siteName, locale, url, redi
<
p
>
$d
escription
$<
/
p
>
$i
f
(
u
rl
)
$
$i
f
(
redirectU
rl
)
$
<
p
>
$r
edirectMessage
$
<
a
href=
'$
u
rl$'
>
$t
itle
$<
/
a
>
.
$r
edirectMessage
$
<
a
href=
'$
redirectU
rl$'
>
$t
itle
$<
/
a
>
.
</
p
>
$e
ndif
$
</
body
>
...
...
duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/PluginSettings.java
View file @
8fe41bb4
...
...
@@ -220,7 +220,7 @@ public class PluginSettings extends AbstractLifecycleComponent<PluginSettings> {
return
this
.
settings
.
get
(
"duniter.user.share.site.name"
,
"Cesium"
);
}
public
String
getBaseUrl
()
{
public
String
get
Share
BaseUrl
()
{
return
settings
.
get
(
"duniter.share.base.url"
);
}
...
...
duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/rest/page/RestPageShareLinkAction.java
View file @
8fe41bb4
...
...
@@ -10,10 +10,8 @@ import org.duniter.elasticsearch.rest.share.AbstractRestShareLinkAction;
import
org.duniter.elasticsearch.user.PluginSettings
;
import
org.duniter.elasticsearch.user.dao.page.PageIndexDao
;
import
org.duniter.elasticsearch.user.dao.page.PageRecordDao
;
import
org.duniter.elasticsearch.user.model.UserProfile
;
import
org.duniter.elasticsearch.user.model.page.RegistryRecord
;
import
org.duniter.elasticsearch.user.service.PageService
;
import
org.duniter.elasticsearch.user.service.UserService
;
import
org.duniter.elasticsearch.util.opengraph.OGData
;
import
org.elasticsearch.client.Client
;
import
org.elasticsearch.common.inject.Inject
;
...
...
@@ -23,7 +21,6 @@ import org.nuiton.i18n.I18n;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
import
java.util.Locale
;
public
class
RestPageShareLinkAction
extends
AbstractRestShareLinkAction
{
...
...
@@ -32,6 +29,7 @@ public class RestPageShareLinkAction extends AbstractRestShareLinkAction {
final
PluginSettings
pluginSettings
,
final
PageService
service
)
{
super
(
settings
,
controller
,
client
,
PageIndexDao
.
INDEX
,
PageRecordDao
.
TYPE
,
pluginSettings
.
getShareBaseUrl
(),
createResolver
(
pluginSettings
,
service
));
}
...
...
@@ -60,9 +58,13 @@ public class RestPageShareLinkAction extends AbstractRestShareLinkAction {
// og:image
if
(
record
.
getThumbnail
()
!=
null
&&
StringUtils
.
isNotBlank
(
record
.
getThumbnail
().
get
(
"_content_type"
)))
{
String
baseUrl
=
pluginSettings
.
getBaseUrl
();
String
baseUrl
=
pluginSettings
.
get
Share
BaseUrl
();
data
.
image
=
StringUtils
.
isBlank
(
baseUrl
)
?
""
:
baseUrl
;
data
.
image
+=
RestImageAttachmentAction
.
computeImageUrl
(
PageIndexDao
.
INDEX
,
PageRecordDao
.
TYPE
,
id
,
RegistryRecord
.
PROPERTY_THUMBNAIL
,
record
.
getThumbnail
().
get
(
"_content_type"
));
// FIXME : use a greater image ? at least 200px x 200px for FaceBook
data
.
imageHeight
=
100
;
data
.
imageWidth
=
100
;
}
// og:url
...
...
@@ -94,8 +96,10 @@ public class RestPageShareLinkAction extends AbstractRestShareLinkAction {
// default og:image
if
(
StringUtils
.
isBlank
(
data
.
image
))
{
data
.
image
=
pluginSettings
.
getCesiumUrl
()
+
"/img/logo_
128
px.png"
;
data
.
image
=
pluginSettings
.
getCesiumUrl
()
+
"/img/logo_
200
px.png"
;
data
.
imageType
=
"image/png"
;
data
.
imageHeight
=
200
;
data
.
imageWidth
=
200
;
}
return
data
;
...
...
duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/rest/user/RestUserShareLinkAction.java
View file @
8fe41bb4
package
org
.
duniter
.
elasticsearch
.
user
.
rest
.
user
;
import
com.google.common.collect.Maps
;
import
com.google.common.html.HtmlEscapers
;
import
org.duniter.core.exception.BusinessException
;
import
org.duniter.core.exception.TechnicalException
;
...
...
@@ -29,9 +28,10 @@ public class RestUserShareLinkAction extends AbstractRestShareLinkAction {
final
PluginSettings
pluginSettings
,
final
UserService
userService
)
{
super
(
settings
,
controller
,
client
,
UserService
.
INDEX
,
UserService
.
PROFILE_TYPE
,
pluginSettings
.
getShareBaseUrl
(),
createResolver
(
pluginSettings
,
userService
));
if
(
StringUtils
.
isBlank
(
pluginSettings
.
getBaseUrl
()))
{
if
(
StringUtils
.
isBlank
(
pluginSettings
.
get
Share
BaseUrl
()))
{
log
.
warn
(
I18n
.
t
(
"duniter4j.es.share.error.noBaseUrl"
,
"duniter.share.base.url"
));
}
}
...
...
@@ -57,6 +57,7 @@ public class RestUserShareLinkAction extends AbstractRestShareLinkAction {
else
{
locale
=
I18n
.
getDefaultLocale
();
}
data
.
locale
=
locale
.
toString
();
String
pubkey
=
I18n
.
l
(
locale
,
"duniter.user.share.pubkey"
,
id
);
...
...
@@ -81,9 +82,11 @@ public class RestUserShareLinkAction extends AbstractRestShareLinkAction {
// og:image
if
(
profile
.
getAvatar
()
!=
null
&&
StringUtils
.
isNotBlank
(
profile
.
getAvatar
().
getContentType
()))
{
String
baseUrl
=
pluginSettings
.
getBaseUrl
();
String
baseUrl
=
pluginSettings
.
get
Share
BaseUrl
();
data
.
image
=
StringUtils
.
isBlank
(
baseUrl
)
?
""
:
baseUrl
;
data
.
image
+=
RestImageAttachmentAction
.
computeImageUrl
(
UserService
.
INDEX
,
UserService
.
PROFILE_TYPE
,
id
,
UserProfile
.
PROPERTY_AVATAR
,
profile
.
getAvatar
().
getContentType
());
data
.
imageHeight
=
100
;
data
.
imageWidth
=
100
;
}
// og:url
...
...
@@ -116,8 +119,10 @@ public class RestUserShareLinkAction extends AbstractRestShareLinkAction {
// default og:image
if
(
StringUtils
.
isBlank
(
data
.
image
))
{
data
.
image
=
pluginSettings
.
getCesiumUrl
()
+
"/img/logo_
128
px.png"
;
data
.
image
=
pluginSettings
.
getCesiumUrl
()
+
"/img/logo_
200
px.png"
;
data
.
imageType
=
"image/png"
;
data
.
imageHeight
=
200
;
data
.
imageWidth
=
200
;
}
return
data
;
...
...
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