Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@
<artifactId>joda-time</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.jadira.usertype</groupId>
<artifactId>usertype.core</artifactId>
Expand Down Expand Up @@ -116,6 +126,15 @@
</dependency>

</dependencies>
<repositories>
<repository>
<id>jcenter-snapshots</id>
<name>jcenter</name>
<url>https://jcenter.bintray.com/</url>
</repository>
</repositories>


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<start-class>pl.jug.torun.xenia.Application</start-class>
Expand Down
2 changes: 2 additions & 0 deletions src/main/groovy/pl/jug/torun/xenia/Application.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ class Application {
static void main(String[] args) {
SpringApplication.run Application, args
}


}
42 changes: 42 additions & 0 deletions src/main/groovy/pl/jug/torun/xenia/SwaggerConfig.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package pl.jug.torun.xenia

import com.google.common.base.Predicate
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.actuate.autoconfigure.ManagementServerProperties
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import springfox.documentation.spi.DocumentationType
import springfox.documentation.spring.web.plugins.Docket
import springfox.documentation.swagger2.annotations.EnableSwagger2

import static com.google.common.base.Predicates.not
import static com.google.common.base.Predicates.or
import static springfox.documentation.builders.PathSelectors.regex

/**
* Created by krzysztof on 25.06.16.
*/
@ConditionalOnWebApplication
@EnableSwagger2
@Configuration
public class SwaggerConfig {

@Autowired
ManagementServerProperties managementServerProperties;

@Bean
public Docket getDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.select().paths(getPaths()).build()
.ignoredParameterTypes(MetaClass.class) // for groovy
}


private Predicate getPaths() { //ignore endpoints from actuator and standard error endpoint
return not(or(
regex(managementServerProperties.getContextPath() + ".*"),
regex("/error.*")
))
}
}
27 changes: 5 additions & 22 deletions src/main/groovy/pl/jug/torun/xenia/meetup/MeetupClient.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -18,33 +18,16 @@ class MeetupClient {

private static final String MEETUP_API_HOST = 'https://api.meetup.com'

@Value('${meetup.key:""}')
String key
@Value('${meetup.code:""}')
String code

@Value('${meetup.mail.subject_template:""}')
String subjectTemplate

@Value('${meetup.mail.body_template:""}')
String bodyTemplate


@Value('${meetup.groupId:""}')
String groupId

@Value('${meetup.access_token:""}')
String token
@Autowired
MeetupProperty meetupProperty

@Autowired
TokenRequester tokenRequester

String groupUrlName

List<Event> findAllEvents() {
RESTClient request = new RESTClient(MEETUP_API_HOST)

Map params = [key: key, group_urlname: groupUrlName, status: 'upcoming,past']
Map params = [key: meetupProperty.key, group_urlname: meetupProperty.groupUrlName, status: 'upcoming,past']

HttpResponseDecorator response = request.get(
path: '/2/events.json',
Expand All @@ -58,7 +41,7 @@ class MeetupClient {
List<MeetupMember> findAllAttendeesOfEvent(Long id) {
RESTClient request = new RESTClient(MEETUP_API_HOST)

Map params = [key: key, group_urlname: groupUrlName, event_id: id, rsvp: 'yes']
Map params = [key: meetupProperty.key, group_urlname: meetupProperty.groupUrlName, event_id: id, rsvp: 'yes']

HttpResponseDecorator response = request.get(
path: '/2/rsvps.json',
Expand All @@ -74,7 +57,7 @@ class MeetupClient {

Map params = [
dryrun : true,
member_id: member.id, group_id: groupId, access_token: token,
member_id: member.id, group_id: meetupProperty.groupId, access_token: meetupProperty.token,
subject : String.format(subjectTemplate, prize.name), message: String.format(bodyTemplate, prize.name)
]

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package pl.jug.torun.xenia.meetup

/**
* Created by krzysztof on 26.06.16.
*/
class MeetupMailProperty {
String subjectTemplate
String bodyTemplate
}
19 changes: 19 additions & 0 deletions src/main/groovy/pl/jug/torun/xenia/meetup/MeetupProperty.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package pl.jug.torun.xenia.meetup

import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.stereotype.Component

/**
* Created by krzysztof on 26.06.16.
*/
@Component
@ConfigurationProperties(prefix = "meetup")
class MeetupProperty {
String key= ''
String code= ''
String groupId
String token
String groupUrlName


}
2 changes: 2 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ spring.datasource.password =
spring.datasource.driverClassName = org.h2.Driver
spring.jpa.hibernate.ddl-auto=update

management.context-path=/xenia-api

meetup.key = xxx
meetup.groupUrlName = yyy

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package pl.jug.torun.xenia.rest
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.IntegrationTest
import org.springframework.boot.test.SpringApplicationContextLoader
import org.springframework.boot.test.WebIntegrationTest
import org.springframework.dao.DataIntegrityViolationException
import org.springframework.test.context.ContextConfiguration
import pl.jug.torun.xenia.Application
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package pl.jug.torun.xenia.rest
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.IntegrationTest
import org.springframework.boot.test.SpringApplicationContextLoader
import org.springframework.boot.test.WebIntegrationTest
import org.springframework.http.MediaType
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.context.web.WebAppConfiguration
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.springframework.web.context.WebApplicationContext
Expand All @@ -22,9 +22,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status

@ContextConfiguration(loader = SpringApplicationContextLoader, classes = Application)
@WebAppConfiguration
@IntegrationTest
class PrizeControllerSpec extends Specification {
@WebIntegrationTest(randomPort = true)
class PrizeControllerSpec extends Specification{

@Autowired
WebApplicationContext webApplicationContext
Expand Down