cancel
Showing results for 
Search instead for 
Did you mean: 

Push a readme.md to confluence using confluence APIs

Highlighted
Occasional Contributor

Push a readme.md to confluence using confluence APIs

Hello,

 

So I'm trying to push readme to confluence, except that Confluence APIs accepts the body as json, but my readme is a multiline text.. In confluence I have a waiting plugin to convert the text into a well-formed readme Smiley Happy 
So I'm trying to convert a multiline text into a single line so that I can automate pushing all readme to confluence.

 

One of my problem now is to locate the carriage return , and convert it into "\\n" but I'm new to groovy and I don't know how to do that.
One of the future struggle is going to be : how to parse through directories to locate readme.

many thanks

pizzaTime

15 REPLIES 15
Highlighted
Community Hero

Re: Push a readme.md to confluence using confluence APIs

Groovy supports multi line text

 

def multiLine = '''line1 text
next line
and one more line'''

//Show as is
log.info multiLine

//Remove new lines / carriage returns
def newString = multiLine.replaceAll('\n', '').replaceAll('\r', '')

//See the diff with multiLine
log.info newString


Regards,
Rao.
Highlighted
Occasional Contributor

Re: Push a readme.md to confluence using confluence APIs

Yes, but as I am using confluence API to send back : so I have this body to fill
Especially the value in which I am replacing ${Properties#body} by the readme.md text

{
   "id" : "${Properties#pageId}",
   "type" : "page",
   "status" : "current",
   "title" : "Markdown test",
   "body" : {
     "storage" : {
         "value" : "<ac:structured-macro ac:name=\"markdown\" ac:schema-version=\"1\" ac:macro-id=\"1234\"><ac:plain-text-body><![CDATA[${Properties#body}]]></ac:plain-text-body></ac:structured-macro>",
         "representation" : "storage",
         "_expandable" : {
            "content" : "/rest/api/content/${Properties#pageId}"
         }
     }
   },
   "version":{"number":${Properties#pageVersion}}
}

To be more precise I have this readme: 

##  Title
text
## Another Title
another text

That I want to convert into :

## Title \n text \n ## Another Title \n another text

So that it can be supplied in the body in my request.

 

Best regards,

 

pizzaTime

Highlighted
Community Hero

Re: Push a readme.md to confluence using confluence APIs

Ok, what is happening with above request?


Regards,
Rao.
Highlighted
Community Leader

Re: Push a readme.md to confluence using confluence APIs

@pizzaTime , could you please attach any screenshot of error for better understanding of problem.Smiley Happy


Click "Accept as Solution" if my answer has helped, and remember to give "kudos" Smiley Happy

Thanks and Regards,
Himanshu Tayal
Highlighted
Occasional Contributor

Re: Push a readme.md to confluence using confluence APIs

Let's say this is the readme I want to update :

## Test description 
 This test verifiy : 
 - lorem text

The error is that what the API expects from a readme is :

## Test description \n This test verifiy :\n - lorem text

So from my groovy script I tried to put it in the request.

{
   "id" : "${Properties#pageId}",
   "type" : "page",
   "status" : "current",
   "title" : "Markdown test",
   "body" : {
     "storage" : {
         "value" : "<ac:structured-macro ac:name=\"markdown\" ac:schema-version=\"1\" ac:macro-id=\"1234\"><ac:plain-text-body><![CDATA[${Properties#body}]]></ac:plain-text-body></ac:structured-macro>",
         "representation" : "storage",
         "_expandable" : {
            "content" : "/rest/api/content/${Properties#pageId}"
         }
     }
   },
   "version":{"number":${Properties#pageVersion}}
}

With :

def carriageReturn= '\\n '
fileContents = fileContents.replaceAll('\n',carriageReturn).replaceAll(' \r',"")

Except '\\n' is interpreted as the a carriage return when i want it to be litteraly '\n'

Highlighted
Community Hero

Re: Push a readme.md to confluence using confluence APIs

Did it work when you replace with '\\n'?


Regards,
Rao.
Highlighted
Occasional Contributor

Re: Push a readme.md to confluence using confluence APIs

Nope, and I tried different things

Highlighted
Community Leader

Re: Push a readme.md to confluence using confluence APIs

@pizzaTime  : Is your problem resolved?

 


Click "Accept as Solution" if my answer has helped, and remember to give "kudos" Smiley Happy

Thanks and Regards,
Himanshu Tayal
Highlighted
Occasional Contributor

Re: Push a readme.md to confluence using confluence APIs

In the request "raw form" : 
I see the body on one line, but when I copy-paste it, it is multi-lined.
So my problem is that I want literally the characters "\n" and not it interpreted as 'newline'.