Skip to content
Merged
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
2 changes: 1 addition & 1 deletion packages/api/src/core/api-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export async function fetchApiServerToken() {
debug: 'true',
},
})
return result?.data?.access_token || ''
return result?.data || {}
}

export function fetchApisByClient(clientId: string) {
Expand Down
2 changes: 1 addition & 1 deletion packages/business/src/views/data-server/Debug.vue
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ const getAPIServerToken = async (

const reflshToken = () => {
return getAPIServerToken((token: Record<string, any>) => {
templates.value = getTemplate(props.host + form.value.path, token)
templates.value = getTemplate({ urlList: props.urlList, token })
})
}

Expand Down
211 changes: 171 additions & 40 deletions packages/business/src/views/data-server/template.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,60 @@
export default function (url, token) {
interface UrlItem {
method: string
url: string
last?: string
canEdit?: boolean
type?: string
}

interface TemplateParams {
urlList: UrlItem[]
token: Record<string, any>
}

export default function ({ urlList, token }: TemplateParams) {
// Extract URLs from urlList
const getUrl =
urlList.find((item) => item.method === 'GET')?.url ||
urlList.find((item) => item.type === 'DEFAULT_GET')?.url ||
''
const postUrlItem = urlList.find(
(item) => item.method === 'POST' || item.type === 'DEFAULT_POST',
)
const postUrl = postUrlItem ? postUrlItem.url + (postUrlItem.last || '') : ''
const tokenUrl = urlList.find((item) => item.method === 'TOKEN')?.url || ''
const accessToken = token?.access_token || ''

const javaTemplate = `public static void main(String[] args) {
String url = "{{url}}";
String access_token = "{{access_token}}";
// Token URL (OAuth2)
String tokenUrl = "${tokenUrl}";

// GET request URL
String getUrl = "${getUrl}";

// POST request URL
String postUrl = "${postUrl}";

// Access token (obtained from token endpoint)
String access_token = "${accessToken}";

String param = "";
String result1 = doGet(url, access_token, param);

// GET request example
String result1 = doGet(getUrl, access_token, param);
System.out.println(result1);
String result2 = doPost(url+"/find", access_token, param);

// POST request example
String result2 = doPost(postUrl, access_token, param);
System.out.println(result2);
}

public static String doGet(String url, String access_token, String param) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
StringBuilder urlBuilder = new StringBuilder(url);
urlBuilder.append("?access_token=").append(access_token);
urlBuilder.append("&filter=").append(URLEncoder.encode(param, StandardCharsets.UTF_8.name()));
if (param != null && !param.isEmpty()) {
urlBuilder.append("&filter=").append(URLEncoder.encode(param, StandardCharsets.UTF_8.name()));
}
HttpGet httpGet = new HttpGet(urlBuilder.toString());
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
Expand All @@ -35,7 +76,7 @@ public static String doGet(String url, String access_token, String param) {
throw new RuntimeException(e);
}
}

public static String doPost(String url, String access_token, String reqBody) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
StringBuilder urlBuilder = new StringBuilder(url);
Expand All @@ -48,7 +89,6 @@ public static String doPost(String url, String access_token, String reqBody) {
httpPost.setConfig(requestConfig);
httpPost.setEntity(new StringEntity(reqBody, Charset.defaultCharset()));


CloseableHttpResponse response = httpClient.execute(httpPost);
StatusLine statusLine = response.getStatusLine();
HttpEntity entity = response.getEntity();
Expand All @@ -60,51 +100,142 @@ public static String doPost(String url, String access_token, String reqBody) {
} catch (IOException e) {
throw new RuntimeException(e);
}
}

// Get access token from OAuth2 token endpoint
public static String getAccessToken(String tokenUrl, String clientId, String clientSecret) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost httpPost = new HttpPost(tokenUrl);
httpPost.setHeader("content-type", "application/x-www-form-urlencoded");

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("grant_type", "client_credentials"));
params.add(new BasicNameValuePair("client_id", clientId));
params.add(new BasicNameValuePair("client_secret", clientSecret));
httpPost.setEntity(new UrlEncodedFormEntity(params));

CloseableHttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity, CharEncoding.UTF_8);
// Parse JSON to get access_token
// JSONObject json = new JSONObject(result);
// return json.getString("access_token");
return result;
}
throw new RuntimeException("Failed to get access token");
} catch (IOException e) {
throw new RuntimeException(e);
}
}`
.replace('{{url}}', url)
.replace('{{access_token}}', token)

const jsTemplate = `import fetch from 'node-fetch';
async function get(url){
const response = await fetch(url);

// Token URL (OAuth2)
const tokenUrl = '${tokenUrl}';

// GET request URL
const getUrl = '${getUrl}';

// POST request URL
const postUrl = '${postUrl}';

// Current access token
const access_token = '${accessToken}';

// Get access token from OAuth2 token endpoint
async function getAccessToken(clientId, clientSecret) {
const response = await fetch(tokenUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: clientId,
client_secret: clientSecret
})
});
const data = await response.json();
return data.access_token;
}

// GET request
async function get(url, token) {
const response = await fetch(url + '?access_token=' + token);
const data = await response.json();
return data;
}
async function post(url,body){
const response = await fetch(url,{
method: 'post',

// POST request
async function post(url, token, body) {
const response = await fetch(url + '?access_token=' + token, {
method: 'POST',
body: JSON.stringify(body),
headers: {'Content-Type': 'application/json'}
headers: { 'Content-Type': 'application/json' }
});
const data = await response.json();
return data;
}
const url = '{{url}}';
const access_token = '{{access_token}}';
get(url + '?access_token='+access_token).then(data=>{
console.info(data)
}).catch(err=>{
console.error(err)
})
post(url + '/find?access_token='+access_token,{}).then(data=>{
console.info(data)
}).catch(err=>{
console.error(err)
})`
.replace('{{url}}', url)
.replace('{{access_token}}', token)

// Example: GET request
get(getUrl, access_token).then(data => {
console.info('GET result:', data);
}).catch(err => {
console.error('GET error:', err);
});

// Example: POST request
post(postUrl, access_token, { page: 1, limit: 20 }).then(data => {
console.info('POST result:', data);
}).catch(err => {
console.error('POST error:', err);
});

// Example: Get new token and make request
// getAccessToken('your_client_id', 'your_client_secret').then(token => {
// return get(getUrl, token);
// }).then(data => {
// console.info('Result with new token:', data);
// });`

const pythonTemplate = `import requests

url = "{{url}}"
access_token = "{{access_token}}";
param = {} # for example: param={'page':1,'limit':20}
# Token URL (OAuth2)
token_url = "${tokenUrl}"

# GET request URL
get_url = "${getUrl}"

# POST request URL
post_url = "${postUrl}"

# Current access token
access_token = "${accessToken}"

# Get access token from OAuth2 token endpoint
def get_access_token(client_id, client_secret):
response = requests.post(token_url, data={
'grant_type': 'client_credentials',
'client_id': client_id,
'client_secret': client_secret
})
return response.json().get('access_token')

# GET request example
params = {'page': 1, 'limit': 20} # Optional query parameters
headers = {'access_token': access_token}
result1 = requests.get(get_url, params=params, headers=headers)
print('GET result:', result1.text)

# POST request example
body = {'page': 1, 'limit': 20}
result2 = requests.post(post_url + '?access_token=' + access_token, json=body)
print('POST result:', result2.text)

# Example: Get new token and make request
# new_token = get_access_token('your_client_id', 'your_client_secret')
# result = requests.get(get_url, headers={'access_token': new_token})
# print('Result with new token:', result.text)`

result1 = requests.get(url, params=param, headers=headers)
print(result1.text)
result2 = requests.post(url + "/find", json=param, headers=headers)
print(result2.text)`
.replace('{{url}}', url)
.replace('{{access_token}}', token)
return {
java: javaTemplate,
javascript: jsTemplate,
Expand Down