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 &lt;&lt;-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 =&gt; "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>