bcx 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/.travis.yml +6 -0
  2. data/README.md +57 -4
  3. data/docs/bcx.html +171 -0
  4. data/docs/configuration.html +128 -0
  5. data/docs/docco.css +500 -0
  6. data/docs/http.html +125 -0
  7. data/docs/oauth.html +127 -0
  8. data/docs/person.html +125 -0
  9. data/docs/project.html +143 -0
  10. data/docs/public/fonts/aller-bold.eot +0 -0
  11. data/docs/public/fonts/aller-bold.ttf +0 -0
  12. data/docs/public/fonts/aller-bold.woff +0 -0
  13. data/docs/public/fonts/aller-light.eot +0 -0
  14. data/docs/public/fonts/aller-light.ttf +0 -0
  15. data/docs/public/fonts/aller-light.woff +0 -0
  16. data/docs/public/fonts/fleurons.eot +0 -0
  17. data/docs/public/fonts/fleurons.ttf +0 -0
  18. data/docs/public/fonts/fleurons.woff +0 -0
  19. data/docs/public/fonts/novecento-bold.eot +0 -0
  20. data/docs/public/fonts/novecento-bold.ttf +0 -0
  21. data/docs/public/fonts/novecento-bold.woff +0 -0
  22. data/docs/public/images/gray.png +0 -0
  23. data/docs/public/stylesheets/normalize.css +375 -0
  24. data/docs/response_error.html +117 -0
  25. data/docs/todo.html +138 -0
  26. data/docs/todolist.html +148 -0
  27. data/docs/version.html +103 -0
  28. data/lib/bcx/client/http.rb +25 -0
  29. data/lib/bcx/client/oauth.rb +27 -0
  30. data/lib/bcx/resources/person.rb +30 -7
  31. data/lib/bcx/resources/project.rb +7 -10
  32. data/lib/bcx/resources/todolist.rb +11 -4
  33. data/lib/bcx/version.rb +1 -1
  34. data/lib/bcx.rb +12 -1
  35. data/spec/bcx/client_spec.rb +24 -19
  36. data/spec/bcx/person_spec.rb +55 -0
  37. data/spec/bcx/project_spec.rb +1 -1
  38. data/spec/bcx/todo_spec.rb +43 -0
  39. data/spec/bcx/todolist_spec.rb +19 -3
  40. data/spec/cassettes/Bcx_Client/error_handling/should_raise_exception.yml +56 -0
  41. data/spec/cassettes/Bcx_Resources_Person/DELETE_/people/4904728_json/should_delete_a_todolist.yml +101 -0
  42. data/spec/cassettes/Bcx_Resources_Person/GET_/people/4666033_json/should_have_the_correct_id.yml +58 -0
  43. data/spec/cassettes/Bcx_Resources_Person/GET_/people/4666033_json/should_return_a_hash.yml +58 -0
  44. data/spec/cassettes/Bcx_Resources_Person/GET_/people/me_json/should_have_assigned_todos.yml +58 -0
  45. data/spec/cassettes/Bcx_Resources_Person/GET_/people/me_json/should_have_the_correct_id.yml +58 -0
  46. data/spec/cassettes/Bcx_Resources_Person/GET_/people/me_json/should_return_a_hash.yml +58 -0
  47. data/spec/cassettes/Bcx_Resources_Person/GET_/people_json/first_person_should_have_the_correct_id.yml +56 -0
  48. data/spec/cassettes/Bcx_Resources_Person/GET_/people_json/should_be_an_array.yml +56 -0
  49. data/spec/cassettes/Bcx_Resources_Todo/DELETE_/projects/2951531/todos/48545200_json/should_delete_the_given_todo.yml +101 -0
  50. data/spec/cassettes/Bcx_Resources_Todo/GET_/projects/2951531/todos/48545200_json/should_have_the_correct_id.yml +61 -0
  51. data/spec/cassettes/Bcx_Resources_Todo/GET_/projects/2951531/todos/48545200_json/should_return_a_hash.yml +61 -0
  52. data/spec/cassettes/Bcx_Resources_Todo/POST_/projects/2951531/todolists/2951531/todos_json/should_create_a_new_todo.yml +56 -0
  53. data/spec/cassettes/Bcx_Resources_Todo/POST_/projects/2951531/todolists/8268819/todos_json/should_create_a_new_todo.yml +62 -0
  54. data/spec/cassettes/Bcx_Resources_Todo/PUT_/projects/2951531/todos/48545200_json/should_update_an_existing_todo.yml +61 -0
  55. data/spec/cassettes/Bcx_Resources_Todolist/DELETE_/projects/2956584/todolists/8268819_json/should_create_a_new_todolist.yml +66 -0
  56. data/spec/cassettes/Bcx_Resources_Todolist/DELETE_/projects/2956584/todolists/8268819_json/should_delete_a_todolist.yml +101 -0
  57. data/spec/cassettes/Bcx_Resources_Todolist/POST_/projects/123/todolists_json/should_create_a_new_todolist.yml +62 -0
  58. data/spec/cassettes/Bcx_Resources_Todolist/PUT_/projects/2956584/todolists/8268819_json/should_create_a_new_todolist.yml +186 -0
  59. metadata +88 -14
  60. data/lib/bcx/client.rb +0 -24
data/docs/docco.css ADDED
@@ -0,0 +1,500 @@
1
+ /*--------------------- Typography ----------------------------*/
2
+
3
+ @font-face {
4
+ font-family: 'aller-light';
5
+ src: url('public/fonts/aller-light.eot');
6
+ src: url('public/fonts/aller-light.eot?#iefix') format('embedded-opentype'),
7
+ url('public/fonts/aller-light.woff') format('woff'),
8
+ url('public/fonts/aller-light.ttf') format('truetype');
9
+ font-weight: normal;
10
+ font-style: normal;
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'aller-bold';
15
+ src: url('public/fonts/aller-bold.eot');
16
+ src: url('public/fonts/aller-bold.eot?#iefix') format('embedded-opentype'),
17
+ url('public/fonts/aller-bold.woff') format('woff'),
18
+ url('public/fonts/aller-bold.ttf') format('truetype');
19
+ font-weight: normal;
20
+ font-style: normal;
21
+ }
22
+
23
+ @font-face {
24
+ font-family: 'novecento-bold';
25
+ src: url('public/fonts/novecento-bold.eot');
26
+ src: url('public/fonts/novecento-bold.eot?#iefix') format('embedded-opentype'),
27
+ url('public/fonts/novecento-bold.woff') format('woff'),
28
+ url('public/fonts/novecento-bold.ttf') format('truetype');
29
+ font-weight: normal;
30
+ font-style: normal;
31
+ }
32
+
33
+ /*--------------------- Layout ----------------------------*/
34
+ html { height: 100%; }
35
+ body {
36
+ font-family: "aller-light";
37
+ font-size: 14px;
38
+ line-height: 18px;
39
+ color: #30404f;
40
+ margin: 0; padding: 0;
41
+ height:100%;
42
+ }
43
+ #container { min-height: 100%; }
44
+
45
+ a {
46
+ color: #000;
47
+ }
48
+
49
+ b, strong {
50
+ font-weight: normal;
51
+ font-family: "aller-bold";
52
+ }
53
+
54
+ p, ul, ol {
55
+ margin: 15px 0 0px;
56
+ }
57
+
58
+ h1, h2, h3, h4, h5, h6 {
59
+ color: #112233;
60
+ line-height: 1em;
61
+ font-weight: normal;
62
+ font-family: "novecento-bold";
63
+ text-transform: uppercase;
64
+ margin: 30px 0 15px 0;
65
+ }
66
+
67
+ h1 {
68
+ margin-top: 40px;
69
+ }
70
+
71
+ hr {
72
+ border: 0;
73
+ background: 1px solid #ddd;
74
+ height: 1px;
75
+ margin: 20px 0;
76
+ }
77
+
78
+ pre, tt, code {
79
+ font-size: 12px; line-height: 16px;
80
+ font-family: Menlo, Monaco, Consolas, "Lucida Console", monospace;
81
+ margin: 0; padding: 0;
82
+ }
83
+ .annotation pre {
84
+ display: block;
85
+ margin: 0;
86
+ padding: 7px 10px;
87
+ background: #fcfcfc;
88
+ -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
89
+ -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
90
+ box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
91
+ overflow-x: auto;
92
+ }
93
+ .annotation pre code {
94
+ border: 0;
95
+ padding: 0;
96
+ background: transparent;
97
+ }
98
+
99
+
100
+ blockquote {
101
+ border-left: 5px solid #ccc;
102
+ margin: 0;
103
+ padding: 1px 0 1px 1em;
104
+ }
105
+ .sections blockquote p {
106
+ font-family: Menlo, Consolas, Monaco, monospace;
107
+ font-size: 12px; line-height: 16px;
108
+ color: #999;
109
+ margin: 10px 0 0;
110
+ white-space: pre-wrap;
111
+ }
112
+
113
+ ul.sections {
114
+ list-style: none;
115
+ padding:0 0 5px 0;;
116
+ margin:0;
117
+ }
118
+
119
+ /*
120
+ Force border-box so that % widths fit the parent
121
+ container without overlap because of margin/padding.
122
+
123
+ More Info : http://www.quirksmode.org/css/box.html
124
+ */
125
+ ul.sections > li > div {
126
+ -moz-box-sizing: border-box; /* firefox */
127
+ -ms-box-sizing: border-box; /* ie */
128
+ -webkit-box-sizing: border-box; /* webkit */
129
+ -khtml-box-sizing: border-box; /* konqueror */
130
+ box-sizing: border-box; /* css3 */
131
+ }
132
+
133
+
134
+ /*---------------------- Jump Page -----------------------------*/
135
+ #jump_to, #jump_page {
136
+ margin: 0;
137
+ background: white;
138
+ -webkit-box-shadow: 0 0 25px #777; -moz-box-shadow: 0 0 25px #777;
139
+ -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px;
140
+ font: 16px Arial;
141
+ cursor: pointer;
142
+ text-align: right;
143
+ list-style: none;
144
+ }
145
+
146
+ #jump_to a {
147
+ text-decoration: none;
148
+ }
149
+
150
+ #jump_to a.large {
151
+ display: none;
152
+ }
153
+ #jump_to a.small {
154
+ font-size: 22px;
155
+ font-weight: bold;
156
+ color: #676767;
157
+ }
158
+
159
+ #jump_to, #jump_wrapper {
160
+ position: fixed;
161
+ right: 0; top: 0;
162
+ padding: 10px 15px;
163
+ margin:0;
164
+ }
165
+
166
+ #jump_wrapper {
167
+ display: none;
168
+ padding:0;
169
+ }
170
+
171
+ #jump_to:hover #jump_wrapper {
172
+ display: block;
173
+ }
174
+
175
+ #jump_page {
176
+ padding: 5px 0 3px;
177
+ margin: 0 0 25px 25px;
178
+ }
179
+
180
+ #jump_page .source {
181
+ display: block;
182
+ padding: 15px;
183
+ text-decoration: none;
184
+ border-top: 1px solid #eee;
185
+ }
186
+
187
+ #jump_page .source:hover {
188
+ background: #f5f5ff;
189
+ }
190
+
191
+ #jump_page .source:first-child {
192
+ }
193
+
194
+ /*---------------------- Low resolutions (> 320px) ---------------------*/
195
+ @media only screen and (min-width: 320px) {
196
+ .pilwrap { display: none; }
197
+
198
+ ul.sections > li > div {
199
+ display: block;
200
+ padding:5px 10px 0 10px;
201
+ }
202
+
203
+ ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
204
+ padding-left: 30px;
205
+ }
206
+
207
+ ul.sections > li > div.content {
208
+ background: #f5f5ff;
209
+ overflow-x:auto;
210
+ -webkit-box-shadow: inset 0 0 5px #e5e5ee;
211
+ box-shadow: inset 0 0 5px #e5e5ee;
212
+ border: 1px solid #dedede;
213
+ margin:5px 10px 5px 10px;
214
+ padding-bottom: 5px;
215
+ }
216
+
217
+ ul.sections > li > div.annotation pre {
218
+ margin: 7px 0 7px;
219
+ padding-left: 15px;
220
+ }
221
+
222
+ ul.sections > li > div.annotation p tt, .annotation code {
223
+ background: #f8f8ff;
224
+ border: 1px solid #dedede;
225
+ font-size: 12px;
226
+ padding: 0 0.2em;
227
+ }
228
+ }
229
+
230
+ /*---------------------- (> 481px) ---------------------*/
231
+ @media only screen and (min-width: 481px) {
232
+ #container {
233
+ position: relative;
234
+ }
235
+ body {
236
+ background-color: #F5F5FF;
237
+ font-size: 15px;
238
+ line-height: 21px;
239
+ }
240
+ pre, tt, code {
241
+ line-height: 18px;
242
+ }
243
+ p, ul, ol {
244
+ margin: 0 0 15px;
245
+ }
246
+
247
+
248
+ #jump_to {
249
+ padding: 5px 10px;
250
+ }
251
+ #jump_wrapper {
252
+ padding: 0;
253
+ }
254
+ #jump_to, #jump_page {
255
+ font: 10px Arial;
256
+ text-transform: uppercase;
257
+ }
258
+ #jump_page .source {
259
+ padding: 5px 10px;
260
+ }
261
+ #jump_to a.large {
262
+ display: inline-block;
263
+ }
264
+ #jump_to a.small {
265
+ display: none;
266
+ }
267
+
268
+
269
+
270
+ #background {
271
+ position: absolute;
272
+ top: 0; bottom: 0;
273
+ width: 350px;
274
+ background: #fff;
275
+ border-right: 1px solid #e5e5ee;
276
+ z-index: -1;
277
+ }
278
+
279
+ ul.sections > li > div.annotation ul, ul.sections > li > div.annotation ol {
280
+ padding-left: 40px;
281
+ }
282
+
283
+ ul.sections > li {
284
+ white-space: nowrap;
285
+ }
286
+
287
+ ul.sections > li > div {
288
+ display: inline-block;
289
+ }
290
+
291
+ ul.sections > li > div.annotation {
292
+ max-width: 350px;
293
+ min-width: 350px;
294
+ min-height: 5px;
295
+ padding: 13px;
296
+ overflow-x: hidden;
297
+ white-space: normal;
298
+ vertical-align: top;
299
+ text-align: left;
300
+ }
301
+ ul.sections > li > div.annotation pre {
302
+ margin: 15px 0 15px;
303
+ padding-left: 15px;
304
+ }
305
+
306
+ ul.sections > li > div.content {
307
+ padding: 13px;
308
+ vertical-align: top;
309
+ background: #f5f5ff;
310
+ border: none;
311
+ -webkit-box-shadow: none;
312
+ box-shadow: none;
313
+ }
314
+
315
+ .pilwrap {
316
+ position: relative;
317
+ display: inline;
318
+ }
319
+
320
+ .pilcrow {
321
+ font: 12px Arial;
322
+ text-decoration: none;
323
+ color: #454545;
324
+ position: absolute;
325
+ top: 3px; left: -20px;
326
+ padding: 1px 2px;
327
+ opacity: 0;
328
+ -webkit-transition: opacity 0.2s linear;
329
+ }
330
+ .for-h1 .pilcrow {
331
+ top: 47px;
332
+ }
333
+ .for-h2 .pilcrow, .for-h3 .pilcrow, .for-h4 .pilcrow {
334
+ top: 35px;
335
+ }
336
+
337
+ ul.sections > li > div.annotation:hover .pilcrow {
338
+ opacity: 1;
339
+ }
340
+ }
341
+
342
+ /*---------------------- (> 1025px) ---------------------*/
343
+ @media only screen and (min-width: 1025px) {
344
+
345
+ body {
346
+ font-size: 16px;
347
+ line-height: 24px;
348
+ }
349
+
350
+ #background {
351
+ width: 525px;
352
+ }
353
+ ul.sections > li > div.annotation {
354
+ max-width: 525px;
355
+ min-width: 525px;
356
+ padding: 10px 25px 1px 50px;
357
+ }
358
+ ul.sections > li > div.content {
359
+ padding: 9px 15px 16px 25px;
360
+ }
361
+ }
362
+
363
+ /*---------------------- Syntax Highlighting -----------------------------*/
364
+
365
+ td.linenos { background-color: #f0f0f0; padding-right: 10px; }
366
+ span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
367
+ /*
368
+
369
+ github.com style (c) Vasily Polovnyov <vast@whiteants.net>
370
+
371
+ */
372
+
373
+ pre code {
374
+ display: block; padding: 0.5em;
375
+ color: #000;
376
+ background: #f8f8ff
377
+ }
378
+
379
+ pre .comment,
380
+ pre .template_comment,
381
+ pre .diff .header,
382
+ pre .javadoc {
383
+ color: #408080;
384
+ font-style: italic
385
+ }
386
+
387
+ pre .keyword,
388
+ pre .assignment,
389
+ pre .literal,
390
+ pre .css .rule .keyword,
391
+ pre .winutils,
392
+ pre .javascript .title,
393
+ pre .lisp .title,
394
+ pre .subst {
395
+ color: #954121;
396
+ /*font-weight: bold*/
397
+ }
398
+
399
+ pre .number,
400
+ pre .hexcolor {
401
+ color: #40a070
402
+ }
403
+
404
+ pre .string,
405
+ pre .tag .value,
406
+ pre .phpdoc,
407
+ pre .tex .formula {
408
+ color: #219161;
409
+ }
410
+
411
+ pre .title,
412
+ pre .id {
413
+ color: #19469D;
414
+ }
415
+ pre .params {
416
+ color: #00F;
417
+ }
418
+
419
+ pre .javascript .title,
420
+ pre .lisp .title,
421
+ pre .subst {
422
+ font-weight: normal
423
+ }
424
+
425
+ pre .class .title,
426
+ pre .haskell .label,
427
+ pre .tex .command {
428
+ color: #458;
429
+ font-weight: bold
430
+ }
431
+
432
+ pre .tag,
433
+ pre .tag .title,
434
+ pre .rules .property,
435
+ pre .django .tag .keyword {
436
+ color: #000080;
437
+ font-weight: normal
438
+ }
439
+
440
+ pre .attribute,
441
+ pre .variable,
442
+ pre .instancevar,
443
+ pre .lisp .body {
444
+ color: #008080
445
+ }
446
+
447
+ pre .regexp {
448
+ color: #B68
449
+ }
450
+
451
+ pre .class {
452
+ color: #458;
453
+ font-weight: bold
454
+ }
455
+
456
+ pre .symbol,
457
+ pre .ruby .symbol .string,
458
+ pre .ruby .symbol .keyword,
459
+ pre .ruby .symbol .keymethods,
460
+ pre .lisp .keyword,
461
+ pre .tex .special,
462
+ pre .input_number {
463
+ color: #990073
464
+ }
465
+
466
+ pre .builtin,
467
+ pre .constructor,
468
+ pre .built_in,
469
+ pre .lisp .title {
470
+ color: #0086b3
471
+ }
472
+
473
+ pre .preprocessor,
474
+ pre .pi,
475
+ pre .doctype,
476
+ pre .shebang,
477
+ pre .cdata {
478
+ color: #999;
479
+ font-weight: bold
480
+ }
481
+
482
+ pre .deletion {
483
+ background: #fdd
484
+ }
485
+
486
+ pre .addition {
487
+ background: #dfd
488
+ }
489
+
490
+ pre .diff .change {
491
+ background: #0086b3
492
+ }
493
+
494
+ pre .chunk {
495
+ color: #aaa
496
+ }
497
+
498
+ pre .tex .formula {
499
+ opacity: 0.5;
500
+ }
data/docs/http.html ADDED
@@ -0,0 +1,125 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <title>http.rb</title>
6
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
7
+ <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
8
+ <link rel="stylesheet" media="all" href="docco.css" />
9
+ </head>
10
+ <body>
11
+ <div id="container">
12
+ <div id="background"></div>
13
+
14
+ <ul id="jump_to">
15
+ <li>
16
+ <a class="large" href="javascript:void(0);">Jump To &hellip;</a>
17
+ <a class="small" href="javascript:void(0);">+</a>
18
+ <div id="jump_wrapper">
19
+ <div id="jump_page">
20
+
21
+
22
+ <a class="source" href="bcx.html">
23
+ bcx.rb
24
+ </a>
25
+
26
+
27
+ <a class="source" href="http.html">
28
+ http.rb
29
+ </a>
30
+
31
+
32
+ <a class="source" href="oauth.html">
33
+ oauth.rb
34
+ </a>
35
+
36
+
37
+ <a class="source" href="configuration.html">
38
+ configuration.rb
39
+ </a>
40
+
41
+
42
+ <a class="source" href="person.html">
43
+ person.rb
44
+ </a>
45
+
46
+
47
+ <a class="source" href="project.html">
48
+ project.rb
49
+ </a>
50
+
51
+
52
+ <a class="source" href="todo.html">
53
+ todo.rb
54
+ </a>
55
+
56
+
57
+ <a class="source" href="todolist.html">
58
+ todolist.rb
59
+ </a>
60
+
61
+
62
+ <a class="source" href="response_error.html">
63
+ response_error.rb
64
+ </a>
65
+
66
+
67
+ <a class="source" href="version.html">
68
+ version.rb
69
+ </a>
70
+
71
+ </div>
72
+ </li>
73
+ </ul>
74
+
75
+ <ul class="sections">
76
+
77
+ <li id="title">
78
+ <div class="annotation">
79
+ <h1>http.rb</h1>
80
+ </div>
81
+ </li>
82
+
83
+
84
+
85
+ <li id="section-1">
86
+ <div class="annotation">
87
+
88
+ <div class="pilwrap ">
89
+ <a class="pilcrow" href="#section-1">&#182;</a>
90
+ </div>
91
+
92
+ </div>
93
+
94
+ <div class="content"><div class='highlight'><pre><span class="class"><span class="keyword">module</span> <span class="title">Bcx</span></span>
95
+ <span class="class"><span class="keyword">module</span> <span class="title">Client</span></span>
96
+ <span class="class"><span class="keyword">class</span> <span class="title">HTTP</span> <span class="inheritance">&lt; <span class="parent">Rapidash::Client</span></span></span>
97
+ method <span class="symbol">:http</span>
98
+
99
+ extension <span class="symbol">:json</span>
100
+ encode_post_data_with <span class="symbol">:json</span>
101
+
102
+ raise_errors
103
+
104
+ resource <span class="symbol">:projects</span>, <span class="symbol">class_name:</span> <span class="string">'Bcx::Resources::Project'</span>
105
+ resource <span class="symbol">:todolists</span>, <span class="symbol">class_name:</span> <span class="string">'Bcx::Resources::Todolist'</span>
106
+ resource <span class="symbol">:people</span>, <span class="symbol">class_name:</span> <span class="string">'Bcx::Resources::Person'</span>
107
+
108
+ <span class="function"><span class="keyword">def</span> <span class="title">initialize</span><span class="params">(options = {})</span></span>
109
+ <span class="variable">@account</span> = <span class="constant">Bcx</span>.configuration.account
110
+ <span class="variable">@api_version</span> = <span class="constant">Bcx</span>.configuration.api_version
111
+
112
+ <span class="keyword">self</span>.<span class="keyword">class</span>.site(<span class="string">"https://basecamp.com/<span class="subst">#{<span class="variable">@account</span>}</span>/api/<span class="subst">#{<span class="variable">@api_version</span>}</span>/"</span>)
113
+
114
+ <span class="keyword">super</span>(options)
115
+ <span class="keyword">end</span>
116
+ <span class="keyword">end</span>
117
+ <span class="keyword">end</span>
118
+ <span class="keyword">end</span></pre></div></div>
119
+
120
+ </li>
121
+
122
+ </ul>
123
+ </div>
124
+ </body>
125
+ </html>