myexperiment-rest 0.2.8 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -66,13 +66,17 @@
66
66
 
67
67
  <li><a href="./MyExperimentREST.html">MyExperimentREST</a></li>
68
68
 
69
- <li><a href="./MyExperimentREST/TavernaIOData.html">MyExperimentREST::TavernaIOData</a></li>
69
+ <li><a href="./MyExperimentREST/MyExperimentIOData.html">MyExperimentREST::MyExperimentIOData</a></li>
70
70
 
71
- <li><a href="./MyExperimentREST/TavernaUser.html">MyExperimentREST::TavernaUser</a></li>
71
+ <li><a href="./MyExperimentREST/MyExperimentUser.html">MyExperimentREST::MyExperimentUser</a></li>
72
72
 
73
- <li><a href="./MyExperimentREST/TavernaWorkflow.html">MyExperimentREST::TavernaWorkflow</a></li>
73
+ <li><a href="./MyExperimentREST/MyExperimentWorkflow.html">MyExperimentREST::MyExperimentWorkflow</a></li>
74
74
 
75
- <li><a href="./MyExperimentREST/Workflows.html">MyExperimentREST::Workflows</a></li>
75
+ <li><a href="./MyExperimentREST/Urls.html">MyExperimentREST::Urls</a></li>
76
+
77
+ <li><a href="./MyExperimentREST/User.html">MyExperimentREST::User</a></li>
78
+
79
+ <li><a href="./MyExperimentREST/Workflow.html">MyExperimentREST::Workflow</a></li>
76
80
 
77
81
  </ul>
78
82
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
@@ -90,7 +94,7 @@
90
94
  <p>Konstantinos Karasavvas</p>
91
95
  </td></tr><tr><td class="rdoc-term"><p>Gem Version</p></td>
92
96
  <td>
93
- <p>0.2.8</p>
97
+ <p>0.3.0</p>
94
98
  </td></tr><tr><td class="rdoc-term"><p>Contact</p></td>
95
99
  <td>
96
100
  <p><a href="mailto:kostas.karasavvas@nbic.nl">kostas.karasavvas@nbic.nl</a></p>
@@ -109,12 +113,13 @@ href="http://www.opensource.org/licenses/mit-license">www.opensource.org/license
109
113
 
110
114
  <h2>Features/Problems</h2>
111
115
 
112
- <p>Only a subset of myExperiment workflow data can be currently accessed.</p>
116
+ <p>Only a subset of myExperiment workflow and user data can be currently
117
+ accessed.</p>
113
118
 
114
119
  <h2>Usage</h2>
115
120
 
116
121
  <p>There is an example script inside the <tt>bin</tt> directory that
117
- demonstrates how you can use the library.</p>
122
+ demonstrates how you can use the library: $ get_workflow_data.rb.</p>
118
123
 
119
124
  <h2>Installation</h2>
120
125
 
@@ -1,6 +1,8 @@
1
- Mon, 19 Sep 2011 12:56:22 +0200
1
+ Wed, 28 Sep 2011 12:45:52 +0200
2
2
  LICENSE Tue, 26 Jul 2011 16:45:34 +0200
3
- README Mon, 19 Sep 2011 11:02:31 +0200
4
- lib/myexperiment-rest.rb Tue, 26 Jul 2011 16:45:34 +0200
5
- CHANGES Mon, 19 Sep 2011 11:03:06 +0200
6
- lib/myexperiment-rest/myexperiment_rest.rb Mon, 19 Sep 2011 12:56:14 +0200
3
+ lib/myexperiment-rest/constants.rb Wed, 28 Sep 2011 10:04:55 +0200
4
+ README Wed, 28 Sep 2011 12:41:40 +0200
5
+ lib/myexperiment-rest/user.rb Wed, 28 Sep 2011 12:11:32 +0200
6
+ lib/myexperiment-rest.rb Wed, 28 Sep 2011 12:07:50 +0200
7
+ CHANGES Wed, 28 Sep 2011 12:42:24 +0200
8
+ lib/myexperiment-rest/workflow.rb Wed, 28 Sep 2011 12:32:43 +0200
@@ -29,7 +29,7 @@
29
29
  <p>Konstantinos Karasavvas</p>
30
30
  </td></tr><tr><td class="rdoc-term"><p>Gem Version</p></td>
31
31
  <td>
32
- <p>0.2.8</p>
32
+ <p>0.3.0</p>
33
33
  </td></tr><tr><td class="rdoc-term"><p>Contact</p></td>
34
34
  <td>
35
35
  <p><a href="mailto:kostas.karasavvas@nbic.nl">kostas.karasavvas@nbic.nl</a></p>
@@ -48,12 +48,13 @@ href="http://www.opensource.org/licenses/mit-license">www.opensource.org/license
48
48
 
49
49
  <h2>Features/Problems</h2>
50
50
 
51
- <p>Only a subset of myExperiment workflow data can be currently accessed.</p>
51
+ <p>Only a subset of myExperiment workflow and user data can be currently
52
+ accessed.</p>
52
53
 
53
54
  <h2>Usage</h2>
54
55
 
55
56
  <p>There is an example script inside the <tt>bin</tt> directory that
56
- demonstrates how you can use the library.</p>
57
+ demonstrates how you can use the library: $ get_workflow_data.rb.</p>
57
58
 
58
59
  <h2>Installation</h2>
59
60
 
@@ -87,26 +88,44 @@ demonstrates how you can use the library.</p>
87
88
 
88
89
  <li class="module"><a href="MyExperimentREST.html">MyExperimentREST</a></li>
89
90
 
90
- <li class="class"><a href="MyExperimentREST/TavernaIOData.html">MyExperimentREST::TavernaIOData</a></li>
91
+ <li class="class"><a href="MyExperimentREST/MyExperimentIOData.html">MyExperimentREST::MyExperimentIOData</a></li>
91
92
 
92
- <li class="class"><a href="MyExperimentREST/TavernaUser.html">MyExperimentREST::TavernaUser</a></li>
93
+ <li class="class"><a href="MyExperimentREST/MyExperimentUser.html">MyExperimentREST::MyExperimentUser</a></li>
93
94
 
94
- <li class="class"><a href="MyExperimentREST/TavernaWorkflow.html">MyExperimentREST::TavernaWorkflow</a></li>
95
+ <li class="class"><a href="MyExperimentREST/MyExperimentWorkflow.html">MyExperimentREST::MyExperimentWorkflow</a></li>
95
96
 
96
- <li class="class"><a href="MyExperimentREST/Workflows.html">MyExperimentREST::Workflows</a></li>
97
+ <li class="module"><a href="MyExperimentREST/Urls.html">MyExperimentREST::Urls</a></li>
98
+
99
+ <li class="class"><a href="MyExperimentREST/User.html">MyExperimentREST::User</a></li>
100
+
101
+ <li class="class"><a href="MyExperimentREST/Workflow.html">MyExperimentREST::Workflow</a></li>
97
102
 
98
103
  </ul>
99
104
 
100
105
  <h2 id="methods">Methods</h2>
101
106
  <ul>
102
107
 
103
- <li><a href="MyExperimentREST/TavernaIOData.html#method-c-new">::new &mdash; MyExperimentREST::TavernaIOData</a></li>
108
+ <li><a href="MyExperimentREST/User.html#method-c-from_id">::from_id &mdash; MyExperimentREST::User</a></li>
109
+
110
+ <li><a href="MyExperimentREST/Workflow.html#method-c-from_id_and_version">::from_id_and_version &mdash; MyExperimentREST::Workflow</a></li>
111
+
112
+ <li><a href="MyExperimentREST/User.html#method-c-from_uri">::from_uri &mdash; MyExperimentREST::User</a></li>
113
+
114
+ <li><a href="MyExperimentREST/Workflow.html#method-c-from_uri">::from_uri &mdash; MyExperimentREST::Workflow</a></li>
115
+
116
+ <li><a href="MyExperimentREST/MyExperimentIOData.html#method-c-from_xml">::from_xml &mdash; MyExperimentREST::MyExperimentIOData</a></li>
117
+
118
+ <li><a href="MyExperimentREST.html#method-c-get_myexperiment_data">::get_myexperiment_data &mdash; MyExperimentREST</a></li>
119
+
120
+ <li><a href="MyExperimentREST/MyExperimentUser.html#method-c-new">::new &mdash; MyExperimentREST::MyExperimentUser</a></li>
121
+
122
+ <li><a href="MyExperimentREST/MyExperimentWorkflow.html#method-c-new">::new &mdash; MyExperimentREST::MyExperimentWorkflow</a></li>
104
123
 
105
- <li><a href="MyExperimentREST/TavernaUser.html#method-c-new">::new &mdash; MyExperimentREST::TavernaUser</a></li>
124
+ <li><a href="MyExperimentREST/MyExperimentIOData.html#method-c-new">::new &mdash; MyExperimentREST::MyExperimentIOData</a></li>
106
125
 
107
- <li><a href="MyExperimentREST/TavernaWorkflow.html#method-c-new">::new &mdash; MyExperimentREST::TavernaWorkflow</a></li>
126
+ <li><a href="MyExperimentREST/MyExperimentUser.html#method-c-parse">::parse &mdash; MyExperimentREST::MyExperimentUser</a></li>
108
127
 
109
- <li><a href="MyExperimentREST/Workflows.html#method-i-read">#read &mdash; MyExperimentREST::Workflows</a></li>
128
+ <li><a href="MyExperimentREST/MyExperimentWorkflow.html#method-c-parse">::parse &mdash; MyExperimentREST::MyExperimentWorkflow</a></li>
110
129
 
111
130
  </ul>
112
131
 
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
8
+
9
+ <title>File: constants.rb [myexperiment-rest Docs]</title>
10
+
11
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet" />
12
+
13
+ <script src="../../js/jquery.js" type="text/javascript"
14
+ charset="utf-8"></script>
15
+ <script src="../../js/thickbox-compressed.js" type="text/javascript"
16
+ charset="utf-8"></script>
17
+ <script src="../../js/quicksearch.js" type="text/javascript"
18
+ charset="utf-8"></script>
19
+ <script src="../../js/darkfish.js" type="text/javascript"
20
+ charset="utf-8"></script>
21
+ </head>
22
+
23
+ <body class="file file-popup">
24
+ <div id="metadata">
25
+ <dl>
26
+ <dt class="modified-date">Last Modified</dt>
27
+ <dd class="modified-date">Wed Sep 28 10:04:55 +0200 2011</dd>
28
+
29
+
30
+ <dt class="requires">Requires</dt>
31
+ <dd class="requires">
32
+ <ul>
33
+
34
+ </ul>
35
+ </dd>
36
+
37
+
38
+
39
+ </dl>
40
+ </div>
41
+
42
+ <div id="documentation">
43
+
44
+ <div class="description">
45
+ <h2>Description</h2>
46
+
47
+ </div>
48
+
49
+ </div>
50
+ </body>
51
+ </html>
52
+
@@ -6,7 +6,7 @@
6
6
  <head>
7
7
  <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
8
8
 
9
- <title>File: myexperiment_rest.rb [myexperiment-rest Docs]</title>
9
+ <title>File: user.rb [myexperiment-rest Docs]</title>
10
10
 
11
11
  <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet" />
12
12
 
@@ -24,19 +24,13 @@
24
24
  <div id="metadata">
25
25
  <dl>
26
26
  <dt class="modified-date">Last Modified</dt>
27
- <dd class="modified-date">Mon Sep 19 12:56:14 +0200 2011</dd>
27
+ <dd class="modified-date">Wed Sep 28 12:11:32 +0200 2011</dd>
28
28
 
29
29
 
30
30
  <dt class="requires">Requires</dt>
31
31
  <dd class="requires">
32
32
  <ul>
33
33
 
34
- <li>rubygems</li>
35
-
36
- <li>rest_client</li>
37
-
38
- <li>open-uri</li>
39
-
40
34
  <li>libxml</li>
41
35
 
42
36
  </ul>
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
8
+
9
+ <title>File: workflow.rb [myexperiment-rest Docs]</title>
10
+
11
+ <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet" />
12
+
13
+ <script src="../../js/jquery.js" type="text/javascript"
14
+ charset="utf-8"></script>
15
+ <script src="../../js/thickbox-compressed.js" type="text/javascript"
16
+ charset="utf-8"></script>
17
+ <script src="../../js/quicksearch.js" type="text/javascript"
18
+ charset="utf-8"></script>
19
+ <script src="../../js/darkfish.js" type="text/javascript"
20
+ charset="utf-8"></script>
21
+ </head>
22
+
23
+ <body class="file file-popup">
24
+ <div id="metadata">
25
+ <dl>
26
+ <dt class="modified-date">Last Modified</dt>
27
+ <dd class="modified-date">Wed Sep 28 12:32:43 +0200 2011</dd>
28
+
29
+
30
+ <dt class="requires">Requires</dt>
31
+ <dd class="requires">
32
+ <ul>
33
+
34
+ <li>libxml</li>
35
+
36
+ </ul>
37
+ </dd>
38
+
39
+
40
+
41
+ </dl>
42
+ </div>
43
+
44
+ <div id="documentation">
45
+
46
+ <div class="description">
47
+ <h2>Description</h2>
48
+
49
+ </div>
50
+
51
+ </div>
52
+ </body>
53
+ </html>
54
+
@@ -24,14 +24,22 @@
24
24
  <div id="metadata">
25
25
  <dl>
26
26
  <dt class="modified-date">Last Modified</dt>
27
- <dd class="modified-date">Tue Jul 26 16:45:34 +0200 2011</dd>
27
+ <dd class="modified-date">Wed Sep 28 12:07:50 +0200 2011</dd>
28
28
 
29
29
 
30
30
  <dt class="requires">Requires</dt>
31
31
  <dd class="requires">
32
32
  <ul>
33
33
 
34
- <li>myexperiment-rest/myexperiment_rest.rb</li>
34
+ <li>rubygems</li>
35
+
36
+ <li>rest_client</li>
37
+
38
+ <li>myexperiment-rest/constants</li>
39
+
40
+ <li>myexperiment-rest/workflow</li>
41
+
42
+ <li>myexperiment-rest/user</li>
35
43
 
36
44
  </ul>
37
45
  </dd>
@@ -1,5 +1,46 @@
1
- require 'myexperiment-rest/myexperiment_rest.rb'
1
+ require 'rubygems'
2
+ require 'rest_client'
3
+
4
+ require 'myexperiment-rest/constants'
5
+ require 'myexperiment-rest/workflow'
6
+ require 'myexperiment-rest/user'
7
+
2
8
 
3
9
  module MyExperimentREST
4
10
 
11
+
12
+ # Get information from myExperiment using the REST API. Resources supported currently
13
+ # are +WORKFLOW_URL+"+ and +USER_URL+.
14
+ def self.get_myexperiment_data(resource_url, params)
15
+ case resource_url
16
+
17
+ when Urls::WORKFLOW_URL
18
+ begin
19
+ # Get workflow resource information -- if version is empty it returns the current version
20
+ response = RestClient.get("#{Urls::MYEXPERIMENT_URL}/#{Urls::WORKFLOW_URL}",
21
+ {:params => {'id' => "#{params[:id]}",
22
+ 'version' => "#{params[:version]}",
23
+ 'elements' => 'title,description,content-uri,components,uploader'} } )
24
+ response
25
+ rescue Exception => e
26
+ raise "REST call to acquire workflow resource failed!\n" + e
27
+ end
28
+
29
+ when Urls::USER_URL
30
+ begin
31
+ # Get user resource information
32
+ response = RestClient.get("#{Urls::MYEXPERIMENT_URL}/#{Urls::USER_URL}",
33
+ {:params => {'id' => "#{params[:id]}" } } )
34
+ response
35
+ rescue Exception => e
36
+ raise "REST call to acquire user resource failed!\n" + e
37
+ end
38
+
39
+ else
40
+ raise "This is not a supported resource type!\n"
41
+ end
42
+
43
+ end
44
+
45
+
5
46
  end
@@ -0,0 +1,11 @@
1
+
2
+ module MyExperimentREST
3
+
4
+ module Urls
5
+ # URL constants
6
+ MYEXPERIMENT_URL = "http://www.myexperiment.org"
7
+ WORKFLOW_URL = "workflow.xml"
8
+ USER_URL = "user.xml"
9
+ end
10
+
11
+ end
@@ -0,0 +1,83 @@
1
+ require 'libxml'
2
+
3
+ module MyExperimentREST
4
+
5
+ #
6
+ # Connects to myExperiment REST API and creates a _MyExperimentUser_ object.
7
+ #
8
+ class User
9
+
10
+ # Returns a _MyExperimentUser_ object given a URI of the user in the repository as a String.
11
+ def self.from_uri(uri)
12
+
13
+ user_id = ''
14
+
15
+ # Get user id - will match both user/74 and users.xml?id=74
16
+ uri_id = uri.match(/user.*[\/?](id=)?(\d+)/)
17
+ if uri_id != nil
18
+ user_id = uri_id[2]
19
+ else
20
+ raise "Could not match user id."
21
+ end
22
+
23
+ # Get user resource information
24
+ xml = MyExperimentREST.get_myexperiment_data(Urls::USER_URL, :id => user_id)
25
+
26
+ MyExperimentUser.parse(xml)
27
+ end
28
+
29
+
30
+ # Returns a _MyExperimentUser_ object given a myExperiment id for that user.
31
+ def self.from_id(user_id)
32
+
33
+ # Get user resource information
34
+ xml = MyExperimentREST.get_myexperiment_data(Urls::USER_URL, :id => user_id)
35
+
36
+ MyExperimentUser.parse(xml)
37
+ end
38
+
39
+ end # class User
40
+
41
+
42
+
43
+ #
44
+ # Contains information about a user. All basic information is available but not
45
+ # some of the more advanced like all user's friends or workflow's.
46
+ #
47
+ class MyExperimentUser
48
+ attr_reader(:id, :created_at, :name, :description, :email, :avatar_uri, :city, :country, :website)
49
+
50
+ def initialize(attributes)
51
+ @id = attributes[:id]
52
+ @created_at = attributes[:created_at]
53
+ @name = attributes[:name]
54
+ @description = attributes[:description]
55
+ @email = attributes[:email]
56
+ @avatar_uri = attributes[:avatar_uri]
57
+ @city = attributes[:city]
58
+ @country = attributes[:country]
59
+ @website = attributes[:website]
60
+ end
61
+
62
+
63
+ # Acquire data from XML response and instantiate a _MyExperimentWorkflow_ object
64
+ def self.parse(xml)
65
+
66
+ doc = LibXML::XML::Document.string(xml)
67
+
68
+ new(:id => doc.find_first("/user/id").content,
69
+ :created_at => doc.find_first("/user/created-at").content,
70
+ :name => doc.find_first("/user/name").content,
71
+ :description => doc.find_first("/user/description").content,
72
+ :email => doc.find_first("/user/email").content,
73
+ :avatar_uri => doc.find_first("/user/avatar").attributes[:uri],
74
+ :city => doc.find_first("/user/city").content,
75
+ :country => doc.find_first("/user/country").content,
76
+ :website => doc.find_first("/user/website").content)
77
+
78
+ end
79
+
80
+ end # class MyexperimentUser
81
+
82
+
83
+ end # module MyExperimentREST