RefactorMyCode.com API uses XML following REST principles.
The following examples use curl
but could be used with any HTTP client. It's just XML over HTTP!
Another good way to explore the API is to add .xml
at then end of the URL of a page you wanna use.
Browsing codes
Get most recent codes
1
curl -H 'Accept: application/xml' -H 'Content-Type: text/xml' -X GET http://www.refactormycode.com/codes/recent.xml
Get most recent Ruby codes
1
curl -H 'Accept: application/xml' -H 'Content-Type: text/xml' -X GET http://www.refactormycode.com/codes/recent/ruby.xml
Get most popular codes
1
curl -H 'Accept: application/xml' -H 'Content-Type: text/xml' -X GET http://www.refactormycode.com/codes/popular.xml
Get Ruby codes tagged with speed
1
curl -H 'Accept: application/xml' -H 'Content-Type: text/xml' -X GET http://www.refactormycode.com/tags/speed/ruby.xml
You can combine the language part with most calls.
Sample response from those calls:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
<?xml version="1.0" encoding="UTF-8"?> <codes type="array"> <code> <code>rake db:migrate</code> <comment>Yeah baby</comment> <created-at type="datetime">2007-10-28T22:05:59-04:00</created-at> <id type="integer">20</id> <language>Ruby</language> <permalink>rails-2-0</permalink> <refactors-count type="integer">2</refactors-count> <title>RaIls 2.0</title> <trackback-url></trackback-url> <updated-at type="datetime">2007-10-30T21:25:03-04:00</updated-at> <user-id type="integer">1</user-id> <user> <id type="integer">1</id> <identity-url>http://macournoyer.myopenid.com/</identity-url> <name>macournoyer</name> <rating type="float">0.0</rating> <refactors-count type="integer">30</refactors-count> <website>macournoyer.wordpress.com</website> </user> </code> <code> <code>tab() # new tab from current dir { osascript -e " tell application \"iTerm\" tell the first terminal launch session \"Default Session\" tell the last session write text \"cd $(pwd)\" end tell end tell end tell" }</code> <comment>Here's a small script I wrote to open a new tab in iTerm in the current directory. Know any better way of doing this ? Btw, also introducing a new language: Bash :) Hope you like it!</comment> <created-at type="datetime">2007-10-04T19:48:50-04:00</created-at> <id type="integer">19</id> <language>Bash</language> <permalink>open-a-new-tab-in-current-directory-from-iterm</permalink> <refactors-count type="integer">9</refactors-count> <title>Open a new tab in current directory from iTerm</title> <trackback-url></trackback-url> <updated-at type="datetime">2007-10-26T23:28:50-04:00</updated-at> <user-id type="integer">1</user-id> <user> <id type="integer">1</id> <identity-url>http://macournoyer.myopenid.com/</identity-url> <name>macournoyer</name> <rating type="float">0.0</rating> <refactors-count type="integer">30</refactors-count> <website>macournoyer.wordpress.com</website> </user> </code> ... </codes>
Browsing refactorings
Get most recent refactorings
1
curl -H 'Accept: application/xml' -H 'Content-Type: text/xml' -X GET http://www.refactormycode.com/refactorings/recent.xml
Same structure as codes applies.
The response should look something like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
<?xml version="1.0" encoding="UTF-8"?> <refactors type="array"> <refactor> <code>cool <<-EOS thas has some cool c0de EOS puts cool</code> <code-id type="integer">20</code-id> <comment>cool!</comment> <created-at type="datetime">2007-10-30T21:25:02-04:00</created-at> <id type="integer">81</id> <language>Ruby</language> <rating type="integer">0</rating> <ratings-count type="integer">0</ratings-count> <title></title> <user-id type="integer"></user-id> <user-name>bobby</user-name> <user-website></user-website> </refactor> <refactor> <code>kjhb</code> <code-id type="integer">20</code-id> <comment>yeah</comment> <created-at type="datetime">2007-10-28T22:06:09-04:00</created-at> <id type="integer">80</id> <language>Ruby</language> <rating type="integer">0</rating> <ratings-count type="integer">0</ratings-count> <title></title> <user-id type="integer">1</user-id> <user-name>macournoyer</user-name> <user-website>macournoyer.wordpress.com</user-website> <user> <id type="integer">1</id> <identity-url>http://macournoyer.myopenid.com/</identity-url> <name>macournoyer</name> <rating type="float">0.0</rating> <refactors-count type="integer">30</refactors-count> <website>macournoyer.wordpress.com</website> </user> </refactor> </refactors>
Code submission information
Get the information about one code submission
1
curl -H 'Accept: application/xml' -H 'Content-Type: text/xml' -X GET http://www.refactormycode.com/codes/1-typical-restful-scaffold-controller.xml
The response should look something like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
<?xml version="1.0" encoding="UTF-8"?> <code> <code>def create @code = Code.new(params[:code]) if @code.save flash[:notice] = 'Code was successfully created.' redirect_to code_url(@code) else render :action => "new" end end </code> <comment>What can I do better w/ this code ? Please help!</comment> <created-at type="datetime">2007-08-30T00:40:35-04:00</created-at> <id type="integer">1</id> <language>Ruby</language> <permalink>controller-create-method</permalink> <refactors-count type="integer">2</refactors-count> <title>Controller create method</title> <trackback-url></trackback-url> <updated-at type="datetime">2007-08-30T00:40:35-04:00</updated-at> <user-id type="integer">1</user-id> <refactors type="array"> <refactor> <code>def create; end</code> <code-id type="integer">1</code-id> <comment></comment> <created-at type="datetime">2007-08-30T01:34:53-04:00</created-at> <id type="integer">7</id> <language>ruby</language> <rating type="integer">0</rating> <ratings-count type="integer">0</ratings-count> <title></title> <user-id type="integer">1</user-id> <user-name>macournoyer</user-name> <user-website>macournoyer.wordpress.com</user-website> </refactor> <refactor> <code>def create wow end</code> <code-id type="integer">1</code-id> <comment>Ahah funnY! Try this instead!</comment> <created-at type="datetime">2007-08-31T21:06:10-04:00</created-at> <id type="integer">8</id> <language>ruby</language> <rating type="integer">0</rating> <ratings-count type="integer">0</ratings-count> <title></title> <user-id type="integer">1</user-id> <user-name>macournoyer</user-name> <user-website>macournoyer.wordpress.com</user-website> </refactor> </refactors> </code>