Created
March 13, 2018 14:09
-
-
Save dgielis/e97c94391058dcacb4a2b50e355d9445 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
create or replace package ora_dev_cloud_pkg as | |
/* | |
Purpose : Oracle Developer Cloud module | |
history | |
Version Date By Description | |
------- ----------- ---------------- ---------------------------------------------- | |
0.1 22-FEB-2018 Dimitri First version, based on Dimitri's blog post | |
*/ | |
g_username constant varchar2(100) := 'no-reply@apexrnd.be'; | |
g_password constant varchar2(100) := 'password'; | |
g_url constant varchar2(200) := 'https://developer.em2.oraclecloud.com/developerXXX-XXX/rest/developerXXX-XXX_project_XXX'; | |
g_url_issues constant varchar2(200) := g_url || '/issues/v2/issues'; | |
function issue_template( | |
p_summary in varchar2, | |
p_description in varchar2, | |
p_type in varchar2) | |
return clob; | |
procedure create_issue( | |
p_summary in varchar2, | |
p_description in varchar2, | |
p_type in varchar2); | |
end ora_dev_cloud_pkg; | |
/ | |
create or replace package body ora_dev_cloud_pkg as | |
function issue_template( | |
p_summary in varchar2, | |
p_description in varchar2, | |
p_type in varchar2) | |
return clob | |
as | |
l_clob clob; | |
l_json_values apex_json.t_values; | |
l_issue_template varchar2(32767); | |
l_return clob; | |
begin | |
-- do a request for the create form service to get the definition of the Oracle developer cloud issues | |
l_clob := apex_web_service.make_rest_request( | |
p_url => g_url_issues || '/create-form', | |
p_username => g_username, | |
p_password => g_password, | |
p_http_method => 'GET', | |
p_body => ''); | |
-- parse the result | |
apex_json.parse(l_json_values, l_clob); | |
-- get the issues url | |
--l_issues_url := apex_json.get_varchar2(p_path => 'createIssue.links[%d].href', p0 => 2, p_values => l_json_values); | |
-- debug | |
--sys.htp.p(l_issues_url); | |
-- build the json, probably we need to make this more dynamic later | |
l_issue_template := ' | |
{ | |
"links": [{ | |
"rel": "self", | |
"href": "'||g_url_issues||'/create-form" | |
}, { | |
"rel": "create", | |
"href": "'||g_url_issues||'" | |
}], | |
"summary": "#SUMMARY#", | |
"description": "#DESCRIPTION#", | |
"type": "#TYPE#", | |
"severity": { | |
"id": 4, | |
"value": "normal", | |
"sortkey": 400 | |
}, | |
"status": { | |
"id": 1, | |
"value": "UNCONFIRMED", | |
"isActive": true, | |
"isOpen": true, | |
"sortkey": 100 | |
}, | |
"priority": { | |
"id": 3, | |
"value": "Normal", | |
"sortkey": 300 | |
}, | |
"release": { | |
"id": 1, | |
"value": "---", | |
"sortkey": 0, | |
"product": { | |
"id": 1 | |
} | |
}, | |
"product": { | |
"id": 1, | |
"name": "APEX RND", | |
"description": "APEX RND", | |
"isActive": true, | |
"defaultRelease": { | |
"id": 1, | |
"value": "---", | |
"sortkey": 0, | |
"product": { | |
"id": 1 | |
} | |
}, | |
"defaultComponent": { | |
"id": 1, | |
"product": { | |
"id": 1 | |
}, | |
"name": "Default", | |
"description": "default component" | |
}, | |
"releases": [{ | |
"id": 1, | |
"value": "---", | |
"sortkey": 0, | |
"product": { | |
"id": 1 | |
} | |
}], | |
"components": [{ | |
"id": 1, | |
"product": { | |
"id": 1 | |
}, | |
"name": "Default", | |
"description": "default component" | |
}], | |
"releaseTags": [] | |
} | |
} | |
'; | |
l_return := replace(l_issue_template,'#SUMMARY#', p_summary); | |
l_return := replace(l_return,'#DESCRIPTION#', p_description); | |
l_return := replace(l_return,'#TYPE#', p_type); | |
return l_return; | |
end issue_template; | |
procedure create_issue( | |
p_summary in varchar2, | |
p_description in varchar2, | |
p_type in varchar2) | |
as | |
PRAGMA AUTONOMOUS_TRANSACTION; | |
l_clob clob; | |
l_issue_template clob; | |
begin | |
l_issue_template := issue_template( | |
p_summary => p_summary, | |
p_description => p_description, | |
p_type => p_type); | |
-- create a new issue | |
apex_web_service.g_request_headers(1).name := 'Content-Type'; | |
apex_web_service.g_request_headers(1).value := 'application/json'; | |
l_clob := apex_web_service.make_rest_request( | |
p_url => g_url_issues, | |
p_username => g_username, | |
p_password => g_password, | |
p_http_method => 'POST', | |
p_body => l_issue_template); | |
end create_issue; | |
end ora_dev_cloud_pkg; | |
/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment