v0.8.2: added a news checker service
This commit is contained in:
@@ -27,6 +27,7 @@ android {
|
|||||||
versionNameSuffix '-INDEV'
|
versionNameSuffix '-INDEV'
|
||||||
dependencies {
|
dependencies {
|
||||||
debugImplementation project(':services:updates:debugUpdates')
|
debugImplementation project(':services:updates:debugUpdates')
|
||||||
|
debugImplementation project(':services:news:debugNews')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
release {
|
release {
|
||||||
@@ -41,6 +42,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
releaseImplementation project(':services:updates:githubUpdates')
|
releaseImplementation project(':services:updates:githubUpdates')
|
||||||
|
releaseImplementation project(':services:news:shatteredNews')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ import com.badlogic.gdx.backends.android.AndroidApplication;
|
|||||||
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
|
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.services.news.News;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.services.news.NewsImpl;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl;
|
import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates;
|
import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates;
|
||||||
import com.watabou.noosa.Game;
|
import com.watabou.noosa.Game;
|
||||||
@@ -60,10 +62,13 @@ public class AndroidGame extends AndroidApplication {
|
|||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
Game.versionCode = 0;
|
Game.versionCode = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UpdateImpl.supportsUpdates()){
|
if (UpdateImpl.supportsUpdates()){
|
||||||
Updates.service = UpdateImpl.getUpdateService();
|
Updates.service = UpdateImpl.getUpdateService();
|
||||||
}
|
}
|
||||||
|
if (NewsImpl.supportsNews()){
|
||||||
|
News.service = NewsImpl.getNewsService();
|
||||||
|
}
|
||||||
|
|
||||||
FileUtils.setDefaultFileProperties( Files.FileType.Local, "" );
|
FileUtils.setDefaultFileProperties( Files.FileType.Local, "" );
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class News {
|
||||||
|
|
||||||
|
public static NewsService service;
|
||||||
|
|
||||||
|
public static boolean supportsNews(){
|
||||||
|
return service != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Date lastCheck = null;
|
||||||
|
private static final long CHECK_DELAY = 1000*60*60; //1 hour
|
||||||
|
|
||||||
|
public static void checkForNews(){
|
||||||
|
if (!supportsNews()) return;
|
||||||
|
if (lastCheck != null && (new Date().getTime() - lastCheck.getTime()) < CHECK_DELAY) return;
|
||||||
|
|
||||||
|
service.checkForArticles(new NewsService.NewsResultCallback() {
|
||||||
|
@Override
|
||||||
|
public void onArticlesFound(ArrayList<NewsArticle> articles) {
|
||||||
|
lastCheck = new Date();
|
||||||
|
News.articles = articles;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnectionFailed() {
|
||||||
|
lastCheck = null;
|
||||||
|
News.articles = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ArrayList<NewsArticle> articles;
|
||||||
|
|
||||||
|
public static boolean articlesAvailable(){
|
||||||
|
return articles != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayList<NewsArticle> articles(){
|
||||||
|
return articles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int unreadArticles(Date lastRead){
|
||||||
|
int unread = 0;
|
||||||
|
for (NewsArticle article : articles){
|
||||||
|
if (article.date.after(lastRead)) unread++;
|
||||||
|
}
|
||||||
|
return unread;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -23,6 +23,7 @@ task debug(dependsOn: classes, type: JavaExec) {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
debugImplementation project(':services:updates:debugUpdates')
|
debugImplementation project(':services:updates:debugUpdates')
|
||||||
|
debugImplementation project(':services:news:debugNews')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,6 +46,7 @@ task release(dependsOn: compileForRelease, type: Jar) {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
releaseImplementation project(':services:updates:githubUpdates')
|
releaseImplementation project(':services:updates:githubUpdates')
|
||||||
|
releaseImplementation project(':services:news:shatteredNews')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,4 +67,5 @@ dependencies {
|
|||||||
//Need these at compile time to prevent errors there.
|
//Need these at compile time to prevent errors there.
|
||||||
// The actual dependency used at runtime will vary based on source set.
|
// The actual dependency used at runtime will vary based on source set.
|
||||||
compileOnly project(':services:updates:debugUpdates')
|
compileOnly project(':services:updates:debugUpdates')
|
||||||
|
compileOnly project(':services:news:debugNews')
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,8 @@ import com.badlogic.gdx.files.FileHandle;
|
|||||||
import com.badlogic.gdx.utils.SharedLibraryLoader;
|
import com.badlogic.gdx.utils.SharedLibraryLoader;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
|
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.services.news.News;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.services.news.NewsImpl;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl;
|
import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates;
|
import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates;
|
||||||
import com.watabou.noosa.Game;
|
import com.watabou.noosa.Game;
|
||||||
@@ -98,6 +100,9 @@ public class DesktopLauncher {
|
|||||||
if (UpdateImpl.supportsUpdates()){
|
if (UpdateImpl.supportsUpdates()){
|
||||||
Updates.service = UpdateImpl.getUpdateService();
|
Updates.service = UpdateImpl.getUpdateService();
|
||||||
}
|
}
|
||||||
|
if (NewsImpl.supportsNews()){
|
||||||
|
News.service = NewsImpl.getNewsService();
|
||||||
|
}
|
||||||
|
|
||||||
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
|
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
|
||||||
|
|
||||||
|
|||||||
30
services/news/debugNews/build.gradle
Normal file
30
services/news/debugNews/build.gradle
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
apply plugin: 'java-library'
|
||||||
|
|
||||||
|
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||||
|
sourceCompatibility = targetCompatibility = appJavaCompatibility
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation project(':SPD-classes')
|
||||||
|
api project(':services')
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class DebugNews extends NewsService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkForArticles(NewsResultCallback callback) {
|
||||||
|
|
||||||
|
//turn on to test connection failure
|
||||||
|
if (false){
|
||||||
|
callback.onConnectionFailed();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<NewsArticle> articles = new ArrayList<>();
|
||||||
|
for (int i = 0; i < 10; i++){
|
||||||
|
NewsArticle article = new NewsArticle();
|
||||||
|
article.title = "TEST ARTICLE " + i;
|
||||||
|
article.summary = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " +
|
||||||
|
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim " +
|
||||||
|
"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea " +
|
||||||
|
"commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit " +
|
||||||
|
"esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " +
|
||||||
|
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
|
||||||
|
article.URL = "http://www.google.com";
|
||||||
|
// a year in the past, plus one day for each article
|
||||||
|
long daysBack = 365+i;
|
||||||
|
article.date = new Date(System.currentTimeMillis() - (daysBack*1000*60*60*24));
|
||||||
|
articles.add(article);
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.onArticlesFound(articles);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
public class NewsImpl {
|
||||||
|
|
||||||
|
private static NewsService newsChecker = new DebugNews();
|
||||||
|
|
||||||
|
public static NewsService getNewsService(){
|
||||||
|
return newsChecker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean supportsNews(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
30
services/news/shatteredNews/build.gradle
Normal file
30
services/news/shatteredNews/build.gradle
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
apply plugin: 'java-library'
|
||||||
|
|
||||||
|
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||||
|
sourceCompatibility = targetCompatibility = appJavaCompatibility
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation project(':SPD-classes')
|
||||||
|
api project(':services')
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
public class NewsImpl {
|
||||||
|
|
||||||
|
private static NewsService newsChecker = new ShatteredNews();
|
||||||
|
|
||||||
|
public static NewsService getNewsService(){
|
||||||
|
return newsChecker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean supportsNews(){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.Net;
|
||||||
|
import com.badlogic.gdx.utils.XmlReader;
|
||||||
|
import com.watabou.noosa.Game;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
public class ShatteredNews extends NewsService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkForArticles(NewsResultCallback callback) {
|
||||||
|
|
||||||
|
if (!Game.platform.connectedToUnmeteredNetwork()){
|
||||||
|
callback.onConnectionFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
Net.HttpRequest httpGet = new Net.HttpRequest(Net.HttpMethods.GET);
|
||||||
|
httpGet.setUrl("http://shatteredpixel.com/feed");
|
||||||
|
|
||||||
|
Gdx.net.sendHttpRequest(httpGet, new Net.HttpResponseListener() {
|
||||||
|
@Override
|
||||||
|
public void handleHttpResponse(Net.HttpResponse httpResponse) {
|
||||||
|
ArrayList<NewsArticle> articles = new ArrayList<>();
|
||||||
|
XmlReader reader = new XmlReader();
|
||||||
|
XmlReader.Element xmlDoc = reader.parse(httpResponse.getResultAsStream());
|
||||||
|
|
||||||
|
SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
|
||||||
|
|
||||||
|
for (XmlReader.Element xmlArticle : xmlDoc.getChildrenByName("entry")){
|
||||||
|
NewsArticle article = new NewsArticle();
|
||||||
|
article.title = xmlArticle.get("title");
|
||||||
|
try {
|
||||||
|
article.date = dateParser.parse(xmlArticle.get("published"));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
Game.reportException(e);
|
||||||
|
}
|
||||||
|
article.summary = xmlArticle.get("summary");
|
||||||
|
article.URL = xmlArticle.get("id").replace("https://", "http://");
|
||||||
|
articles.add(article);
|
||||||
|
}
|
||||||
|
callback.onArticlesFound(articles);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void failed(Throwable t) {
|
||||||
|
callback.onConnectionFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancelled() {
|
||||||
|
callback.onConnectionFailed();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class NewsArticle {
|
||||||
|
|
||||||
|
public String title;
|
||||||
|
public String summary;
|
||||||
|
public String URL;
|
||||||
|
public Date date;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2020 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.services.news;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public abstract class NewsService {
|
||||||
|
|
||||||
|
public static abstract class NewsResultCallback {
|
||||||
|
public abstract void onArticlesFound(ArrayList<NewsArticle> articles);
|
||||||
|
public abstract void onConnectionFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void checkForArticles( NewsResultCallback callback );
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
include ':core', ':SPD-classes', ':android', ':desktop', ':services',
|
include ':core', ':SPD-classes', ':android', ':desktop', ':services',
|
||||||
':services:updates:debugUpdates', ':services:updates:githubUpdates'
|
':services:updates:debugUpdates', ':services:updates:githubUpdates',
|
||||||
|
':services:news:debugNews', ':services:news:shatteredNews'
|
||||||
Reference in New Issue
Block a user