myexperiment-rest 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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