wimp 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +5 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +154 -0
  7. data/Rakefile +6 -0
  8. data/lib/gen/README.md +6 -0
  9. data/lib/gen/client_api_login_service.rb +270 -0
  10. data/lib/gen/client_api_service.rb +3016 -0
  11. data/lib/gen/services_constants.rb +13 -0
  12. data/lib/gen/services_types.rb +1035 -0
  13. data/lib/wimp.rb +66 -0
  14. data/lib/wimp/base.rb +30 -0
  15. data/lib/wimp/error.rb +4 -0
  16. data/lib/wimp/playlist.rb +93 -0
  17. data/lib/wimp/simple_artist.rb +10 -0
  18. data/lib/wimp/track.rb +91 -0
  19. data/lib/wimp/version.rb +3 -0
  20. data/resources/skipped-methods.md +44 -0
  21. data/resources/thrift/services.thrift +396 -0
  22. data/spec/fixtures/vcr_cassettes/WiMP_Playlist/should_add_my_track_id.yml +263 -0
  23. data/spec/fixtures/vcr_cassettes/WiMP_Playlist/should_be_able_to_add_tracks_to_playlist.yml +445 -0
  24. data/spec/fixtures/vcr_cassettes/WiMP_Playlist/should_be_able_to_remove_tracks.yml +452 -0
  25. data/spec/fixtures/vcr_cassettes/WiMP_Playlist/should_create_a_playlist.yml +98 -0
  26. data/spec/fixtures/vcr_cassettes/WiMP_Playlist/should_find_by_uuid.yml +49 -0
  27. data/spec/fixtures/vcr_cassettes/WiMP_Playlist/should_not_crash_on_invalid_pos.yml +372 -0
  28. data/spec/fixtures/vcr_cassettes/WiMP_Track/.yml +169 -0
  29. data/spec/fixtures/vcr_cassettes/WiMP_Track/should_be_searchable.yml +169 -0
  30. data/spec/fixtures/vcr_cassettes/WiMP_Track/should_paginate.yml +61 -0
  31. data/spec/fixtures/vcr_cassettes/login/should_raise_error_using_invalid_credentials.yml +47 -0
  32. data/spec/fixtures/vcr_cassettes/login/should_return_sesson_id_on_successfull_login.yml +53 -0
  33. data/spec/login_spec.rb +21 -0
  34. data/spec/playlist_spec.rb +37 -0
  35. data/spec/spec_helper.rb +19 -0
  36. data/spec/track_spec.rb +26 -0
  37. data/wimp.gemspec +30 -0
  38. metadata +207 -0
@@ -0,0 +1,169 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://client.wimpmusic.com/clientapi/servicelogin
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: !binary |-
9
+ gAEAAQAAAAtzaW1wbGVMb2dpbgAAAAALAAEAAAAVdXVhYUByZWFsbHlteW1h
10
+ aWwuY29tCwACAAAABnFkZ2ZiYgsAAwAAAAZ3aW1wc2ULAAQAAAAJc2xiaDRV
11
+ VWdICwAFAAAAFUFuZHJvaWRfV0lNUC0yLjUuMi5zZQsABgAAAAo4MjYzMzcx
12
+ MDg0AA==
13
+ headers:
14
+ Content-Type:
15
+ - application/x-thrift
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ Accept:
19
+ - '*/*'
20
+ User-Agent:
21
+ - Ruby
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx/1.1.19
29
+ Date:
30
+ - Tue, 18 Mar 2014 15:49:02 GMT
31
+ Content-Type:
32
+ - application/x-thrift
33
+ Transfer-Encoding:
34
+ - chunked
35
+ Connection:
36
+ - keep-alive
37
+ X-Powered-By:
38
+ - 'Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5'
39
+ Access-Control-Allow-Origin:
40
+ - '*'
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: !binary |-
44
+ gAEAAgAAAAtzaW1wbGVMb2dpbgAAAAAMAAAIAAEANcYACAACAOdHGgoABAAA
45
+ AUTUnno5CwAFAAAAGEtBVEZiM0lmRnFXSXVnSG9sQU5zOHVTaQsABwAAAAVW
46
+ QUxJRAgACAAAAD4CAAkAAgAKAQoACwAAAUVxtBr/CAAMAAAAAQgADQAAAAEI
47
+ AA4AAAABCAAPAAAAAQsAEAAAABV1dWFhQHJlYWxseW15bWFpbC5jb20KABEA
48
+ AAFE+3jFfwgAEgAAAAMKABMAAAAAAAAAAAsAFAAAAAVJTlRSTwIAFQECABYA
49
+ CAAXAAAABAoAGAAAAAAAAAAACgAZAAABRNV9xaYKABoAAAAAAAAAAAoAGwAA
50
+ AAAAAAAACgAcAAABRNV9xaYIAB0AAAABAAA=
51
+ http_version:
52
+ recorded_at: Tue, 18 Mar 2014 15:49:02 GMT
53
+ - request:
54
+ method: post
55
+ uri: http://client.wimpmusic.com/clientapi/service
56
+ body:
57
+ encoding: ASCII-8BIT
58
+ string: !binary |-
59
+ gAEAAQAAAAZzZWFyY2gAAAAACwABAAAAD21hZG9ubmEgaHVuZyB1cAgAAgAA
60
+ AAAIAAMAAAAACAAEAAAACgsABQAAABhLQVRGYjNJZkZxV0l1Z0hvbEFOczh1
61
+ U2kIAAYAAAAAAA==
62
+ headers:
63
+ Content-Type:
64
+ - application/x-thrift
65
+ Accept-Encoding:
66
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
67
+ Accept:
68
+ - '*/*'
69
+ User-Agent:
70
+ - Ruby
71
+ response:
72
+ status:
73
+ code: 200
74
+ message: OK
75
+ headers:
76
+ Server:
77
+ - nginx/1.1.19
78
+ Date:
79
+ - Tue, 18 Mar 2014 15:49:02 GMT
80
+ Content-Type:
81
+ - application/x-thrift
82
+ Transfer-Encoding:
83
+ - chunked
84
+ Connection:
85
+ - keep-alive
86
+ X-Powered-By:
87
+ - 'Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5'
88
+ Access-Control-Allow-Origin:
89
+ - '*'
90
+ body:
91
+ encoding: ASCII-8BIT
92
+ string: !binary |-
93
+ gAEAAgAAAAZzZWFyY2gAAAAADAAADwABDAAAAAAPAAIMAAAABQsAAQAAAAdI
94
+ dW5nIFVwCwACAAAAB01hZG9ubmEIAAMAADy5CAAEAAR2nAsABQAAABRIdW5n
95
+ IFVwIChJbnQnbCBNYXhpKQsABgAAAGUyMDA1IFdhcm5lciBCcm9zLiBSZWNv
96
+ cmRzIEluYy4gZm9yIHRoZSBVLlMuIGFuZCBXRUEgSW50ZXJuYXRpb25hbCBJ
97
+ bmMuIGZvciB0aGUgd29ybGQgb3V0c2lkZSB0aGUgVS5TLggABwAAAMsIAAsA
98
+ BHadCAANAAAAAQgADgAAAAELAA8AAAANUmFkaW8gVmVyc2lvbgoAEAAAAQdY
99
+ W6WAAgARAQIAEgEEABMAAAAAAAAAAAIAFQACABYACwAXAAAAA1MwMgsAGAAA
100
+ AAJFUAIAGQEIABoAAAABCAAbAADcUQgAHAAAAAAEAB0AAAAAAAAAAAwAHgsA
101
+ AQAAABVXYXJuZXIgQnJvcy4vTWF2ZXJpY2sIAAIAAAOTCwADAAAAA1dNRwgA
102
+ BAAAAVYLAAUAAAAVV2FybmVyIEJyb3MuL01hdmVyaWNrCAAGAAf0YAAIAB8A
103
+ AAAACgAgAAABB1hbpYALACEAAABIaHR0cDovL3dkYy5hc3Bpcm8uY29tL2Rj
104
+ L3BzZXI/cHJvZHVjdElkPTI5MjUwOSZjb250ZW50VHlwZUlkPTEyJmNjb2Rl
105
+ PVBUAgAjAAgAJAAAAEwLACUAAAB9MjAwNSBXYXJuZXIgQnJvcy4gUmVjb3Jk
106
+ cyBJbmMuIGZvciB0aGUgVS5TLiBhbmQgV0VBIEludGVybmF0aW9uYWwgSW5j
107
+ LiBmb3IgdGhlIHdvcmxkIG91dHNpZGUgdGhlIFUuUy4gLyBXYXJuZXIgQnJv
108
+ cy4vTWF2ZXJpY2sACwABAAAADkh1bmcgVXAgW0xpdmVdCwACAAAAB01hZG9u
109
+ bmEIAAMAADy5CAAEAAYB0QsABQAAABRUaGUgQ29uZmVzc2lvbnMgVG91cgsA
110
+ BgAAAGUyMDA2IFdhcm5lciBCcm9zLiBSZWNvcmRzIEluYy4gZm9yIHRoZSBV
111
+ LlMuIGFuZCBXRUEgSW50ZXJuYXRpb25hbCBJbmMuIGZvciB0aGUgd29ybGQg
112
+ b3V0c2lkZSB0aGUgVS5TLggABwAAAk4IAAsABgHeCAANAAAAAQgADgAAAA0L
113
+ AA8AAAAETGl2ZQoAEAAAARBq77mAAgARAQIAEgEEABMAAAAAAAAAAAIAFQAC
114
+ ABYACwAXAAAAA1MwMgsAGAAAAAVBbGJ1bQIAGQEIABoAAAABCAAbAAAQvggA
115
+ HAAAAAAEAB0AAAAAAAAAAAwAHgsAAQAAAA9XYXJuZXIgQnJvdGhlcnMIAAIA
116
+ AVtZCwADAAAAA1dNRwgABAAAAVYLAAUAAAAITWF2ZXJpY2sIAAYAEQlQAAgA
117
+ HwAAAAAKACAAAAEQau+5gAsAIQAAAEhodHRwOi8vd2RjLmFzcGlyby5jb20v
118
+ ZGMvcHNlcj9wcm9kdWN0SWQ9MzkzNjk0JmNvbnRlbnRUeXBlSWQ9MTImY2Nv
119
+ ZGU9UFQCACMACAAkAAAAFAsAJQAAAHcyMDA2IFdhcm5lciBCcm9zLiBSZWNv
120
+ cmRzIEluYy4gZm9yIHRoZSBVLlMuIGFuZCBXRUEgSW50ZXJuYXRpb25hbCBJ
121
+ bmMuIGZvciB0aGUgd29ybGQgb3V0c2lkZSB0aGUgVS5TLiAvIFdhcm5lciBC
122
+ cm90aGVycwALAAEAAAAcSHVuZyBVcCAoU0RQIEV4dGVuZGVkIFZvY2FsKQsA
123
+ AgAAAAdNYWRvbm5hCAADAAA8uQgABAAEfBULAAUAAAAUSHVuZyBVcCAoREog
124
+ VmVyc2lvbikLAAYAAABlMjAwNSBXYXJuZXIgQnJvcy4gUmVjb3JkcyBJbmMu
125
+ IGZvciB0aGUgVS5TLiBhbmQgV0VBIEludGVybmF0aW9uYWwgSW5jLiBmb3Ig
126
+ dGhlIHdvcmxkIG91dHNpZGUgdGhlIFUuUy4IAAcAAAHdCAALAAR8FggADQAA
127
+ AAEIAA4AAAABCwAPAAAAElNEUCBFeHRlbmRlZCBWb2NhbAoAEAAAAQmZI+WA
128
+ AgARAQIAEgEEABMAAAAAAAAAAAIAFQACABYACwAXAAAAA1MwMgsAGAAAAAVB
129
+ bGJ1bQIAGQEIABoAAAABCAAbAAAFhAgAHAAAAAAEAB0AAAAAAAAAAAwAHgsA
130
+ AQAAAA9XYXJuZXIgQnJvdGhlcnMIAAIAAVtZCwADAAAAA1dNRwgABAAAAVYL
131
+ AAUAAAAMV2FybmVyIEJyb3MuCAAGABD3ZQAIAB8AAAAACgAgAAABCZkj5YAL
132
+ ACEAAABIaHR0cDovL3dkYy5hc3Bpcm8uY29tL2RjL3BzZXI/cHJvZHVjdElk
133
+ PTI5MzkxMCZjb250ZW50VHlwZUlkPTEyJmNjb2RlPVBUAgAjAAgAJAAAAA4L
134
+ ACUAAAB3MjAwNSBXYXJuZXIgQnJvcy4gUmVjb3JkcyBJbmMuIGZvciB0aGUg
135
+ VS5TLiBhbmQgV0VBIEludGVybmF0aW9uYWwgSW5jLiBmb3IgdGhlIHdvcmxk
136
+ IG91dHNpZGUgdGhlIFUuUy4gLyBXYXJuZXIgQnJvdGhlcnMACwABAAAAI0h1
137
+ bmcgVXAgKFNEUCBFeHRlbmRlZCBWb2NhbCkgKEVkaXQpCwACAAAAB01hZG9u
138
+ bmEIAAMAADy5CAAEABlTwQsABQAAABFIdW5nIFVwIChSZW1peGVzKQsABgAA
139
+ AGUyMDA1IFdhcm5lciBCcm9zLiBSZWNvcmRzIEluYy4gZm9yIHRoZSBVLlMu
140
+ IGFuZCBXRUEgSW50ZXJuYXRpb25hbCBJbmMuIGZvciB0aGUgd29ybGQgb3V0
141
+ c2lkZSB0aGUgVS5TLggABwAAASkIAAsAGVPCCAANAAAAAQgADgAAAAELAA8A
142
+ AAAZU0RQIEV4dGVuZGVkIFZvY2FsICAgRWRpdAoAEAAAAQb7cj8AAgARAQIA
143
+ EgEEABMAAAAAAAAAAAIAFQACABYACwAXAAAAA1MwMgsAGAAAAAJFUAIAGQEI
144
+ ABoAAAABCAAbAAAC3AgAHAAAAAAEAB0AAAAAAAAAAAwAHgsAAQAAAA9XYXJu
145
+ ZXIgQnJvdGhlcnMIAAIAAVtZCwADAAAAA1dNRwgABAAAAVYLAAUAAAAVV2Fy
146
+ bmVyIEJyb3MuL01hdmVyaWNrCAAGABELEwAIAB8AAAAACgAgAAABBvtyPwAL
147
+ ACEAAABJaHR0cDovL3dkYy5hc3Bpcm8uY29tL2RjL3BzZXI/cHJvZHVjdElk
148
+ PTE2NTk4NDImY29udGVudFR5cGVJZD0xMiZjY29kZT1QVAIAIwAIACQAAAAM
149
+ CwAlAAAAdzIwMDUgV2FybmVyIEJyb3MuIFJlY29yZHMgSW5jLiBmb3IgdGhl
150
+ IFUuUy4gYW5kIFdFQSBJbnRlcm5hdGlvbmFsIEluYy4gZm9yIHRoZSB3b3Js
151
+ ZCBvdXRzaWRlIHRoZSBVLlMuIC8gV2FybmVyIEJyb3RoZXJzAAsAAQAAAB9I
152
+ dW5nIFVwIChDaHVzICYgQ2ViYWxsb3MgUmVtaXgpCwACAAAAB01hZG9ubmEI
153
+ AAMAADy5CAAEAAR8FQsABQAAABRIdW5nIFVwIChESiBWZXJzaW9uKQsABgAA
154
+ AGUyMDA1IFdhcm5lciBCcm9zLiBSZWNvcmRzIEluYy4gZm9yIHRoZSBVLlMu
155
+ IGFuZCBXRUEgSW50ZXJuYXRpb25hbCBJbmMuIGZvciB0aGUgd29ybGQgb3V0
156
+ c2lkZSB0aGUgVS5TLggABwAAAkQIAAsABHwZCAANAAAAAQgADgAAAAQLAA8A
157
+ AAAVQ2h1cyAmIENlYmFsbG9zIFJlbWl4CgAQAAAAAAAAAAACABEAAgASAQQA
158
+ EwAAAAAAAAAAAgAVAQIAFgALABcAAAAACwAYAAAABUFsYnVtAgAZAQgAGgAA
159
+ AAEIABsAAAGrCAAcAAAAAAQAHQAAAAAAAAAADAAeCwABAAAAD1dhcm5lciBC
160
+ cm90aGVycwgAAgABW1kLAAMAAAADV01HCAAEAAABVgsABQAAAAxXYXJuZXIg
161
+ QnJvcy4IAAYAEPdlAAgAHwAAAAAKACAAAAEJmSPlgAsAIQAAAEhodHRwOi8v
162
+ d2RjLmFzcGlyby5jb20vZGMvcHNlcj9wcm9kdWN0SWQ9MjkzOTEzJmNvbnRl
163
+ bnRUeXBlSWQ9MTImY2NvZGU9UFQCACMACAAkAAAADAsAJQAAAHcyMDA1IFdh
164
+ cm5lciBCcm9zLiBSZWNvcmRzIEluYy4gZm9yIHRoZSBVLlMuIGFuZCBXRUEg
165
+ SW50ZXJuYXRpb25hbCBJbmMuIGZvciB0aGUgd29ybGQgb3V0c2lkZSB0aGUg
166
+ VS5TLiAvIFdhcm5lciBCcm90aGVycwAPAAMMAAAAAAAA
167
+ http_version:
168
+ recorded_at: Tue, 18 Mar 2014 15:49:03 GMT
169
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,61 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://client.wimpmusic.com/clientapi/service
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: !binary |-
9
+ gAEAAQAAAAZzZWFyY2gAAAAACwABAAAAD21hZG9ubmEgaHVuZyB1cAgAAgAA
10
+ AAAIAAMAAAAACAAEAAAAAQsABQAAABh4SVhGVHpTeFhBZUFacnNRa25lajVo
11
+ N0cIAAYAAAAAAA==
12
+ headers:
13
+ Content-Type:
14
+ - application/x-thrift
15
+ Accept-Encoding:
16
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
17
+ Accept:
18
+ - '*/*'
19
+ User-Agent:
20
+ - Ruby
21
+ response:
22
+ status:
23
+ code: 200
24
+ message: OK
25
+ headers:
26
+ Server:
27
+ - nginx/1.1.19
28
+ Date:
29
+ - Tue, 18 Mar 2014 11:49:51 GMT
30
+ Content-Type:
31
+ - application/x-thrift
32
+ Transfer-Encoding:
33
+ - chunked
34
+ Connection:
35
+ - keep-alive
36
+ X-Powered-By:
37
+ - 'Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5'
38
+ Access-Control-Allow-Origin:
39
+ - '*'
40
+ body:
41
+ encoding: ASCII-8BIT
42
+ string: !binary |-
43
+ gAEAAgAAAAZzZWFyY2gAAAAADAAADwABDAAAAAAPAAIMAAAAAQsAAQAAAAdI
44
+ dW5nIFVwCwACAAAAB01hZG9ubmEIAAMAADy5CAAEAAR2nAsABQAAABRIdW5n
45
+ IFVwIChJbnQnbCBNYXhpKQsABgAAAGUyMDA1IFdhcm5lciBCcm9zLiBSZWNv
46
+ cmRzIEluYy4gZm9yIHRoZSBVLlMuIGFuZCBXRUEgSW50ZXJuYXRpb25hbCBJ
47
+ bmMuIGZvciB0aGUgd29ybGQgb3V0c2lkZSB0aGUgVS5TLggABwAAAMsIAAsA
48
+ BHadCAANAAAAAQgADgAAAAELAA8AAAANUmFkaW8gVmVyc2lvbgoAEAAAAQdY
49
+ W6WAAgARAQIAEgEEABMAAAAAAAAAAAIAFQACABYACwAXAAAAA1MwMgsAGAAA
50
+ AAJFUAIAGQEIABoAAAABCAAbAADcUQgAHAAAAAAEAB0AAAAAAAAAAAwAHgsA
51
+ AQAAABVXYXJuZXIgQnJvcy4vTWF2ZXJpY2sIAAIAAAOTCwADAAAAA1dNRwgA
52
+ BAAAAVYLAAUAAAAVV2FybmVyIEJyb3MuL01hdmVyaWNrCAAGAAf0YAAIAB8A
53
+ AAAACgAgAAABB1hbpYALACEAAABIaHR0cDovL3dkYy5hc3Bpcm8uY29tL2Rj
54
+ L3BzZXI/cHJvZHVjdElkPTI5MjUwOSZjb250ZW50VHlwZUlkPTEyJmNjb2Rl
55
+ PVBUAgAjAAgAJAAAAEwLACUAAAB9MjAwNSBXYXJuZXIgQnJvcy4gUmVjb3Jk
56
+ cyBJbmMuIGZvciB0aGUgVS5TLiBhbmQgV0VBIEludGVybmF0aW9uYWwgSW5j
57
+ LiBmb3IgdGhlIHdvcmxkIG91dHNpZGUgdGhlIFUuUy4gLyBXYXJuZXIgQnJv
58
+ cy4vTWF2ZXJpY2sADwADDAAAAAAAAA==
59
+ http_version:
60
+ recorded_at: Tue, 18 Mar 2014 11:49:53 GMT
61
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://client.wimpmusic.com/clientapi/servicelogin
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: !binary |-
9
+ gAEAAQAAAAtzaW1wbGVMb2dpbgAAAAALAAEAAAACLTELAAIAAAACLTELAAMA
10
+ AAAGd2ltcHNlCwAEAAAACXNsYmg0VVVnSAsABQAAABVBbmRyb2lkX1dJTVAt
11
+ Mi41LjIuc2ULAAYAAAAKODI2MzM3MTA4NAA=
12
+ headers:
13
+ Content-Type:
14
+ - application/x-thrift
15
+ Accept-Encoding:
16
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
17
+ Accept:
18
+ - '*/*'
19
+ User-Agent:
20
+ - Ruby
21
+ response:
22
+ status:
23
+ code: 200
24
+ message: OK
25
+ headers:
26
+ Server:
27
+ - nginx/1.1.19
28
+ Date:
29
+ - Tue, 18 Mar 2014 10:20:18 GMT
30
+ Content-Type:
31
+ - application/x-thrift
32
+ Transfer-Encoding:
33
+ - chunked
34
+ Connection:
35
+ - keep-alive
36
+ X-Powered-By:
37
+ - 'Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5'
38
+ Access-Control-Allow-Origin:
39
+ - '*'
40
+ body:
41
+ encoding: ASCII-8BIT
42
+ string: !binary |-
43
+ gAEAAgAAAAtzaW1wbGVMb2dpbgAAAAAMAAILAAEAAAAZTm8gcHJvZmlsZSBm
44
+ b3VuZCBmb3IgWy0xXQAA
45
+ http_version:
46
+ recorded_at: Tue, 18 Mar 2014 10:20:21 GMT
47
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,53 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://client.wimpmusic.com/clientapi/servicelogin
6
+ body:
7
+ encoding: ASCII-8BIT
8
+ string: !binary |-
9
+ gAEAAQAAAAtzaW1wbGVMb2dpbgAAAAALAAEAAAAVdXVhYUByZWFsbHlteW1h
10
+ aWwuY29tCwACAAAABnFkZ2ZiYgsAAwAAAAZ3aW1wc2ULAAQAAAAJc2xiaDRV
11
+ VWdICwAFAAAAFUFuZHJvaWRfV0lNUC0yLjUuMi5zZQsABgAAAAo4MjYzMzcx
12
+ MDg0AA==
13
+ headers:
14
+ Content-Type:
15
+ - application/x-thrift
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ Accept:
19
+ - '*/*'
20
+ User-Agent:
21
+ - Ruby
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx/1.1.19
29
+ Date:
30
+ - Tue, 18 Mar 2014 10:20:18 GMT
31
+ Content-Type:
32
+ - application/x-thrift
33
+ Transfer-Encoding:
34
+ - chunked
35
+ Connection:
36
+ - keep-alive
37
+ X-Powered-By:
38
+ - 'Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)/Tomcat-5.5'
39
+ Access-Control-Allow-Origin:
40
+ - '*'
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: !binary |-
44
+ gAEAAgAAAAtzaW1wbGVMb2dpbgAAAAAMAAAIAAEANcYACAACAOdHGgoABAAA
45
+ AUTUnno5CwAFAAAAGHRtU0ZkQnE5QWE1am83eG14ZVZRWGN6agsABwAAAAVW
46
+ QUxJRAgACAAAAD4CAAkAAgAKAQoACwAAAUVxtBr/CAAMAAAAAQgADQAAAAEI
47
+ AA4AAAABCAAPAAAAAQsAEAAAABV1dWFhQHJlYWxseW15bWFpbC5jb20KABEA
48
+ AAFE+3jFfwgAEgAAAAMKABMAAAAAAAAAAAsAFAAAAAVJTlRSTwIAFQECABYA
49
+ CAAXAAAABAoAGAAAAAAAAAAACgAZAAAAAAAAAAAKABoAAAAAAAAAAAoAGwAA
50
+ AAAAAAAACgAcAAAAAAAAAAAIAB0AAAABAAA=
51
+ http_version:
52
+ recorded_at: Tue, 18 Mar 2014 10:20:21 GMT
53
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,21 @@
1
+ describe "login", vcr: {record: :new_episodes} do
2
+ after(:each) { WiMP.configuration.logout! }
3
+
4
+ it "should return sesson id on successfull login" do
5
+ WiMP.configure do |config|
6
+ config.username = "uuaa@reallymymail.com"
7
+ config.password = "qdgfbb"
8
+ end
9
+ WiMP.configuration.session.should_not be_empty
10
+ end
11
+
12
+ it "should raise error using invalid credentials" do
13
+ WiMP.configure do |config|
14
+ config.username = "-1"
15
+ config.password = "-1"
16
+ end
17
+ expect {
18
+ WiMP.configuration.session
19
+ }.to raise_error(WiMP::LoginFailed)
20
+ end
21
+ end
@@ -0,0 +1,37 @@
1
+ describe WiMP::Playlist, vcr: {record: :new_episodes} do
2
+ before(:each) do
3
+ WiMP.configure do |config|
4
+ config.username = "uuaa@reallymymail.com"
5
+ config.password = "qdgfbb"
6
+ end
7
+ end
8
+
9
+ let(:uuid) { "83331404-e312-4fe3-a6eb-00843e195c7b" }
10
+ let(:playlist) { WiMP::Playlist.find(uuid) }
11
+
12
+ it "should create a playlist" do
13
+ playlist = WiMP::Playlist.create("Tjohoo")
14
+ playlist.url.should match(%r{http://wimpmusic.se/playlist/\w+})
15
+ end
16
+
17
+ it "should find by uuid" do
18
+ playlist.uuid.should eq(uuid)
19
+ end
20
+
21
+ it "should be able to add tracks to playlist" do
22
+ tracks = WiMP::Track.search("elvis", limit: 5)
23
+ playlist.add_tracks(tracks, start_position: 100).should be_true
24
+ end
25
+
26
+ it "should add my track id" do
27
+ playlist.add_tracks_by_id([415672]).should be_true
28
+ end
29
+
30
+ it "should be able to remove tracks" do
31
+ playlist.remove_tracks_by_indices([1,2,3]).should be_true
32
+ end
33
+
34
+ it "should not crash on invalid pos" do
35
+ playlist.remove_tracks_by_indices([400]).should be_true
36
+ end
37
+ end
@@ -0,0 +1,19 @@
1
+ require "rspec"
2
+ require "webmock/rspec"
3
+ require "wimp"
4
+ require "vcr"
5
+ require "uri"
6
+
7
+ RSpec.configure do |config|
8
+ config.mock_with :rspec
9
+ end
10
+
11
+ VCR.configure do |c|
12
+ c.cassette_library_dir = "spec/fixtures/vcr_cassettes"
13
+ c.hook_into :webmock
14
+ c.default_cassette_options = {
15
+ record: :new_episodes
16
+ }
17
+ c.allow_http_connections_when_no_cassette = false
18
+ c.configure_rspec_metadata!
19
+ end
@@ -0,0 +1,26 @@
1
+ describe WiMP::Track, vcr: {record: :new_episodes} do
2
+ before(:each) do
3
+ WiMP.configure do |config|
4
+ config.username = "uuaa@reallymymail.com"
5
+ config.password = "qdgfbb"
6
+ end
7
+ end
8
+
9
+ it "should be searchable" do
10
+ tracks = WiMP::Track.search("madonna hung up")
11
+ tracks.should_not be_empty
12
+ tracks.each do |track|
13
+ track.title.should be_a(String)
14
+ track.id.should be_a(Integer)
15
+ track.artist_id.should be_a(Integer)
16
+ track.url.should match(%r{http://wimpmusic.se/track/\d+})
17
+ track.artist.url.should match(%r{http://wimpmusic.se/artist/\d+})
18
+ track.artist.name.should be_a(String)
19
+ track.artist.id.should be_a(Integer)
20
+ end
21
+ end
22
+
23
+ it "should paginate" do
24
+ WiMP::Track.search("madonna hung up", limit: 1).count.should eq(1)
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "wimp/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "wimp"
8
+ spec.version = Wimp::VERSION
9
+ spec.authors = ["Linus Oleander"]
10
+ spec.email = ["linus@oleander.nu"]
11
+ spec.summary = %q{Ruby bindings for WiMP}
12
+ spec.homepage = "https://github.com/oleander/wimp-rb"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.5"
21
+ spec.add_development_dependency "rake"
22
+
23
+ spec.add_dependency "thrift"
24
+ spec.add_dependency "rack"
25
+ spec.add_dependency "thin"
26
+
27
+ spec.add_development_dependency "vcr"
28
+ spec.add_development_dependency "rspec"
29
+ spec.add_development_dependency "webmock", "1.8.0"
30
+ end