Guest User

Untitled

a guest
Sep 17th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.55 KB | None | 0 0
  1. SwiftApiFuncions.pm
  2.  
  3. package SwiftApiFuncions;
  4.  
  5. use SOAP::Lite ; #+trace => "debug"
  6. $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;
  7.  
  8. use Data::Dumper;
  9.  
  10. sub new {
  11. my ( $Type, %Param ) = @_;
  12.  
  13. # allocate new hash for object
  14. my $Self = {};
  15. bless( $Self, $Type );
  16.  
  17. return $Self;
  18. }
  19.  
  20. sub getSwiftApiResult {
  21.  
  22. my ( $Type, %Param ) = @_;
  23.  
  24. my $username = $Param{username};
  25. my $password = $Param{password};
  26. my $function = $Param{function};
  27.  
  28. if($function eq 'getProjectDetails'){
  29. $projectId = returnProjectIdFromName($username, $password, $function);
  30. }elsif($function eq 'getCardListForProjectInput'){
  31. $projectId = returnCardListFromProjectDetail($username, $password,
  32. $function, $projectName);
  33. }elsif($function eq 'addCard'){
  34. $projectId = createCardOnProjectName($username, $password, $function,
  35. $projectName);
  36. }
  37.  
  38. return $projectId;
  39. }
  40.  
  41. sub getHeader {
  42.  
  43. my ( $SoapClient, $username, $password, $function ) = @_;
  44.  
  45. my $serializer = $SoapClient->serializer();
  46. $serializer->register_ns("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse" );
  47. $serializer->register_ns("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "wsu" );
  48. $serializer->envprefix("SOAP-ENV");
  49.  
  50. my $Security = SOAP::Header->name("Security")->prefix("wsse")
  51. ->attr({"SOAP-ENV:mustUnderstand" => 1});
  52.  
  53. my $UsernameToken = SOAP::Header
  54. ->name("UsernameToken" =>
  55. SOAP::Header->value(SOAP::Header->name("Username")->prefix("wsse")
  56. ->value($username)->type(""),
  57. SOAP::Header->name("Password")->prefix("wsse")->value($password)
  58. ->type("")
  59. ->attr({"Type"=>"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"})))
  60. ->prefix("wsse");
  61.  
  62. $Security->value($UsernameToken);
  63.  
  64. return $Security;
  65.  
  66. }
  67.  
  68. sub returnProjectIdFromName {
  69.  
  70. my ( $username, $password ) = @_;
  71.  
  72. my $SoapClient = SOAP::Lite
  73. ->uri('https://login.swift-kanban.com/axis2/services/ProjectService?wsdl')
  74. ->proxy('https://login.swift-kanban.com/axis2/services/ProjectService')
  75. ->autotype(0);
  76.  
  77. my $Security = getHeader($SoapClient, $username, $password);
  78. my $beamlineName = SOAP::Data->name('getProjectDetails')->type("")->attr({"SOAP-ENV"});
  79. my $runName = SOAP::Data->name("userLoginId")->value($username)->type("");
  80. my $xml = $SoapClient->getProject($Security, $beamlineName, $runName);
  81. $projectName = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:projectName'};
  82. $projectId = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:projectId'};
  83. $uniqueId = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:UniqueId'};
  84.  
  85. return $projectId;
  86.  
  87. }
  88.  
  89. sub returnCardListFromProjectDetail {
  90.  
  91. my ($username, $password, $function, $projectName ) = @_;
  92.  
  93. my $SoapClient = SOAP::Lite
  94. ->uri('https://login.swift-kanban.com/axis2/services/MetadataService?wsdl')
  95. ->proxy('https://login.swift-kanban.com/axis2/services/MetadataService')
  96. ->autotype(0);
  97.  
  98. my $Security = getHeader($SoapClient, $username, $password);
  99.  
  100. $projectId = returnProjectIdFromName($username, $password);
  101.  
  102. my $beamlineName = SOAP::Data->name('getCardListForProjectInput')->type("")->attr({"SOAP-ENV"});
  103. my $runName = SOAP::Data->name("projectId")->value($projectId)->type("");
  104. my $runParam = SOAP::Data->name("userLoginId")->value($username)->type("");
  105.  
  106. my $xml = $SoapClient->getCardListForProject($Security, $beamlineName, ($runName,$runParam))->body;
  107. #$projectName = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:projectName'};
  108. #$projectId = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:projectId'};
  109. #$uniqueId = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:UniqueId'};
  110.  
  111. return Dumper($xml);
  112.  
  113. }
  114.  
  115. sub createCardOnProjectName {
  116.  
  117. my ($username, $password, $function, $projectName ) = @_;
  118.  
  119. my $SoapClient = SOAP::Lite
  120. ->uri('https://login.swift-kanban.com/axis2/services/KanbanCardService?wsdl')
  121. ->proxy('https://login.swift-kanban.com/axis2/services/KanbanCardService')
  122. ->autotype(0);
  123.  
  124. my $Security = getHeader($SoapClient, $username, $password);
  125.  
  126. $projectId = returnProjectIdFromName($username, $password);
  127. $cardType = returnProjectIdFromName($username, $password);
  128.  
  129. my $beamlineName = SOAP::Data->name('addCardDetails')->type("")->attr({"SOAP-ENV"})->value({
  130. SOAP::Data->name(projectId => $projectId)->type("")->value('projectId'),
  131. SOAP::Data->name(cardType => $cardType)->type("")->value('projectId'),
  132. SOAP::Data->name(userLoginId => 'tulio.martins@gmail.com'),
  133. SOAP::Data->name('mode')->type(""),
  134. SOAP::Data->name('fields')->type("")->value({
  135. SOAP::Data->name('field')->type("")->attr("name" )->value('teste de criacao'),
  136. SOAP::Data->name('field')->type("")->attr("cardSize")->value('M'),
  137. SOAP::Data->name('field')->type("")->attr("classOfService")->value('Expedite'),
  138. SOAP::Data->name('field')->type("")->attr("Category")->value('PM'),
  139. SOAP::Data->name('field')->type("")->attr( "currentOwner")->value($username)})});
  140.  
  141. my $xml = $SoapClient->addCard($Security, $beamlineName)->body;
  142. #$projectName = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:projectName'};
  143. #$projectId = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:projectId'};
  144. #$uniqueId = $xml->dataof('//getProjectResponse/Projects/Project/')->attr->{'ns:UniqueId'};
  145.  
  146. return Dumper($xml);
  147.  
  148. }
  149. 1;
  150.  
  151. use strict;
  152. use warnings;
  153. use diagnostics;
  154. use SwiftApiFuncions;
  155. use Data::Dumper;
  156.  
  157. my $username = "USUARIO";
  158. my $password = "********";
  159.  
  160. my $index = SwiftApiFuncions->new();
  161.  
  162. my $result = $index->getSwiftApiResult (
  163. username => $username,
  164. password => $password,
  165. function => 'addCard'
  166. );
  167.  
  168. print $result;
Add Comment
Please, Sign In to add comment