ted_api 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +56 -0
  5. data/Rakefile +8 -0
  6. data/lib/faraday/response/raise_ted_api_error.rb +43 -0
  7. data/lib/ted_api.rb +20 -0
  8. data/lib/ted_api/client.rb +39 -0
  9. data/lib/ted_api/client/countries.rb +18 -0
  10. data/lib/ted_api/client/events.rb +18 -0
  11. data/lib/ted_api/client/languages.rb +18 -0
  12. data/lib/ted_api/client/quotes.rb +18 -0
  13. data/lib/ted_api/client/rating_words.rb +18 -0
  14. data/lib/ted_api/client/speakers.rb +18 -0
  15. data/lib/ted_api/client/tags.rb +18 -0
  16. data/lib/ted_api/client/talks.rb +26 -0
  17. data/lib/ted_api/client/themes.rb +18 -0
  18. data/lib/ted_api/configuration.rb +54 -0
  19. data/lib/ted_api/connection.rb +30 -0
  20. data/lib/ted_api/error.rb +34 -0
  21. data/lib/ted_api/request.rb +34 -0
  22. data/lib/ted_api/version.rb +3 -0
  23. data/spec/faraday/response_spec.rb +35 -0
  24. data/spec/fixtures/countries.json +1 -0
  25. data/spec/fixtures/countries.xml +109 -0
  26. data/spec/fixtures/country.json +1 -0
  27. data/spec/fixtures/country.xml +8 -0
  28. data/spec/fixtures/event.json +1 -0
  29. data/spec/fixtures/event.xml +12 -0
  30. data/spec/fixtures/events.json +1 -0
  31. data/spec/fixtures/events.xml +189 -0
  32. data/spec/fixtures/language.json +1 -0
  33. data/spec/fixtures/language.xml +8 -0
  34. data/spec/fixtures/languages.json +1 -0
  35. data/spec/fixtures/languages.xml +106 -0
  36. data/spec/fixtures/quote.json +1 -0
  37. data/spec/fixtures/quote.xml +14 -0
  38. data/spec/fixtures/quotes.json +2 -0
  39. data/spec/fixtures/quotes.xml +230 -0
  40. data/spec/fixtures/rating_word.json +1 -0
  41. data/spec/fixtures/rating_word.xml +7 -0
  42. data/spec/fixtures/rating_words.json +1 -0
  43. data/spec/fixtures/rating_words.xml +65 -0
  44. data/spec/fixtures/speaker.json +1 -0
  45. data/spec/fixtures/speaker.xml +16 -0
  46. data/spec/fixtures/speakers.json +1 -0
  47. data/spec/fixtures/speakers.xml +269 -0
  48. data/spec/fixtures/speakers_by_talk.json +1 -0
  49. data/spec/fixtures/subtitles.json +2 -0
  50. data/spec/fixtures/tag.json +1 -0
  51. data/spec/fixtures/tag.xml +11 -0
  52. data/spec/fixtures/tags.json +1 -0
  53. data/spec/fixtures/tags.xml +169 -0
  54. data/spec/fixtures/talk.json +1 -0
  55. data/spec/fixtures/talk.xml +302 -0
  56. data/spec/fixtures/talks.json +1 -0
  57. data/spec/fixtures/talks.xml +249 -0
  58. data/spec/fixtures/theme.json +1 -0
  59. data/spec/fixtures/theme.xml +19 -0
  60. data/spec/fixtures/themes.json +1 -0
  61. data/spec/fixtures/themes.xml +294 -0
  62. data/spec/spec_helper.rb +38 -0
  63. data/spec/ted_api/client/countries_spec.rb +46 -0
  64. data/spec/ted_api/client/events_spec.rb +46 -0
  65. data/spec/ted_api/client/languages_spec.rb +46 -0
  66. data/spec/ted_api/client/quotes_spec.rb +46 -0
  67. data/spec/ted_api/client/rating_words_spec.rb +46 -0
  68. data/spec/ted_api/client/speakers_spec.rb +46 -0
  69. data/spec/ted_api/client/tags_spec.rb +46 -0
  70. data/spec/ted_api/client/talks_spec.rb +78 -0
  71. data/spec/ted_api/client/themes_spec.rb +46 -0
  72. data/spec/ted_api/client_spec.rb +26 -0
  73. data/spec/ted_api_spec.rb +21 -0
  74. data/ted_api.gemspec +33 -0
  75. metadata +347 -0
@@ -0,0 +1,30 @@
1
+ require 'faraday_middleware'
2
+ require 'faraday/response/raise_ted_api_error'
3
+
4
+ module TedApi
5
+ module Connection
6
+ private
7
+
8
+ def connection(raw=false, force_urlencoded=false)
9
+ url = "#{TedApi.api_endpoint}#{TedApi.api_version}"
10
+
11
+ options = {
12
+ url: url
13
+ }
14
+
15
+ connection = Faraday.new(options) do |builder|
16
+ builder.use Faraday::Response::RaiseTedApiError
17
+ unless raw
18
+ builder.use FaradayMiddleware::Mashify
19
+ if response_format == 'json'
20
+ builder.use FaradayMiddleware::ParseJson
21
+ elsif response_format == 'xml'
22
+ builder.use FaradayMiddleware::ParseXml
23
+ end
24
+ end
25
+ builder.adapter *adapter
26
+ end
27
+ connection
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ module TedApi
2
+ # Custom error class for rescuing from all Ted errors
3
+ class Error < StandardError; end
4
+
5
+ # Raised when Ted returns a 400 HTTP status code
6
+ class BadRequest < Error; end
7
+
8
+ # Raised when Ted returns a 401 HTTP status code
9
+ class Unauthorized < Error; end
10
+
11
+ # Raised when Ted returns a 403 HTTP status code
12
+ class Forbidden < Error; end
13
+
14
+ # Raised when Ted returns a 404 HTTP status code
15
+ class NotFound < Error; end
16
+
17
+ # Raised when Ted returns a 406 HTTP status code
18
+ class NotAcceptable < Error; end
19
+
20
+ # Raised when Ted returns a 422 HTTP status code
21
+ class UnprocessableEntity < Error; end
22
+
23
+ # Raised when Ted returns a 500 HTTP status code
24
+ class InternalServerError < Error; end
25
+
26
+ # Raised when Ted returns a 501 HTTP status code
27
+ class NotImplemented < Error; end
28
+
29
+ # Raised when Ted returns a 502 HTTP status code
30
+ class BadGateway < Error; end
31
+
32
+ # Raised when Ted returns a 503 HTTP status code
33
+ class ServiceUnavailable < Error; end
34
+ end
@@ -0,0 +1,34 @@
1
+ require 'multi_json'
2
+ require 'multi_xml'
3
+
4
+ module TedApi
5
+ module Request
6
+ def get(path, options={}, raw=false, force_urlencoded=false)
7
+ request(:get, path, options, raw, force_urlencoded)
8
+ end
9
+
10
+ private
11
+
12
+ def request(method, path, options, raw, force_urlencoded)
13
+ response = connection(raw, force_urlencoded).send(method) do |request|
14
+ # puts '>>>>>>>>>>>>>>>>>>'
15
+ path = "#{path}.#{response_format}"
16
+ options.merge!('api-key' => api_key)
17
+ # puts "path: #{path}"
18
+ # puts "options: #{options}"
19
+ request.url(path, options)
20
+ end
21
+
22
+ if raw
23
+ response
24
+ else
25
+ if response_format == 'json'
26
+ response.body
27
+ elsif response_format == 'xml'
28
+ response.body.response
29
+ end
30
+ end
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,3 @@
1
+ module TedApi
2
+ VERSION = '0.1'
3
+ end
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Faraday::Response do
5
+ before do
6
+ @client = TedApi::Client.new(api_key: 'foo')
7
+ end
8
+
9
+ {
10
+ 400 => TedApi::BadRequest,
11
+ 401 => TedApi::Unauthorized,
12
+ 403 => TedApi::Forbidden,
13
+ 404 => TedApi::NotFound,
14
+ 406 => TedApi::NotAcceptable,
15
+ 422 => TedApi::UnprocessableEntity,
16
+ 500 => TedApi::InternalServerError,
17
+ 501 => TedApi::NotImplemented,
18
+ 502 => TedApi::BadGateway,
19
+ 503 => TedApi::ServiceUnavailable,
20
+ }.each do |status, exception|
21
+ context "when HTTP status is #{status}" do
22
+
23
+ before do
24
+ stub_get('talks.json?api-key=foo').
25
+ to_return(:status => status)
26
+ end
27
+
28
+ it "should raise #{exception.name} error" do
29
+ lambda do
30
+ @client.talks
31
+ end.should raise_error(exception)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1 @@
1
+ {"states":[{"state":{"id":1,"name":"Afghanistan","code":"AF"}},{"state":{"id":2,"name":"Netherlands","code":"NL"}},{"state":{"id":3,"name":"Netherlands Antilles","code":"AN"}},{"state":{"id":4,"name":"Albania","code":"AL"}},{"state":{"id":5,"name":"Algeria","code":"DZ"}},{"state":{"id":6,"name":"American Samoa","code":"AS"}},{"state":{"id":7,"name":"Andorra","code":"AD"}},{"state":{"id":8,"name":"Angola","code":"AO"}},{"state":{"id":9,"name":"Anguilla","code":"AI"}},{"state":{"id":10,"name":"Antigua and Barbuda","code":"AG"}},{"state":{"id":11,"name":"United Arab Emirates","code":"AE"}},{"state":{"id":12,"name":"Argentina","code":"AR"}},{"state":{"id":13,"name":"Armenia","code":"AM"}},{"state":{"id":14,"name":"Aruba","code":"AW"}},{"state":{"id":15,"name":"Australia","code":"AU"}},{"state":{"id":16,"name":"Azerbaijan","code":"AZ"}},{"state":{"id":17,"name":"Bahamas","code":"BS"}},{"state":{"id":18,"name":"Bahrain","code":"BH"}},{"state":{"id":19,"name":"Bangladesh","code":"BD"}},{"state":{"id":20,"name":"Barbados","code":"BB"}}],"counts":{"this":20,"total":248}}
@@ -0,0 +1,109 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <response>
3
+ <states>
4
+ <state>
5
+ <id>1</id>
6
+ <name>Afghanistan</name>
7
+ <code>AF</code>
8
+ </state>
9
+ <state>
10
+ <id>2</id>
11
+ <name>Netherlands</name>
12
+ <code>NL</code>
13
+ </state>
14
+ <state>
15
+ <id>3</id>
16
+ <name>Netherlands Antilles</name>
17
+ <code>AN</code>
18
+ </state>
19
+ <state>
20
+ <id>4</id>
21
+ <name>Albania</name>
22
+ <code>AL</code>
23
+ </state>
24
+ <state>
25
+ <id>5</id>
26
+ <name>Algeria</name>
27
+ <code>DZ</code>
28
+ </state>
29
+ <state>
30
+ <id>6</id>
31
+ <name>American Samoa</name>
32
+ <code>AS</code>
33
+ </state>
34
+ <state>
35
+ <id>7</id>
36
+ <name>Andorra</name>
37
+ <code>AD</code>
38
+ </state>
39
+ <state>
40
+ <id>8</id>
41
+ <name>Angola</name>
42
+ <code>AO</code>
43
+ </state>
44
+ <state>
45
+ <id>9</id>
46
+ <name>Anguilla</name>
47
+ <code>AI</code>
48
+ </state>
49
+ <state>
50
+ <id>10</id>
51
+ <name>Antigua and Barbuda</name>
52
+ <code>AG</code>
53
+ </state>
54
+ <state>
55
+ <id>11</id>
56
+ <name>United Arab Emirates</name>
57
+ <code>AE</code>
58
+ </state>
59
+ <state>
60
+ <id>12</id>
61
+ <name>Argentina</name>
62
+ <code>AR</code>
63
+ </state>
64
+ <state>
65
+ <id>13</id>
66
+ <name>Armenia</name>
67
+ <code>AM</code>
68
+ </state>
69
+ <state>
70
+ <id>14</id>
71
+ <name>Aruba</name>
72
+ <code>AW</code>
73
+ </state>
74
+ <state>
75
+ <id>15</id>
76
+ <name>Australia</name>
77
+ <code>AU</code>
78
+ </state>
79
+ <state>
80
+ <id>16</id>
81
+ <name>Azerbaijan</name>
82
+ <code>AZ</code>
83
+ </state>
84
+ <state>
85
+ <id>17</id>
86
+ <name>Bahamas</name>
87
+ <code>BS</code>
88
+ </state>
89
+ <state>
90
+ <id>18</id>
91
+ <name>Bahrain</name>
92
+ <code>BH</code>
93
+ </state>
94
+ <state>
95
+ <id>19</id>
96
+ <name>Bangladesh</name>
97
+ <code>BD</code>
98
+ </state>
99
+ <state>
100
+ <id>20</id>
101
+ <name>Barbados</name>
102
+ <code>BB</code>
103
+ </state>
104
+ </states>
105
+ <counts>
106
+ <this>20</this>
107
+ <total>248</total>
108
+ </counts>
109
+ </response>
@@ -0,0 +1 @@
1
+ {"state":{"id":1,"name":"Afghanistan","code":"AF"}}
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <response>
3
+ <state>
4
+ <id>1</id>
5
+ <name>Afghanistan</name>
6
+ <code>AF</code>
7
+ </state>
8
+ </response>
@@ -0,0 +1 @@
1
+ {"event":{"id":1,"name":"TED2008","description":"","header_text":"","slug":"2008","url":"","starts_at":"2008-02-27 00:00:00"}}
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <response>
3
+ <event>
4
+ <id>1</id>
5
+ <name>TED2008</name>
6
+ <description></description>
7
+ <header_text></header_text>
8
+ <slug>2008</slug>
9
+ <url></url>
10
+ <starts_at>2008-02-27 00:00:00</starts_at>
11
+ </event>
12
+ </response>
@@ -0,0 +1 @@
1
+ {"events":[{"event":{"id":1,"name":"TED2008","description":"","header_text":"","slug":"2008","url":"","starts_at":"2008-02-27 00:00:00"}},{"event":{"id":2,"name":"TED2007","description":"","header_text":"","slug":"2007","url":"","starts_at":"2007-03-07 00:00:00"}},{"event":{"id":3,"name":"TED2006","description":"","header_text":"","slug":"2006","url":"","starts_at":"2006-02-22 00:00:00"}},{"event":{"id":4,"name":"TED2005","description":"","header_text":"","slug":"2005","url":"","starts_at":"2005-02-23 00:00:00"}},{"event":{"id":5,"name":"TED2004","description":"","header_text":"","slug":"2004","url":"","starts_at":"2004-02-25 00:00:00"}},{"event":{"id":6,"name":"TED2003","description":"","header_text":"","slug":"2003","url":"","starts_at":"2003-05-13 00:00:00"}},{"event":{"id":7,"name":"TED2002","description":"","header_text":"","slug":"2002","url":"","starts_at":"2002-02-20 00:00:00"}},{"event":{"id":8,"name":"TEDGlobal 2005","description":"","header_text":"","slug":"tg2005","url":"","starts_at":"2005-07-12 00:00:00"}},{"event":{"id":9,"name":"TEDSalon 2006","description":"","header_text":"","slug":"tedsalon2006","url":"","starts_at":"2006-12-14 00:00:00"}},{"event":{"id":10,"name":"TEDGlobal 2007","description":"","header_text":"","slug":"tg2007","url":"","starts_at":"2007-06-04 00:00:00"}},{"event":{"id":12,"name":"DLD 2007","description":"","header_text":"DLD (Digital Life Design), held annually in Munich, covers digital innovation, media and design. <a href=\"http:\/\/www.dld-conference.com\/\" target=\"_blank\">Learn more &gt;&gt;<\/a>","slug":"dld_2007","url":"http:\/\/www.dld-conference.com\/","starts_at":"2009-12-23 17:16:00"}},{"event":{"id":13,"name":"LIFT 2007","description":"","header_text":"The LIFT Conference, held in Geneva, explores the impact of technology on society.&nbsp;<a href=\"http:\/\/www.liftconference.com\/\" target=\"_blank\">Learn more &gt;&gt;<\/a> ","slug":"lift_2007","url":"http:\/\/www.liftconference.com\/","starts_at":"2009-12-23 16:46:00"}},{"event":{"id":14,"name":"Skoll World Forum 2007","description":"","header_text":"The Skoll World Forum on Social Entrepreneurship is the premier, international platform for accelerating entrepreneurial approaches and innovative solutions to the world&rsquo;s most pressing social issues. <a href=\"http:\/\/skollworldforum.org\/\">Learn more &raquo;<\/a>","slug":"skoll_2007","url":"http:\/\/skollworldforum.org\/","starts_at":"2007-03-27 01:00:00"}},{"event":{"id":15,"name":"TEDSalon 2007 Hot Science","description":"","header_text":"","slug":"tedsalon2007","url":"","starts_at":"2007-09-26 00:00:00"}},{"event":{"id":17,"name":"TED2001","description":"","header_text":"","slug":"2001","url":"","starts_at":"2001-02-02 00:00:00"}},{"event":{"id":18,"name":"TED2009","description":"TED2009","header_text":null,"slug":"2009","url":null,"starts_at":"2009-02-03 00:01:00"}},{"event":{"id":19,"name":"TED1984","description":"","header_text":"","slug":"1984","url":"","starts_at":"1984-03-03 16:45:00"}},{"event":{"id":20,"name":"TED1990","description":"","header_text":"","slug":"1990","url":"","starts_at":"1990-03-03 16:48:00"}},{"event":{"id":22,"name":"TED2000","description":"","header_text":"","slug":"2000","url":"","starts_at":"2000-02-23 00:00:00"}},{"event":{"id":23,"name":"TED1999","description":"","header_text":"","slug":"1999","url":"","starts_at":"1999-02-17 00:00:00"}}],"counts":{"this":20,"total":211}}
@@ -0,0 +1,189 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <response>
3
+ <events>
4
+ <event>
5
+ <id>1</id>
6
+ <name>TED2008</name>
7
+ <description></description>
8
+ <header_text></header_text>
9
+ <slug>2008</slug>
10
+ <url></url>
11
+ <starts_at>2008-02-27 00:00:00</starts_at>
12
+ </event>
13
+ <event>
14
+ <id>2</id>
15
+ <name>TED2007</name>
16
+ <description></description>
17
+ <header_text></header_text>
18
+ <slug>2007</slug>
19
+ <url></url>
20
+ <starts_at>2007-03-07 00:00:00</starts_at>
21
+ </event>
22
+ <event>
23
+ <id>3</id>
24
+ <name>TED2006</name>
25
+ <description></description>
26
+ <header_text></header_text>
27
+ <slug>2006</slug>
28
+ <url></url>
29
+ <starts_at>2006-02-22 00:00:00</starts_at>
30
+ </event>
31
+ <event>
32
+ <id>4</id>
33
+ <name>TED2005</name>
34
+ <description></description>
35
+ <header_text></header_text>
36
+ <slug>2005</slug>
37
+ <url></url>
38
+ <starts_at>2005-02-23 00:00:00</starts_at>
39
+ </event>
40
+ <event>
41
+ <id>5</id>
42
+ <name>TED2004</name>
43
+ <description></description>
44
+ <header_text></header_text>
45
+ <slug>2004</slug>
46
+ <url></url>
47
+ <starts_at>2004-02-25 00:00:00</starts_at>
48
+ </event>
49
+ <event>
50
+ <id>6</id>
51
+ <name>TED2003</name>
52
+ <description></description>
53
+ <header_text></header_text>
54
+ <slug>2003</slug>
55
+ <url></url>
56
+ <starts_at>2003-05-13 00:00:00</starts_at>
57
+ </event>
58
+ <event>
59
+ <id>7</id>
60
+ <name>TED2002</name>
61
+ <description></description>
62
+ <header_text></header_text>
63
+ <slug>2002</slug>
64
+ <url></url>
65
+ <starts_at>2002-02-20 00:00:00</starts_at>
66
+ </event>
67
+ <event>
68
+ <id>8</id>
69
+ <name>TEDGlobal 2005</name>
70
+ <description></description>
71
+ <header_text></header_text>
72
+ <slug>tg2005</slug>
73
+ <url></url>
74
+ <starts_at>2005-07-12 00:00:00</starts_at>
75
+ </event>
76
+ <event>
77
+ <id>9</id>
78
+ <name>TEDSalon 2006</name>
79
+ <description></description>
80
+ <header_text></header_text>
81
+ <slug>tedsalon2006</slug>
82
+ <url></url>
83
+ <starts_at>2006-12-14 00:00:00</starts_at>
84
+ </event>
85
+ <event>
86
+ <id>10</id>
87
+ <name>TEDGlobal 2007</name>
88
+ <description></description>
89
+ <header_text></header_text>
90
+ <slug>tg2007</slug>
91
+ <url></url>
92
+ <starts_at>2007-06-04 00:00:00</starts_at>
93
+ </event>
94
+ <event>
95
+ <id>12</id>
96
+ <name>DLD 2007</name>
97
+ <description></description>
98
+ <header_text>DLD (Digital Life Design), held annually in Munich, covers digital innovation, media and design. &lt;a href="http://www.dld-conference.com/" target="_blank"&gt;Learn more &amp;gt;&amp;gt;&lt;/a&gt;</header_text>
99
+ <slug>dld_2007</slug>
100
+ <url>http://www.dld-conference.com/</url>
101
+ <starts_at>2009-12-23 17:16:00</starts_at>
102
+ </event>
103
+ <event>
104
+ <id>13</id>
105
+ <name>LIFT 2007</name>
106
+ <description></description>
107
+ <header_text>The LIFT Conference, held in Geneva, explores the impact of technology on society.&amp;nbsp;&lt;a href="http://www.liftconference.com/" target="_blank"&gt;Learn more &amp;gt;&amp;gt;&lt;/a&gt; </header_text>
108
+ <slug>lift_2007</slug>
109
+ <url>http://www.liftconference.com/</url>
110
+ <starts_at>2009-12-23 16:46:00</starts_at>
111
+ </event>
112
+ <event>
113
+ <id>14</id>
114
+ <name>Skoll World Forum 2007</name>
115
+ <description></description>
116
+ <header_text>The Skoll World Forum on Social Entrepreneurship is the premier, international platform for accelerating entrepreneurial approaches and innovative solutions to the world&amp;rsquo;s most pressing social issues. &lt;a href="http://skollworldforum.org/"&gt;Learn more &amp;raquo;&lt;/a&gt;</header_text>
117
+ <slug>skoll_2007</slug>
118
+ <url>http://skollworldforum.org/</url>
119
+ <starts_at>2007-03-27 01:00:00</starts_at>
120
+ </event>
121
+ <event>
122
+ <id>15</id>
123
+ <name>TEDSalon 2007 Hot Science</name>
124
+ <description></description>
125
+ <header_text></header_text>
126
+ <slug>tedsalon2007</slug>
127
+ <url></url>
128
+ <starts_at>2007-09-26 00:00:00</starts_at>
129
+ </event>
130
+ <event>
131
+ <id>17</id>
132
+ <name>TED2001</name>
133
+ <description></description>
134
+ <header_text></header_text>
135
+ <slug>2001</slug>
136
+ <url></url>
137
+ <starts_at>2001-02-02 00:00:00</starts_at>
138
+ </event>
139
+ <event>
140
+ <id>18</id>
141
+ <name>TED2009</name>
142
+ <description>TED2009</description>
143
+ <header_text></header_text>
144
+ <slug>2009</slug>
145
+ <url></url>
146
+ <starts_at>2009-02-03 00:01:00</starts_at>
147
+ </event>
148
+ <event>
149
+ <id>19</id>
150
+ <name>TED1984</name>
151
+ <description></description>
152
+ <header_text></header_text>
153
+ <slug>1984</slug>
154
+ <url></url>
155
+ <starts_at>1984-03-03 16:45:00</starts_at>
156
+ </event>
157
+ <event>
158
+ <id>20</id>
159
+ <name>TED1990</name>
160
+ <description></description>
161
+ <header_text></header_text>
162
+ <slug>1990</slug>
163
+ <url></url>
164
+ <starts_at>1990-03-03 16:48:00</starts_at>
165
+ </event>
166
+ <event>
167
+ <id>22</id>
168
+ <name>TED2000</name>
169
+ <description></description>
170
+ <header_text></header_text>
171
+ <slug>2000</slug>
172
+ <url></url>
173
+ <starts_at>2000-02-23 00:00:00</starts_at>
174
+ </event>
175
+ <event>
176
+ <id>23</id>
177
+ <name>TED1999</name>
178
+ <description></description>
179
+ <header_text></header_text>
180
+ <slug>1999</slug>
181
+ <url></url>
182
+ <starts_at>1999-02-17 00:00:00</starts_at>
183
+ </event>
184
+ </events>
185
+ <counts>
186
+ <this>20</this>
187
+ <total>211</total>
188
+ </counts>
189
+ </response>