Skip to content
This repository has been archived by the owner on Aug 13, 2021. It is now read-only.

Commit

Permalink
Merge branch 'release-1.0.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
a-know committed Nov 2, 2013
2 parents f501d9a + a6484c0 commit 39cf88a
Show file tree
Hide file tree
Showing 44 changed files with 8,811 additions and 206 deletions.
1 change: 0 additions & 1 deletion .apt_generated/com/aknow/meta/.gitignore

This file was deleted.

5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
PrivateConstants.java
target/generated-sources/apt/com/aknow/a_know_home/meta
target
war/WEB-INF/appengine-generated
war/WEB-INF/lib
75 changes: 58 additions & 17 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
<groupId>com.aknow</groupId>
<artifactId>a-know-home</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<version>1.0.0</version>
<properties>
<slim3.version>1.0.16</slim3.version>
<appengine.version>1.7.0</appengine.version>
<appengine.version>1.8.6</appengine.version>
<java.version>1.7</java.version>
<generated.src>.apt_generated</generated.src>
<generated.war>war</generated.war>
<eclipse.lib>eclipse.lib</eclipse.lib>
<appengine.sdkdir>/Users/a-know/dev/java/gae/eclipse_kepler/plugins/appengine-java-sdk-1.8.6</appengine.sdkdir>
</properties>
<repositories>
<repository>
Expand Down Expand Up @@ -99,6 +101,38 @@
<version>${appengine.version}</version>
<scope>test</scope>
</dependency>
<!-- ここからアプリケーション固有 -->
<dependency>
<groupId>informa</groupId>
<artifactId>informa</artifactId>
<version>0.5.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>net.arnx</groupId>
<artifactId>jsonic</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>org.scribe</groupId>
<artifactId>scribe</artifactId>
<version>1.3.0</version>
</dependency>
<!-- ここまでアプリケーション固有 -->
</dependencies>
<build>
<finalName>slim3-maven</finalName>
Expand All @@ -122,11 +156,10 @@
</dependency>
</dependencies>
</plugin>
<!-- maven-gae-pluginの追加 -->
<plugin>
<groupId>net.kindleit</groupId>
<artifactId>maven-gae-plugin</artifactId>
<version>0.7.2</version>
<version>0.9.5</version>
</plugin>
</plugins>
</pluginManagement>
Expand All @@ -152,8 +185,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<source>1.6</source>
<target>1.6</target>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -308,19 +341,27 @@ ormEnhancementInclusions=
</file>
</additionalConfig>
</configuration>
</plugin>
<!-- maven-gae-pluginの追加 -->
</plugin><!-- maven-gae-pluginの追加 -->
<plugin>
<groupId>net.kindleit</groupId>
<artifactId>maven-gae-plugin</artifactId>
<version>0.7.2</version>
<configuration>
<serverId>appengine.google.com</serverId>
<sdkDir>/Users/a-know/dev/java/gae/eclipse-kepler/plugins/appengine-java-sdk-1.8.1.1</sdkDir>
<appDir>${basedir}/war</appDir>
</configuration>
<groupId>net.kindleit</groupId>
<artifactId>maven-gae-plugin</artifactId>
<version>0.9.5</version>
<configuration>
<serverId>appengine.google.com</serverId>
<sdkDir>${appengine.sdkdir}</sdkDir>
<appDir>${basedir}/war</appDir>
<unpackVersion>${appengine.version}</unpackVersion>
<splitJars>true</splitJars>
</configuration>
<dependencies>
<dependency>
<groupId>net.kindleit</groupId>
<artifactId>gae-runtime</artifactId>
<version>${appengine.version}</version>
<type>pom</type>
</dependency>
</dependencies>
</plugin>
<!-- maven-war-pluginの追加 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.aknow.a_know_home.controller;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

import com.aknow.a_know_home.util.PrivateConstants;

public class AdminController extends Controller {

private final String password = PrivateConstants.HASHED_PASS;

@Override
public Navigation run() throws Exception {

String function = requestScope("function");
String send_pass = requestScope("password");

if(!this.password.equals(send_pass)){
return this.forward("/");
}else{
return this.redirect(PrivateConstants.ADMIN_MENU.get(function));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.aknow.a_know_home.controller;

import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

import net.arnx.jsonic.JSON;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;
import org.slim3.memcache.Memcache;

import com.aknow.a_know_home.util.UtilityMethods;

import de.nava.informa.core.ItemIF;

public class GetBlogRssController extends Controller {

@Override
public Navigation run() throws Exception {
this.response.setContentType("application/json; charset=UTF-8");


Map<String, ArrayList<Map<String, String>>> map = new LinkedHashMap<String, ArrayList<Map<String, String>>>();
ArrayList<Map<String, String>> array = new ArrayList<Map<String, String>>();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal1 = Calendar.getInstance();

@SuppressWarnings("rawtypes")
Collection list = UtilityMethods.getRss("http://d.hatena.ne.jp/a-know/rss", "yyyy-MM-dd");

@SuppressWarnings("unchecked")
ItemIF[] items = (ItemIF[]) list.toArray(new ItemIF[0]);

for (int i = 0; i < 5; i++) {
Map<String, String> entry = new HashMap<String, String>();
entry.put("target_title", items[i].getTitle());
entry.put("target_url", items[i].getLink().toString());
entry.put("description", items[i].getDescription());
Date tmpDate = (items[i].getDate());
cal1.setTime(tmpDate);
cal1.add(Calendar.HOUR, 9);
entry.put("date", sdf1.format(cal1.getTime()));

String url_str2 = "http://api.b.st-hatena.com/entry.count?url=" + URLEncoder.encode(items[i].getLink().toString(), "utf-8");
String is_str = Memcache.get(url_str2 + sdf2.format(cal1.getTime()));
if (is_str == null){
InputStream is = new URL(url_str2).openStream();
is_str = UtilityMethods.inputStreemToString(is);
Memcache.put(url_str2 + sdf2.format(cal1.getTime()), is_str);
}
entry.put("hatebu_count",is_str);
entry.put("hatebu_url", "http://b.hatena.ne.jp/entry/" + items[i].getLink().toString());
array.add(entry);
}
map.put("entries", array);


JSON.encode(map, this.response.getOutputStream());

return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.aknow.a_know_home.controller;

import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

import net.arnx.jsonic.JSON;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;
import org.slim3.memcache.Memcache;

import com.aknow.a_know_home.util.UtilityMethods;

import de.nava.informa.core.ItemIF;

public class GetBukumaController extends Controller {

@Override
public Navigation run() throws Exception {
this.response.setContentType("application/json; charset=UTF-8");


Map<String, ArrayList<Map<String, String>>> map = new LinkedHashMap<String, ArrayList<Map<String, String>>>();
ArrayList<Map<String, String>> array = new ArrayList<Map<String, String>>();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cal1 = Calendar.getInstance();

@SuppressWarnings("rawtypes")
Collection list = UtilityMethods.getRss("http://b.hatena.ne.jp/a-know/rss", "yyyy-MM-dd-HH");

@SuppressWarnings("unchecked")
ItemIF[] items = (ItemIF[]) list.toArray(new ItemIF[0]);

for (int i = 0; i < 10; i++) {
Map<String, String> entry = new HashMap<String, String>();
entry.put("target_title", items[i].getTitle());
entry.put("target_url", items[i].getLink().toString());
entry.put("comment", items[i].getDescription());
Date tmpDate = (items[i].getDate());
cal1.setTime(tmpDate);
cal1.add(Calendar.HOUR, 9);
entry.put("date", sdf1.format(cal1.getTime()));

String url_str2 = "http://api.b.st-hatena.com/entry.count?url=" + URLEncoder.encode(items[i].getLink().toString(), "utf-8");
String is_str = Memcache.get(url_str2);
if(is_str == null){
InputStream is = new URL(url_str2).openStream();
is_str = UtilityMethods.inputStreemToString(is);
Memcache.put(url_str2, is_str);
}
entry.put("hatebu_count", is_str);
entry.put("hatebu_url", "http://b.hatena.ne.jp/entry/" + items[i].getLink().toString());
array.add(entry);
}
map.put("entries", array);


JSON.encode(map, this.response.getOutputStream());

return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.aknow.a_know_home.controller;

import java.net.URL;
import java.util.LinkedHashMap;

import net.arnx.jsonic.JSON;

import org.scribe.builder.ServiceBuilder;
import org.scribe.builder.api.DefaultApi10a;
import org.scribe.model.OAuthRequest;
import org.scribe.model.Response;
import org.scribe.model.Token;
import org.scribe.model.Verb;
import org.scribe.oauth.OAuthService;
import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

import com.aknow.a_know_home.util.PrivateConstants;

public class GetImaCocoController extends Controller {

@SuppressWarnings("unchecked")
@Override
public Navigation run() throws Exception {
this.response.setContentType("application/json; charset=UTF-8");

DefaultApi10a api = new DefaultApi10a() {
@Override
public String getRequestTokenEndpoint() {
return "https://www.hatena.com/oauth/initiate";
}

public String getAuthorizationUrl(Token arg0) {
return "https://www.hatena.ne.jp/oauth/authorize?oauth_token=" + arg0.getToken();
}

@Override
public String getAccessTokenEndpoint() {
return "https://www.hatena.com/oauth/token";
}
};

OAuthService service = new ServiceBuilder().provider(api)
.apiKey(PrivateConstants.HATENA_API_KEY).apiSecret(PrivateConstants.HATENA_API_SECRET).scope("read_public").build();

Token accessToken = new Token(PrivateConstants.HATENA_ACCESS_TOKEN, PrivateConstants.HATENA_TOKEN_SECRET);

OAuthRequest req = new OAuthRequest(Verb.GET, "http://c.hatena.com/api/v1/history.json?name=a-know&l=10");

service.signRequest(accessToken, req);

Response res = null;
int i = 0;
while(res == null){
try{
res = req.send();
}catch(Exception e){
i++;
if(i > 10){
throw e;
}
}
}


@SuppressWarnings("rawtypes")
LinkedHashMap lmap = (LinkedHashMap) JSON.decode(res.getBody());

Object stats = JSON.decode(new URL("http://c.hatena.com/a-know/stats.json").openStream());
lmap.put("stats", stats);

JSON.encode(lmap, this.response.getOutputStream());

return null;
}
}
Loading

0 comments on commit 39cf88a

Please sign in to comment.