-
-
Save shin1ogawa/e725b1a3e26729299a37 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.shin1ogawa; | |
/** | |
* Contains the client IDs and scopes for allowed clients consuming your API. | |
*/ | |
public class Constants { | |
public static final String WEB_CLIENT_ID = "replace this with your Web client ID"; | |
public static final String ANDROID_CLIENT_ID = "replace this with your Android client ID"; | |
public static final String IOS_CLIENT_ID = "replace this with your iOS client ID"; | |
public static final String ANDROID_AUDIENCE = WEB_CLIENT_ID; | |
public static final String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email"; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.shin1ogawa; | |
import java.util.Date; | |
public class MyModel { | |
String id; | |
String message; | |
Date createdAt; | |
public String getId() { return id; } | |
public void setId(String id) { this.id = id; } | |
public String getMessage() { return message; } | |
public void setMessage(String message) { this.message = message; } | |
public Date getCreatedAt() { return createdAt; } | |
public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<packaging>war</packaging> | |
<version>1</version> | |
<groupId>com.shin1ogawa</groupId> | |
<artifactId>appengine-endpoints</artifactId> | |
<properties> | |
<appengine.app.version>1</appengine.app.version> | |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
</properties> | |
<prerequisites> | |
<maven>3.1.0</maven> | |
</prerequisites> | |
<dependencies> | |
<!-- Compile/runtime dependencies --> | |
<dependency> | |
<groupId>com.google.appengine</groupId> | |
<artifactId>appengine-api-1.0-sdk</artifactId> | |
<version>1.9.4</version> | |
</dependency> | |
<dependency> | |
<groupId>com.google.appengine</groupId> | |
<artifactId>appengine-endpoints</artifactId> | |
<version>1.9.4</version> | |
</dependency> | |
<dependency> | |
<groupId>javax.servlet</groupId> | |
<artifactId>servlet-api</artifactId> | |
<version>2.5</version> | |
<scope>provided</scope> | |
</dependency> | |
<dependency> | |
<groupId>javax.inject</groupId> | |
<artifactId>javax.inject</artifactId> | |
<version>1</version> | |
</dependency> | |
<!-- Test Dependencies --> | |
<dependency> | |
<groupId>junit</groupId> | |
<artifactId>junit</artifactId> | |
<version>4.11</version> | |
<scope>test</scope> | |
</dependency> | |
<dependency> | |
<groupId>org.mockito</groupId> | |
<artifactId>mockito-all</artifactId> | |
<version>1.9.5</version> | |
<scope>test</scope> | |
</dependency> | |
<dependency> | |
<groupId>com.google.appengine</groupId> | |
<artifactId>appengine-testing</artifactId> | |
<version>1.9.4</version> | |
<scope>test</scope> | |
</dependency> | |
<dependency> | |
<groupId>com.google.appengine</groupId> | |
<artifactId>appengine-api-stubs</artifactId> | |
<version>1.9.4</version> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
<build> | |
<!-- for hot reload of the web application--> | |
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> | |
<plugins> | |
<plugin> | |
<groupId>org.codehaus.mojo</groupId> | |
<artifactId>versions-maven-plugin</artifactId> | |
<version>2.1</version> | |
<executions> | |
<execution> | |
<phase>compile</phase> | |
<goals> | |
<goal>display-dependency-updates</goal> | |
<goal>display-plugin-updates</goal> | |
</goals> | |
</execution> | |
</executions> | |
</plugin> | |
<plugin> | |
<groupId>org.apache.maven.plugins</groupId> | |
<version>3.1</version> | |
<artifactId>maven-compiler-plugin</artifactId> | |
<configuration> | |
<source>1.7</source> | |
<target>1.7</target> | |
</configuration> | |
</plugin> | |
<plugin> | |
<groupId>org.apache.maven.plugins</groupId> | |
<artifactId>maven-war-plugin</artifactId> | |
<version>2.4</version> | |
<configuration> | |
<webXml>${project.build.directory}/generated-sources/appengine-endpoints/WEB-INF/web.xml</webXml> | |
<webResources> | |
<resource> | |
<!-- this is relative to the pom.xml directory --> | |
<directory>${project.build.directory}/generated-sources/appengine-endpoints</directory> | |
<!-- the list has a default value of ** --> | |
<includes> | |
<include>WEB-INF/*.discovery</include> | |
<include>WEB-INF/*.api</include> | |
</includes> | |
</resource> | |
</webResources> | |
</configuration> | |
</plugin> | |
<plugin> | |
<groupId>com.google.appengine</groupId> | |
<artifactId>appengine-maven-plugin</artifactId> | |
<version>1.9.4</version> | |
<configuration> | |
<enableJarClasses>false</enableJarClasses> | |
<!-- Comment in the below snippet to bind to all IPs instead of just localhost --> | |
<!-- address>0.0.0.0</address> | |
<port>8080</port --> | |
<!-- Comment in the below snippet to enable local debugging with a remove debugger | |
like those included with Eclipse or IntelliJ --> | |
<!-- jvmFlags> | |
<jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag> | |
</jvmFlags --> | |
</configuration> | |
<executions> | |
<execution> | |
<goals> | |
<goal>endpoints_get_discovery_doc</goal> | |
</goals> | |
</execution> | |
</executions> | |
</plugin> | |
</plugins> | |
</build> | |
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.shin1ogawa; | |
import java.util.ArrayList; | |
import java.util.Date; | |
import java.util.List; | |
import java.util.concurrent.ConcurrentHashMap; | |
import com.google.api.server.spi.config.Api; | |
import com.google.api.server.spi.config.ApiMethod; | |
import com.google.appengine.api.oauth.OAuthRequestException; | |
import com.google.appengine.api.users.User; | |
/** | |
* Add your first API methods in this class, or you may create another class. In | |
* that case, please update your web.xml accordingly. | |
**/ | |
@Api(name = "myFirstAPI", version = "v1", clientIds = { com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID }) | |
public class YourFirstAPI { | |
static ConcurrentHashMap<String, MyModel> myModels = new ConcurrentHashMap<>(); | |
@ApiMethod(name = "myModel.insert", path = "myModel/insert") | |
public MyModel insert(MyModel myModel, User user) throws OAuthRequestException { | |
if (user == null) { throw new OAuthRequestException("ログインしないとダメ!"); } | |
Date now = new Date(); | |
myModel.setId(String.valueOf(now.getTime())); | |
myModel.setCreatedAt(now); | |
myModels.put(myModel.getId(), myModel); | |
return myModel; | |
} | |
@ApiMethod(name = "myModel.list", path = "myModel/list") | |
public List<MyModel> list() { | |
return new ArrayList<>(myModels.values()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment