Skip to content

Commit 03459fb

Browse files
author
vivek-gofynd
committed
Integrate multilevel storage for storing extension access tokens
1 parent 05bf732 commit 03459fb

File tree

5 files changed

+92
-42
lines changed

5 files changed

+92
-42
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<maven.compiler.target>17</maven.compiler.target>
2323
<retrofit.version>2.3.0</retrofit.version>
2424
<okhttp3.version>3.14.7</okhttp3.version>
25-
<fdk-extension.version>0.6.5</fdk-extension.version>
25+
<fdk-extension.version>v1.1.0-beta.2</fdk-extension.version>
2626
<fdk-client.version>1.5.2</fdk-client.version>
2727
<net.bytebuddy.experimental>true</net.bytebuddy.experimental>
2828
</properties>
Lines changed: 51 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,80 @@
11
package com.fynd.example.java;
22

3-
43
import com.fynd.extension.model.Extension;
54
import com.fynd.extension.model.ExtensionCallback;
65
import com.fynd.extension.model.ExtensionProperties;
76
import com.fynd.extension.session.Session;
8-
import com.fynd.extension.storage.SQLiteStorage;
7+
import com.fynd.extension.storage.MultiLevelStorage;
98
import org.slf4j.Logger;
109
import org.slf4j.LoggerFactory;
1110
import org.springframework.beans.factory.annotation.Autowired;
12-
import org.springframework.beans.factory.annotation.Value;
1311
import org.springframework.boot.SpringApplication;
1412
import org.springframework.boot.autoconfigure.SpringBootApplication;
1513
import org.springframework.context.annotation.Bean;
1614
import org.springframework.context.annotation.ComponentScan;
15+
import org.springframework.context.annotation.Import;
16+
import redis.clients.jedis.JedisPool;
17+
import com.mongodb.client.MongoDatabase;
18+
import com.fynd.example.java.config.RedisConfig;
19+
import com.fynd.example.java.config.MongoConfig;
20+
21+
import java.util.HashMap;
22+
import java.util.Map;
1723

1824
@SpringBootApplication
1925
@ComponentScan(basePackages = {"com.fynd.**","com.sdk.**"})
26+
@Import({RedisConfig.class, MongoConfig.class})
2027
public class ExampleJavaApplication {
2128

22-
private static final String REDIS_KEY = "ext_sample";
29+
private static final String REDIS_KEY = "ext_sample";
2330

24-
private final Logger logger = LoggerFactory.getLogger(this.getClass());
31+
private final Logger logger = LoggerFactory.getLogger(this.getClass());
2532

26-
@Value("${sqlite.db.url}")
27-
private String dbUrl;
33+
@Autowired
34+
ExtensionProperties extensionProperties;
2835

29-
@Autowired
30-
ExtensionProperties extensionProperties;
36+
@Autowired
37+
JedisPool jedisPool;
3138

39+
@Autowired
40+
MongoDatabase mongoDatabase;
3241

33-
ExtensionCallback callbacks = new ExtensionCallback((request) -> {
34-
Session fdkSession = (Session) request.getAttribute("session");
35-
logger.debug("In Auth callback");
36-
if(request.getParameter("application_id") != null){
37-
return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId() + "/application/" + request.getParameter("application_id");
38-
}
39-
else {
40-
return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId();
41-
}
42-
}, (context) -> {
43-
logger.info("In install callback");
44-
return extensionProperties.getBaseUrl();
42+
ExtensionCallback callbacks = new ExtensionCallback((request) -> {
43+
Session fdkSession = (Session) request.getAttribute("session");
44+
logger.debug("In Auth callback");
45+
if(request.getParameter("application_id") != null){
46+
return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId() + "/application/" + request.getParameter("application_id");
47+
}
48+
else {
49+
return extensionProperties.getBaseUrl() + "/company/" + fdkSession.getCompanyId();
50+
}
51+
}, (context) -> {
52+
logger.info("In install callback");
53+
return extensionProperties.getBaseUrl();
4554

46-
}, (fdkSession) -> {
47-
logger.info("In uninstall callback");
48-
return extensionProperties.getBaseUrl();
55+
}, (fdkSession) -> {
56+
logger.info("In uninstall callback");
57+
return extensionProperties.getBaseUrl();
4958

50-
}, (fdkSession) -> {
51-
logger.info("In auto-install callback");
52-
return extensionProperties.getBaseUrl();
53-
});
59+
}, (fdkSession) -> {
60+
logger.info("In auto-install callback");
61+
return extensionProperties.getBaseUrl();
62+
});
5463

55-
public static void main(String[] args) {
56-
SpringApplication.run(ExampleJavaApplication.class, args);
57-
}
64+
public static void main(String[] args) {
65+
SpringApplication.run(ExampleJavaApplication.class, args);
66+
}
5867

59-
@Bean
60-
public com.fynd.extension.model.Extension getExtension() throws ClassNotFoundException {
61-
Extension extension = new Extension();
62-
return extension.initialize(
63-
extensionProperties,
64-
new SQLiteStorage(dbUrl, REDIS_KEY),
65-
callbacks
66-
);
67-
}
68+
@Bean
69+
public com.fynd.extension.model.Extension getExtension() throws ClassNotFoundException {
70+
Extension extension = new Extension();
71+
Map<String, String> options = new HashMap<>();
72+
// Add any required options to the map
73+
return extension.initialize(
74+
extensionProperties,
75+
new MultiLevelStorage(jedisPool, mongoDatabase, REDIS_KEY, options),
76+
callbacks
77+
);
78+
}
6879

6980
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.fynd.example.java.config;
2+
3+
import com.mongodb.client.MongoClient;
4+
import com.mongodb.client.MongoClients;
5+
import com.mongodb.client.MongoDatabase;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
9+
@Configuration
10+
public class MongoConfig {
11+
12+
@Bean
13+
public MongoClient mongoClient() {
14+
return MongoClients.create("mongodb://localhost:27017");
15+
}
16+
17+
@Bean
18+
public MongoDatabase mongoDatabase(MongoClient mongoClient) {
19+
// Replace "yourDatabaseName" with the name of your MongoDB database
20+
return mongoClient.getDatabase("extension-storage");
21+
}
22+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.fynd.example.java.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import redis.clients.jedis.JedisPool;
6+
import redis.clients.jedis.JedisPoolConfig;
7+
8+
@Configuration
9+
public class RedisConfig {
10+
11+
@Bean
12+
public JedisPool jedisPool() {
13+
JedisPoolConfig poolConfig = new JedisPoolConfig();
14+
// Configure the pool if necessary
15+
return new JedisPool(poolConfig, "localhost", 6379);
16+
}
17+
}

src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ server:
4848
ext:
4949
api_key: ${EXTENSION_API_KEY}
5050
api_secret: ${EXTENSION_API_SECRET}
51-
scopes: ""
51+
access_mode : 'offline'
5252
base_url: ${EXTENSION_BASE_URL}
5353
cluster: ${FP_API_DOMAIN:https://api.fynd.com}
5454
webhook:

0 commit comments

Comments
 (0)