rakumarket 0.0.1 → 0.0.2

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.
data/README.rdoc CHANGED
@@ -3,52 +3,64 @@
3
3
  A reader-friendly Ruby abstraction of the Rakuten Market API.
4
4
 
5
5
 
6
- == DESCRIPTION:
6
+ == Description
7
7
 
8
8
  The goal was to abstract Rakuten's complex API away from users and provide a simpler, easier-to-read Ruby interface in its place.
9
9
 
10
10
 
11
- == FEATURES:
11
+ == Features
12
12
 
13
13
  * Idiomatic Ruby
14
14
  * Simpler and more readable representation of the underlying API
15
+ * Well-tested
15
16
  * Returns Hashie::Mash[https://github.com/intridea/hashie]
16
17
 
17
18
 
18
- == GOALS:
19
+ == Goals
19
20
 
20
21
  * Completeness
22
+ * More simplerer
23
+ * Better-tested
24
+ * Concrete classes and methods?
21
25
 
22
26
 
23
- == CONFIGURATION:
24
27
 
28
+ == Installation
29
+
30
+ gem install rakumarket
31
+
32
+
33
+ == Configuration
34
+
35
+ A Rakuten developer ID is required.
36
+
37
+ require 'rakumarket'
25
38
  Rakumarket.developer_id = 'your_developer_id'
26
39
 
27
- == INTERFACE:
40
+ == Usage
28
41
 
29
42
  === {Item Search}[https://github.com/bonsaiben/rakumarket/wiki/Item-Search]
30
43
 
31
44
  Rakumarket.item_search "roomba", options
32
45
 
33
46
 
34
-
35
-
36
- == TODO:
47
+ == Todo
37
48
 
38
49
  * remaining APIs
50
+ * RDoc markup
51
+
39
52
 
40
53
 
41
- == DEPENDENCIES:
54
+ == Dependencies
42
55
 
43
56
  * HTTParty[https://github.com/jnunemaker/httparty]
44
57
  * Hashie::Mash[https://github.com/intridea/hashie]
45
58
  * ActiveSupport[https://github.com/rails/rails/tree/master/activesupport]
46
59
 
47
60
 
48
- == INSTALL:
49
61
 
50
62
 
51
- == LICENSE:
63
+ == License
52
64
 
53
65
  (The MIT License)
54
66
 
@@ -74,6 +86,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
74
86
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
75
87
 
76
88
 
77
- == CREDIT:
89
+ == Credit
78
90
 
79
91
  Rakumarket is inspired by multiple other Ruby API wrappers including groupon[https://github.com/pengwynn/groupon] and facebooker[https://github.com/mmangino/facebooker].
@@ -0,0 +1,562 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=0&genrePath=false&operation=GenreSearch&version=2007-04-11
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: !binary |-
14
+ T0s=
15
+ headers:
16
+ !binary "RGF0ZQ==":
17
+ - !binary |-
18
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoxODowMCBHTVQ=
19
+ !binary "U2VydmVy":
20
+ - !binary |-
21
+ QXBhY2hl
22
+ Content-Length:
23
+ - !binary |-
24
+ NDUx
25
+ !binary "Q29ubmVjdGlvbg==":
26
+ - !binary |-
27
+ Y2xvc2U=
28
+ Content-Type:
29
+ - !binary |-
30
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
31
+ body:
32
+ encoding: ASCII-8BIT
33
+ string: !binary |-
34
+ eyJCb2R5IjpudWxsLCJIZWFkZXIiOnsiU3RhdHVzIjoiQ2xpZW50RXJyb3Ii
35
+ LCJBcmdzIjp7IkFyZyI6eyJhcGlWZXJzaW9uIjp7ImNvbnRlbnQiOnRydWUs
36
+ InZhbHVlIjoiMzAifSwib3BlcmF0aW9uIjp7ImNvbnRlbnQiOnRydWUsInZh
37
+ bHVlIjoiR2VucmVTZWFyY2gifSwiZGV2ZWxvcGVySWQiOnsiY29udGVudCI6
38
+ dHJ1ZSwidmFsdWUiOiI8REVWRUxPUEVSX0lEPiJ9LCJnZW5yZVBhdGgiOnsi
39
+ Y29udGVudCI6ZmFsc2UsInZhbHVlIjoiZmFsc2UifSwiZ2VucmVJZCI6eyJj
40
+ b250ZW50Ijp0cnVlLCJ2YWx1ZSI6IjAifSwidmVyc2lvbiI6eyJjb250ZW50
41
+ Ijp0cnVlLCJ2YWx1ZSI6IjIwMDctMDQtMTEifX19LCJTdGF0dXNNc2ciOiJn
42
+ ZW5yZVBhdGjjg5Hjg6njg6Hjg7zjgr/jga/ljYrop5Ljgacw44GLMeOCkuaM
43
+ h+WumuOBl+OBpuOBj+OBoOOBleOBhOOAgiJ9fQ==
44
+ http_version:
45
+ recorded_at: Tue, 19 Jun 2012 16:18:00 GMT
46
+ - request:
47
+ method: get
48
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=0&operation=GenreSearch&version=2007-04-11
49
+ body:
50
+ encoding: US-ASCII
51
+ string: ''
52
+ headers: {}
53
+ response:
54
+ status:
55
+ code: 200
56
+ message: !binary |-
57
+ T0s=
58
+ headers:
59
+ !binary "RGF0ZQ==":
60
+ - !binary |-
61
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMDowMSBHTVQ=
62
+ !binary "U2VydmVy":
63
+ - !binary |-
64
+ QXBhY2hl
65
+ Content-Length:
66
+ - !binary |-
67
+ MzAyNw==
68
+ !binary "VmFyeQ==":
69
+ - !binary |-
70
+ QWNjZXB0LUVuY29kaW5n
71
+ !binary "Q29ubmVjdGlvbg==":
72
+ - !binary |-
73
+ Y2xvc2U=
74
+ Content-Type:
75
+ - !binary |-
76
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
77
+ body:
78
+ encoding: ASCII-8BIT
79
+ string: !binary |-
80
+ eyJCb2R5Ijp7IkdlbnJlU2VhcmNoIjp7ImNoaWxkIjpbeyJnZW5yZUxldmVs
81
+ IjoxLCJnZW5yZU5hbWUiOiJDROODu0RWROODu+alveWZqCIsImdlbnJlSWQi
82
+ OjEwMTI0MH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLjgqTjg7Pj
83
+ g4bjg6rjgqLjg7vlr53lhbfjg7vlj47ntI0iLCJnZW5yZUlkIjoxMDA4MDR9
84
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44GK44KC44Gh44KD44O7
85
+ 44Ob44OT44O844O744Ky44O844OgIiwiZ2VucmVJZCI6MTAxMTY0fSx7Imdl
86
+ bnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IuOCreODg+OCuuODu+ODmeODk+OD
87
+ vOODu+ODnuOCv+ODi+ODhuOCoyIsImdlbnJlSWQiOjEwMDUzM30seyJnZW5y
88
+ ZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLml6XnlKjlk4Hpm5Hosqjjg7vmlofm
89
+ iL/lhbfjg7vmiYvoirgiLCJnZW5yZUlkIjoyMTU3ODN9LHsiZ2VucmVMZXZl
90
+ bCI6MSwiZ2VucmVOYW1lIjoi44K444Ol44Ko44Oq44O844O744Ki44Kv44K7
91
+ 44K144Oq44O8IiwiZ2VucmVJZCI6MjE2MTI5fSx7ImdlbnJlTGV2ZWwiOjEs
92
+ ImdlbnJlTmFtZSI6IuOCueODneODvOODhOODu+OCouOCpuODiOODieOCoiIs
93
+ ImdlbnJlSWQiOjEwMTA3MH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUi
94
+ OiLjg4DjgqTjgqjjg4Pjg4jjg7vlgaXlurciLCJnZW5yZUlkIjoxMDA5Mzh9
95
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi5rC044O744K944OV44OI
96
+ 44OJ44Oq44Oz44KvIiwiZ2VucmVJZCI6MTAwMzE2fSx7ImdlbnJlTGV2ZWwi
97
+ OjEsImdlbnJlTmFtZSI6IuODkeOCveOCs+ODs+ODu+WRqOi+uuapn+WZqCIs
98
+ ImdlbnJlSWQiOjEwMDAyNn0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUi
99
+ OiLjg5Djg4PjgrDjg7vlsI/nianjg7vjg5bjg6njg7Pjg4npm5HosqgiLCJn
100
+ ZW5yZUlkIjoyMTYxMzF9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
101
+ 44Os44OH44Kj44O844K544OV44Kh44OD44K344On44OzIiwiZ2VucmVJZCI6
102
+ MTAwMzcxfSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IuiKseODu+OC
103
+ rOODvOODh+ODs+ODu0RJWSIsImdlbnJlSWQiOjEwMDAwNX0seyJnZW5yZUxl
104
+ dmVsIjoxLCJnZW5yZU5hbWUiOiLjg5rjg4Pjg4jjg7vjg5rjg4Pjg4jjgrDj
105
+ g4PjgroiLCJnZW5yZUlkIjoxMDEyMTN9LHsiZ2VucmVMZXZlbCI6MSwiZ2Vu
106
+ cmVOYW1lIjoiVFbjg7vjgqrjg7zjg4fjgqPjgqrjg7vjgqvjg6Hjg6kiLCJn
107
+ ZW5yZUlkIjoyMTE3NDJ9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
108
+ 6LuK44O744OQ44Kk44KvIiwiZ2VucmVJZCI6MTAxMTE0fSx7ImdlbnJlTGV2
109
+ ZWwiOjEsImdlbnJlTmFtZSI6Iumjn+WTgSIsImdlbnJlSWQiOjEwMDIyN30s
110
+ eyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLnvo7lrrnjg7vjgrPjgrnj
111
+ g6Hjg7vpppnmsLQiLCJnZW5yZUlkIjoxMDA5Mzl9LHsiZ2VucmVMZXZlbCI6
112
+ MSwiZ2VucmVOYW1lIjoi5pys44O76ZuR6KqM44O744Kz44Of44OD44KvIiwi
113
+ Z2VucmVJZCI6MjAwMTYyfSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6
114
+ IuaXheihjOODu+WHuuW8teODu+ODgeOCseODg+ODiCIsImdlbnJlSWQiOjEw
115
+ MTM4MX0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLkuI3li5XnlKPj
116
+ g7vkvY/jgb7jgYQiLCJnZW5yZUlkIjoyMDAxNjN9LHsiZ2VucmVMZXZlbCI6
117
+ MSwiZ2VucmVOYW1lIjoi5a2m44Gz44O744K144O844OT44K544O75L+d6Zm6
118
+ IiwiZ2VucmVJZCI6MTAxNDM4fSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFt
119
+ ZSI6IueZvuiyqOW6l+ODu+e3j+WQiOmAmuiyqeODu+OCruODleODiCIsImdl
120
+ bnJlSWQiOjEwMDAwMH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLj
121
+ g4fjgrjjgr/jg6vjgrPjg7Pjg4bjg7Pjg4QiLCJnZW5yZUlkIjo0MDI4NTN9
122
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi6LuK55So5ZOB44O744OQ
123
+ 44Kk44Kv55So5ZOBIiwiZ2VucmVJZCI6NTAzMTkwfSx7ImdlbnJlTGV2ZWwi
124
+ OjEsImdlbnJlTmFtZSI6IuOCpOODs+ODiuODvOODu+S4i+edgOODu+ODiuOC
125
+ pOODiOOCpuOCqOOCoiIsImdlbnJlSWQiOjEwMDQzM30seyJnZW5yZUxldmVs
126
+ IjoxLCJnZW5yZU5hbWUiOiLml6XmnKzphZLjg7vnhLzphY4iLCJnZW5yZUlk
127
+ Ijo1MTA5MDF9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44OT44O8
128
+ 44Or44O75rSL6YWSIiwiZ2VucmVJZCI6NTEwOTE1fSx7ImdlbnJlTGV2ZWwi
129
+ OjEsImdlbnJlTmFtZSI6IuOCueOCpOODvOODhOODu+OBiuiPk+WtkCIsImdl
130
+ bnJlSWQiOjU1MTE2N30seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLl
131
+ jLvolqzlk4Hjg7vjgrPjg7Pjgr/jgq/jg4jjg7vku4vorbciLCJnZW5yZUlk
132
+ Ijo1NTExNjl9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44Oh44Oz
133
+ 44K644OV44Kh44OD44K344On44OzIiwiZ2VucmVJZCI6NTUxMTc3fSx7Imdl
134
+ bnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IumdtCIsImdlbnJlSWQiOjU1ODg4
135
+ NX0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLohZXmmYLoqIgiLCJn
136
+ ZW5yZUlkIjo1NTg5Mjl9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
137
+ 44Kt44OD44OB44Oz55So5ZOB44O76aOf5Zmo44O76Kq/55CG5Zmo5YW3Iiwi
138
+ Z2VucmVJZCI6NTU4OTQ0fSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6
139
+ IuWutumbuyIsImdlbnJlSWQiOjU2MjYzN31dLCJjdXJyZW50IjpbXSwicGFy
140
+ ZW50IjpbXX19LCJIZWFkZXIiOnsiU3RhdHVzIjoiU3VjY2VzcyIsIkFyZ3Mi
141
+ OnsiQXJnIjp7ImFwaVZlcnNpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUi
142
+ OiIzMCJ9LCJvcGVyYXRpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUiOiJH
143
+ ZW5yZVNlYXJjaCJ9LCJkZXZlbG9wZXJJZCI6eyJjb250ZW50Ijp0cnVlLCJ2
144
+ YWx1ZSI6IjxERVZFTE9QRVJfSUQ+In0sImdlbnJlSWQiOnsiY29udGVudCI6
145
+ dHJ1ZSwidmFsdWUiOiIwIn0sInZlcnNpb24iOnsiY29udGVudCI6dHJ1ZSwi
146
+ dmFsdWUiOiIyMDA3LTA0LTExIn19fSwiU3RhdHVzTXNnIjoiIn19
147
+ http_version:
148
+ recorded_at: Tue, 19 Jun 2012 16:20:02 GMT
149
+ - request:
150
+ method: get
151
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=101240&operation=GenreSearch&version=2007-04-11
152
+ body:
153
+ encoding: US-ASCII
154
+ string: ''
155
+ headers: {}
156
+ response:
157
+ status:
158
+ code: 200
159
+ message: !binary |-
160
+ T0s=
161
+ headers:
162
+ !binary "RGF0ZQ==":
163
+ - !binary |-
164
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMDowMiBHTVQ=
165
+ !binary "U2VydmVy":
166
+ - !binary |-
167
+ QXBhY2hl
168
+ Content-Length:
169
+ - !binary |-
170
+ OTUx
171
+ !binary "Q29ubmVjdGlvbg==":
172
+ - !binary |-
173
+ Y2xvc2U=
174
+ Content-Type:
175
+ - !binary |-
176
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
177
+ body:
178
+ encoding: ASCII-8BIT
179
+ string: !binary |-
180
+ eyJCb2R5Ijp7IkdlbnJlU2VhcmNoIjp7ImNoaWxkIjpbeyJnZW5yZUxldmVs
181
+ IjoyLCJnZW5yZU5hbWUiOiJEVkQiLCJnZW5yZUlkIjoxMDEzNTR9LHsiZ2Vu
182
+ cmVMZXZlbCI6MiwiZ2VucmVOYW1lIjoiQmx1LXJheSIsImdlbnJlSWQiOjUw
183
+ NTAzNH0seyJnZW5yZUxldmVsIjoyLCJnZW5yZU5hbWUiOiJDRCIsImdlbnJl
184
+ SWQiOjEwMTMxMX0seyJnZW5yZUxldmVsIjoyLCJnZW5yZU5hbWUiOiLmpb3l
185
+ magiLCJnZW5yZUlkIjoxMTI0OTN9LHsiZ2VucmVMZXZlbCI6MiwiZ2VucmVO
186
+ YW1lIjoi44Os44Kz44O844OJIiwiZ2VucmVJZCI6MjAwNTMxfSx7ImdlbnJl
187
+ TGV2ZWwiOjIsImdlbnJlTmFtZSI6IuOCq+OCu+ODg+ODiCIsImdlbnJlSWQi
188
+ OjIwNTkwMH0seyJnZW5yZUxldmVsIjoyLCJnZW5yZU5hbWUiOiLjg5Pjg4fj
189
+ gqoiLCJnZW5yZUlkIjoxMDEzMjd9LHsiZ2VucmVMZXZlbCI6MiwiZ2VucmVO
190
+ YW1lIjoiTEQiLCJnZW5yZUlkIjoyMDA1MzJ9LHsiZ2VucmVMZXZlbCI6Miwi
191
+ Z2VucmVOYW1lIjoi44Gd44Gu5LuWIiwiZ2VucmVJZCI6MTEyOTYwfV0sImN1
192
+ cnJlbnQiOlt7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IkNE44O7RFZE
193
+ 44O75qW95ZmoIiwiZ2VucmVJZCI6MTAxMjQwfV0sInBhcmVudCI6W119fSwi
194
+ SGVhZGVyIjp7IlN0YXR1cyI6IlN1Y2Nlc3MiLCJBcmdzIjp7IkFyZyI6eyJh
195
+ cGlWZXJzaW9uIjp7ImNvbnRlbnQiOnRydWUsInZhbHVlIjoiMzAifSwib3Bl
196
+ cmF0aW9uIjp7ImNvbnRlbnQiOnRydWUsInZhbHVlIjoiR2VucmVTZWFyY2gi
197
+ fSwiZGV2ZWxvcGVySWQiOnsiY29udGVudCI6dHJ1ZSwidmFsdWUiOiI8REVW
198
+ RUxPUEVSX0lEPiJ9LCJnZW5yZUlkIjp7ImNvbnRlbnQiOnRydWUsInZhbHVl
199
+ IjoiMTAxMjQwIn0sInZlcnNpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUi
200
+ OiIyMDA3LTA0LTExIn19fSwiU3RhdHVzTXNnIjoiIn19
201
+ http_version:
202
+ recorded_at: Tue, 19 Jun 2012 16:20:02 GMT
203
+ - request:
204
+ method: get
205
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=204491&operation=GenreSearch&version=2007-04-11
206
+ body:
207
+ encoding: US-ASCII
208
+ string: ''
209
+ headers: {}
210
+ response:
211
+ status:
212
+ code: 200
213
+ message: !binary |-
214
+ T0s=
215
+ headers:
216
+ !binary "RGF0ZQ==":
217
+ - !binary |-
218
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMDowMiBHTVQ=
219
+ !binary "U2VydmVy":
220
+ - !binary |-
221
+ QXBhY2hl
222
+ Content-Length:
223
+ - !binary |-
224
+ OTY0
225
+ !binary "Q29ubmVjdGlvbg==":
226
+ - !binary |-
227
+ Y2xvc2U=
228
+ Content-Type:
229
+ - !binary |-
230
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
231
+ body:
232
+ encoding: ASCII-8BIT
233
+ string: !binary |-
234
+ eyJCb2R5Ijp7IkdlbnJlU2VhcmNoIjp7ImNoaWxkIjpbeyJnZW5yZUxldmVs
235
+ Ijo0LCJnZW5yZU5hbWUiOiLjg4njg6njg6DlvI8iLCJnZW5yZUlkIjo1NTA2
236
+ NDh9LHsiZ2VucmVMZXZlbCI6NCwiZ2VucmVOYW1lIjoi5YWo6Ieq5YuV77yI
237
+ 5Lm+54el5qmf6IO944GC44KK77yJIiwiZ2VucmVJZCI6MjExODM1fSx7Imdl
238
+ bnJlTGV2ZWwiOjQsImdlbnJlTmFtZSI6IuWFqOiHquWLle+8iOS5vueHpeap
239
+ n+iDveOBquOBl++8iSIsImdlbnJlSWQiOjIxMTg1MX0seyJnZW5yZUxldmVs
240
+ Ijo0LCJnZW5yZU5hbWUiOiIy5qe95byPIiwiZ2VucmVJZCI6MjExODU5fSx7
241
+ ImdlbnJlTGV2ZWwiOjQsImdlbnJlTmFtZSI6Iua0l+a/r+apn+mWoumAo+eU
242
+ qOWTgSIsImdlbnJlSWQiOjIxMTg3NH0seyJnZW5yZUxldmVsIjo0LCJnZW5y
243
+ ZU5hbWUiOiLjgZ3jga7ku5YiLCJnZW5yZUlkIjoxMDAxODB9XSwiY3VycmVu
244
+ dCI6W3siZ2VucmVMZXZlbCI6MywiZ2VucmVOYW1lIjoi5rSX5r+v5qmfIiwi
245
+ Z2VucmVJZCI6MjA0NDkxfV0sInBhcmVudCI6W3siZ2VucmVMZXZlbCI6MSwi
246
+ Z2VucmVOYW1lIjoi5a626Zu7IiwiZ2VucmVJZCI6NTYyNjM3fSx7ImdlbnJl
247
+ TGV2ZWwiOjIsImdlbnJlTmFtZSI6IueUn+a0u+WutumbuyIsImdlbnJlSWQi
248
+ OjIwNDIwMH1dfX0sIkhlYWRlciI6eyJTdGF0dXMiOiJTdWNjZXNzIiwiQXJn
249
+ cyI6eyJBcmciOnsiYXBpVmVyc2lvbiI6eyJjb250ZW50Ijp0cnVlLCJ2YWx1
250
+ ZSI6IjMwIn0sIm9wZXJhdGlvbiI6eyJjb250ZW50Ijp0cnVlLCJ2YWx1ZSI6
251
+ IkdlbnJlU2VhcmNoIn0sImRldmVsb3BlcklkIjp7ImNvbnRlbnQiOnRydWUs
252
+ InZhbHVlIjoiPERFVkVMT1BFUl9JRD4ifSwiZ2VucmVJZCI6eyJjb250ZW50
253
+ Ijp0cnVlLCJ2YWx1ZSI6IjIwNDQ5MSJ9LCJ2ZXJzaW9uIjp7ImNvbnRlbnQi
254
+ OnRydWUsInZhbHVlIjoiMjAwNy0wNC0xMSJ9fX0sIlN0YXR1c01zZyI6IiJ9
255
+ fQ==
256
+ http_version:
257
+ recorded_at: Tue, 19 Jun 2012 16:20:02 GMT
258
+ - request:
259
+ method: get
260
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=0&genrePath=0&operation=GenreSearch&version=2007-04-11
261
+ body:
262
+ encoding: US-ASCII
263
+ string: ''
264
+ headers: {}
265
+ response:
266
+ status:
267
+ code: 200
268
+ message: !binary |-
269
+ T0s=
270
+ headers:
271
+ !binary "RGF0ZQ==":
272
+ - !binary |-
273
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMDowMiBHTVQ=
274
+ !binary "U2VydmVy":
275
+ - !binary |-
276
+ QXBhY2hl
277
+ Content-Length:
278
+ - !binary |-
279
+ MzA2OA==
280
+ !binary "VmFyeQ==":
281
+ - !binary |-
282
+ QWNjZXB0LUVuY29kaW5n
283
+ !binary "Q29ubmVjdGlvbg==":
284
+ - !binary |-
285
+ Y2xvc2U=
286
+ Content-Type:
287
+ - !binary |-
288
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
289
+ body:
290
+ encoding: ASCII-8BIT
291
+ string: !binary |-
292
+ eyJCb2R5Ijp7IkdlbnJlU2VhcmNoIjp7ImNoaWxkIjpbeyJnZW5yZUxldmVs
293
+ IjoxLCJnZW5yZU5hbWUiOiJDROODu0RWROODu+alveWZqCIsImdlbnJlSWQi
294
+ OjEwMTI0MH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLjgqTjg7Pj
295
+ g4bjg6rjgqLjg7vlr53lhbfjg7vlj47ntI0iLCJnZW5yZUlkIjoxMDA4MDR9
296
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44GK44KC44Gh44KD44O7
297
+ 44Ob44OT44O844O744Ky44O844OgIiwiZ2VucmVJZCI6MTAxMTY0fSx7Imdl
298
+ bnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IuOCreODg+OCuuODu+ODmeODk+OD
299
+ vOODu+ODnuOCv+ODi+ODhuOCoyIsImdlbnJlSWQiOjEwMDUzM30seyJnZW5y
300
+ ZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLml6XnlKjlk4Hpm5Hosqjjg7vmlofm
301
+ iL/lhbfjg7vmiYvoirgiLCJnZW5yZUlkIjoyMTU3ODN9LHsiZ2VucmVMZXZl
302
+ bCI6MSwiZ2VucmVOYW1lIjoi44K444Ol44Ko44Oq44O844O744Ki44Kv44K7
303
+ 44K144Oq44O8IiwiZ2VucmVJZCI6MjE2MTI5fSx7ImdlbnJlTGV2ZWwiOjEs
304
+ ImdlbnJlTmFtZSI6IuOCueODneODvOODhOODu+OCouOCpuODiOODieOCoiIs
305
+ ImdlbnJlSWQiOjEwMTA3MH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUi
306
+ OiLjg4DjgqTjgqjjg4Pjg4jjg7vlgaXlurciLCJnZW5yZUlkIjoxMDA5Mzh9
307
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi5rC044O744K944OV44OI
308
+ 44OJ44Oq44Oz44KvIiwiZ2VucmVJZCI6MTAwMzE2fSx7ImdlbnJlTGV2ZWwi
309
+ OjEsImdlbnJlTmFtZSI6IuODkeOCveOCs+ODs+ODu+WRqOi+uuapn+WZqCIs
310
+ ImdlbnJlSWQiOjEwMDAyNn0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUi
311
+ OiLjg5Djg4PjgrDjg7vlsI/nianjg7vjg5bjg6njg7Pjg4npm5HosqgiLCJn
312
+ ZW5yZUlkIjoyMTYxMzF9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
313
+ 44Os44OH44Kj44O844K544OV44Kh44OD44K344On44OzIiwiZ2VucmVJZCI6
314
+ MTAwMzcxfSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IuiKseODu+OC
315
+ rOODvOODh+ODs+ODu0RJWSIsImdlbnJlSWQiOjEwMDAwNX0seyJnZW5yZUxl
316
+ dmVsIjoxLCJnZW5yZU5hbWUiOiLjg5rjg4Pjg4jjg7vjg5rjg4Pjg4jjgrDj
317
+ g4PjgroiLCJnZW5yZUlkIjoxMDEyMTN9LHsiZ2VucmVMZXZlbCI6MSwiZ2Vu
318
+ cmVOYW1lIjoiVFbjg7vjgqrjg7zjg4fjgqPjgqrjg7vjgqvjg6Hjg6kiLCJn
319
+ ZW5yZUlkIjoyMTE3NDJ9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
320
+ 6LuK44O744OQ44Kk44KvIiwiZ2VucmVJZCI6MTAxMTE0fSx7ImdlbnJlTGV2
321
+ ZWwiOjEsImdlbnJlTmFtZSI6Iumjn+WTgSIsImdlbnJlSWQiOjEwMDIyN30s
322
+ eyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLnvo7lrrnjg7vjgrPjgrnj
323
+ g6Hjg7vpppnmsLQiLCJnZW5yZUlkIjoxMDA5Mzl9LHsiZ2VucmVMZXZlbCI6
324
+ MSwiZ2VucmVOYW1lIjoi5pys44O76ZuR6KqM44O744Kz44Of44OD44KvIiwi
325
+ Z2VucmVJZCI6MjAwMTYyfSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6
326
+ IuaXheihjOODu+WHuuW8teODu+ODgeOCseODg+ODiCIsImdlbnJlSWQiOjEw
327
+ MTM4MX0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLkuI3li5XnlKPj
328
+ g7vkvY/jgb7jgYQiLCJnZW5yZUlkIjoyMDAxNjN9LHsiZ2VucmVMZXZlbCI6
329
+ MSwiZ2VucmVOYW1lIjoi5a2m44Gz44O744K144O844OT44K544O75L+d6Zm6
330
+ IiwiZ2VucmVJZCI6MTAxNDM4fSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFt
331
+ ZSI6IueZvuiyqOW6l+ODu+e3j+WQiOmAmuiyqeODu+OCruODleODiCIsImdl
332
+ bnJlSWQiOjEwMDAwMH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLj
333
+ g4fjgrjjgr/jg6vjgrPjg7Pjg4bjg7Pjg4QiLCJnZW5yZUlkIjo0MDI4NTN9
334
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi6LuK55So5ZOB44O744OQ
335
+ 44Kk44Kv55So5ZOBIiwiZ2VucmVJZCI6NTAzMTkwfSx7ImdlbnJlTGV2ZWwi
336
+ OjEsImdlbnJlTmFtZSI6IuOCpOODs+ODiuODvOODu+S4i+edgOODu+ODiuOC
337
+ pOODiOOCpuOCqOOCoiIsImdlbnJlSWQiOjEwMDQzM30seyJnZW5yZUxldmVs
338
+ IjoxLCJnZW5yZU5hbWUiOiLml6XmnKzphZLjg7vnhLzphY4iLCJnZW5yZUlk
339
+ Ijo1MTA5MDF9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44OT44O8
340
+ 44Or44O75rSL6YWSIiwiZ2VucmVJZCI6NTEwOTE1fSx7ImdlbnJlTGV2ZWwi
341
+ OjEsImdlbnJlTmFtZSI6IuOCueOCpOODvOODhOODu+OBiuiPk+WtkCIsImdl
342
+ bnJlSWQiOjU1MTE2N30seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLl
343
+ jLvolqzlk4Hjg7vjgrPjg7Pjgr/jgq/jg4jjg7vku4vorbciLCJnZW5yZUlk
344
+ Ijo1NTExNjl9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44Oh44Oz
345
+ 44K644OV44Kh44OD44K344On44OzIiwiZ2VucmVJZCI6NTUxMTc3fSx7Imdl
346
+ bnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IumdtCIsImdlbnJlSWQiOjU1ODg4
347
+ NX0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLohZXmmYLoqIgiLCJn
348
+ ZW5yZUlkIjo1NTg5Mjl9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
349
+ 44Kt44OD44OB44Oz55So5ZOB44O76aOf5Zmo44O76Kq/55CG5Zmo5YW3Iiwi
350
+ Z2VucmVJZCI6NTU4OTQ0fSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6
351
+ IuWutumbuyIsImdlbnJlSWQiOjU2MjYzN31dLCJjdXJyZW50IjpbXSwicGFy
352
+ ZW50IjpbXX19LCJIZWFkZXIiOnsiU3RhdHVzIjoiU3VjY2VzcyIsIkFyZ3Mi
353
+ OnsiQXJnIjp7ImFwaVZlcnNpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUi
354
+ OiIzMCJ9LCJvcGVyYXRpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUiOiJH
355
+ ZW5yZVNlYXJjaCJ9LCJkZXZlbG9wZXJJZCI6eyJjb250ZW50Ijp0cnVlLCJ2
356
+ YWx1ZSI6IjxERVZFTE9QRVJfSUQ+In0sImdlbnJlUGF0aCI6eyJjb250ZW50
357
+ Ijp0cnVlLCJ2YWx1ZSI6IjAifSwiZ2VucmVJZCI6eyJjb250ZW50Ijp0cnVl
358
+ LCJ2YWx1ZSI6IjAifSwidmVyc2lvbiI6eyJjb250ZW50Ijp0cnVlLCJ2YWx1
359
+ ZSI6IjIwMDctMDQtMTEifX19LCJTdGF0dXNNc2ciOiIifX0=
360
+ http_version:
361
+ recorded_at: Tue, 19 Jun 2012 16:20:02 GMT
362
+ - request:
363
+ method: get
364
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=204491&genrePath=0&operation=GenreSearch&version=2007-04-11
365
+ body:
366
+ encoding: US-ASCII
367
+ string: ''
368
+ headers: {}
369
+ response:
370
+ status:
371
+ code: 200
372
+ message: !binary |-
373
+ T0s=
374
+ headers:
375
+ !binary "RGF0ZQ==":
376
+ - !binary |-
377
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMDowMiBHTVQ=
378
+ !binary "U2VydmVy":
379
+ - !binary |-
380
+ QXBhY2hl
381
+ Content-Length:
382
+ - !binary |-
383
+ OTUw
384
+ !binary "Q29ubmVjdGlvbg==":
385
+ - !binary |-
386
+ Y2xvc2U=
387
+ Content-Type:
388
+ - !binary |-
389
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
390
+ body:
391
+ encoding: ASCII-8BIT
392
+ string: !binary |-
393
+ eyJCb2R5Ijp7IkdlbnJlU2VhcmNoIjp7ImNoaWxkIjpbeyJnZW5yZUxldmVs
394
+ Ijo0LCJnZW5yZU5hbWUiOiLjg4njg6njg6DlvI8iLCJnZW5yZUlkIjo1NTA2
395
+ NDh9LHsiZ2VucmVMZXZlbCI6NCwiZ2VucmVOYW1lIjoi5YWo6Ieq5YuV77yI
396
+ 5Lm+54el5qmf6IO944GC44KK77yJIiwiZ2VucmVJZCI6MjExODM1fSx7Imdl
397
+ bnJlTGV2ZWwiOjQsImdlbnJlTmFtZSI6IuWFqOiHquWLle+8iOS5vueHpeap
398
+ n+iDveOBquOBl++8iSIsImdlbnJlSWQiOjIxMTg1MX0seyJnZW5yZUxldmVs
399
+ Ijo0LCJnZW5yZU5hbWUiOiIy5qe95byPIiwiZ2VucmVJZCI6MjExODU5fSx7
400
+ ImdlbnJlTGV2ZWwiOjQsImdlbnJlTmFtZSI6Iua0l+a/r+apn+mWoumAo+eU
401
+ qOWTgSIsImdlbnJlSWQiOjIxMTg3NH0seyJnZW5yZUxldmVsIjo0LCJnZW5y
402
+ ZU5hbWUiOiLjgZ3jga7ku5YiLCJnZW5yZUlkIjoxMDAxODB9XSwiY3VycmVu
403
+ dCI6W3siZ2VucmVMZXZlbCI6MywiZ2VucmVOYW1lIjoi5rSX5r+v5qmfIiwi
404
+ Z2VucmVJZCI6MjA0NDkxfV0sInBhcmVudCI6W3siZ2VucmVMZXZlbCI6Miwi
405
+ Z2VucmVOYW1lIjoi55Sf5rS75a626Zu7IiwiZ2VucmVJZCI6MjA0MjAwfV19
406
+ fSwiSGVhZGVyIjp7IlN0YXR1cyI6IlN1Y2Nlc3MiLCJBcmdzIjp7IkFyZyI6
407
+ eyJhcGlWZXJzaW9uIjp7ImNvbnRlbnQiOnRydWUsInZhbHVlIjoiMzAifSwi
408
+ b3BlcmF0aW9uIjp7ImNvbnRlbnQiOnRydWUsInZhbHVlIjoiR2VucmVTZWFy
409
+ Y2gifSwiZGV2ZWxvcGVySWQiOnsiY29udGVudCI6dHJ1ZSwidmFsdWUiOiI8
410
+ REVWRUxPUEVSX0lEPiJ9LCJnZW5yZVBhdGgiOnsiY29udGVudCI6dHJ1ZSwi
411
+ dmFsdWUiOiIwIn0sImdlbnJlSWQiOnsiY29udGVudCI6dHJ1ZSwidmFsdWUi
412
+ OiIyMDQ0OTEifSwidmVyc2lvbiI6eyJjb250ZW50Ijp0cnVlLCJ2YWx1ZSI6
413
+ IjIwMDctMDQtMTEifX19LCJTdGF0dXNNc2ciOiIifX0=
414
+ http_version:
415
+ recorded_at: Tue, 19 Jun 2012 16:20:02 GMT
416
+ - request:
417
+ method: get
418
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=askdjfalsjdf&operation=GenreSearch&version=2007-04-11
419
+ body:
420
+ encoding: US-ASCII
421
+ string: ''
422
+ headers: {}
423
+ response:
424
+ status:
425
+ code: 200
426
+ message: !binary |-
427
+ T0s=
428
+ headers:
429
+ !binary "RGF0ZQ==":
430
+ - !binary |-
431
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMDowMiBHTVQ=
432
+ !binary "U2VydmVy":
433
+ - !binary |-
434
+ QXBhY2hl
435
+ Content-Length:
436
+ - !binary |-
437
+ NDIw
438
+ !binary "Q29ubmVjdGlvbg==":
439
+ - !binary |-
440
+ Y2xvc2U=
441
+ Content-Type:
442
+ - !binary |-
443
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
444
+ body:
445
+ encoding: ASCII-8BIT
446
+ string: !binary |-
447
+ eyJCb2R5IjpudWxsLCJIZWFkZXIiOnsiU3RhdHVzIjoiQ2xpZW50RXJyb3Ii
448
+ LCJBcmdzIjp7IkFyZyI6eyJhcGlWZXJzaW9uIjp7ImNvbnRlbnQiOnRydWUs
449
+ InZhbHVlIjoiMzAifSwib3BlcmF0aW9uIjp7ImNvbnRlbnQiOnRydWUsInZh
450
+ bHVlIjoiR2VucmVTZWFyY2gifSwiZGV2ZWxvcGVySWQiOnsiY29udGVudCI6
451
+ dHJ1ZSwidmFsdWUiOiI8REVWRUxPUEVSX0lEPiJ9LCJnZW5yZUlkIjp7ImNv
452
+ bnRlbnQiOmZhbHNlLCJ2YWx1ZSI6ImFza2RqZmFsc2pkZiJ9LCJ2ZXJzaW9u
453
+ Ijp7ImNvbnRlbnQiOnRydWUsInZhbHVlIjoiMjAwNy0wNC0xMSJ9fX0sIlN0
454
+ YXR1c01zZyI6ImdlbnJlSWTjg5Hjg6njg6Hjg7zjgr/jga825qGB5Lul5LiL
455
+ 44Gu5pWw5YCk44KS5oyH5a6a44GX44Gm44GP44Gg44GV44GE44CCIn19
456
+ http_version:
457
+ recorded_at: Tue, 19 Jun 2012 16:20:02 GMT
458
+ - request:
459
+ method: get
460
+ uri: http://api.rakuten.co.jp/rws/3.0/json?developerId=<DEVELOPER_ID>&genreId=0&genrePath=1&operation=GenreSearch&version=2007-04-11
461
+ body:
462
+ encoding: US-ASCII
463
+ string: ''
464
+ headers: {}
465
+ response:
466
+ status:
467
+ code: 200
468
+ message: !binary |-
469
+ T0s=
470
+ headers:
471
+ !binary "RGF0ZQ==":
472
+ - !binary |-
473
+ VHVlLCAxOSBKdW4gMjAxMiAxNjoyMjo0MiBHTVQ=
474
+ !binary "U2VydmVy":
475
+ - !binary |-
476
+ QXBhY2hl
477
+ Content-Length:
478
+ - !binary |-
479
+ MzA2OA==
480
+ !binary "VmFyeQ==":
481
+ - !binary |-
482
+ QWNjZXB0LUVuY29kaW5n
483
+ !binary "Q29ubmVjdGlvbg==":
484
+ - !binary |-
485
+ Y2xvc2U=
486
+ Content-Type:
487
+ - !binary |-
488
+ dGV4dC9odG1sO2NoYXJzZXQ9VVRGLTg=
489
+ body:
490
+ encoding: ASCII-8BIT
491
+ string: !binary |-
492
+ eyJCb2R5Ijp7IkdlbnJlU2VhcmNoIjp7ImNoaWxkIjpbeyJnZW5yZUxldmVs
493
+ IjoxLCJnZW5yZU5hbWUiOiJDROODu0RWROODu+alveWZqCIsImdlbnJlSWQi
494
+ OjEwMTI0MH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLjgqTjg7Pj
495
+ g4bjg6rjgqLjg7vlr53lhbfjg7vlj47ntI0iLCJnZW5yZUlkIjoxMDA4MDR9
496
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44GK44KC44Gh44KD44O7
497
+ 44Ob44OT44O844O744Ky44O844OgIiwiZ2VucmVJZCI6MTAxMTY0fSx7Imdl
498
+ bnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IuOCreODg+OCuuODu+ODmeODk+OD
499
+ vOODu+ODnuOCv+ODi+ODhuOCoyIsImdlbnJlSWQiOjEwMDUzM30seyJnZW5y
500
+ ZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLml6XnlKjlk4Hpm5Hosqjjg7vmlofm
501
+ iL/lhbfjg7vmiYvoirgiLCJnZW5yZUlkIjoyMTU3ODN9LHsiZ2VucmVMZXZl
502
+ bCI6MSwiZ2VucmVOYW1lIjoi44K444Ol44Ko44Oq44O844O744Ki44Kv44K7
503
+ 44K144Oq44O8IiwiZ2VucmVJZCI6MjE2MTI5fSx7ImdlbnJlTGV2ZWwiOjEs
504
+ ImdlbnJlTmFtZSI6IuOCueODneODvOODhOODu+OCouOCpuODiOODieOCoiIs
505
+ ImdlbnJlSWQiOjEwMTA3MH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUi
506
+ OiLjg4DjgqTjgqjjg4Pjg4jjg7vlgaXlurciLCJnZW5yZUlkIjoxMDA5Mzh9
507
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi5rC044O744K944OV44OI
508
+ 44OJ44Oq44Oz44KvIiwiZ2VucmVJZCI6MTAwMzE2fSx7ImdlbnJlTGV2ZWwi
509
+ OjEsImdlbnJlTmFtZSI6IuODkeOCveOCs+ODs+ODu+WRqOi+uuapn+WZqCIs
510
+ ImdlbnJlSWQiOjEwMDAyNn0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUi
511
+ OiLjg5Djg4PjgrDjg7vlsI/nianjg7vjg5bjg6njg7Pjg4npm5HosqgiLCJn
512
+ ZW5yZUlkIjoyMTYxMzF9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
513
+ 44Os44OH44Kj44O844K544OV44Kh44OD44K344On44OzIiwiZ2VucmVJZCI6
514
+ MTAwMzcxfSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IuiKseODu+OC
515
+ rOODvOODh+ODs+ODu0RJWSIsImdlbnJlSWQiOjEwMDAwNX0seyJnZW5yZUxl
516
+ dmVsIjoxLCJnZW5yZU5hbWUiOiLjg5rjg4Pjg4jjg7vjg5rjg4Pjg4jjgrDj
517
+ g4PjgroiLCJnZW5yZUlkIjoxMDEyMTN9LHsiZ2VucmVMZXZlbCI6MSwiZ2Vu
518
+ cmVOYW1lIjoiVFbjg7vjgqrjg7zjg4fjgqPjgqrjg7vjgqvjg6Hjg6kiLCJn
519
+ ZW5yZUlkIjoyMTE3NDJ9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
520
+ 6LuK44O744OQ44Kk44KvIiwiZ2VucmVJZCI6MTAxMTE0fSx7ImdlbnJlTGV2
521
+ ZWwiOjEsImdlbnJlTmFtZSI6Iumjn+WTgSIsImdlbnJlSWQiOjEwMDIyN30s
522
+ eyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLnvo7lrrnjg7vjgrPjgrnj
523
+ g6Hjg7vpppnmsLQiLCJnZW5yZUlkIjoxMDA5Mzl9LHsiZ2VucmVMZXZlbCI6
524
+ MSwiZ2VucmVOYW1lIjoi5pys44O76ZuR6KqM44O744Kz44Of44OD44KvIiwi
525
+ Z2VucmVJZCI6MjAwMTYyfSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6
526
+ IuaXheihjOODu+WHuuW8teODu+ODgeOCseODg+ODiCIsImdlbnJlSWQiOjEw
527
+ MTM4MX0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLkuI3li5XnlKPj
528
+ g7vkvY/jgb7jgYQiLCJnZW5yZUlkIjoyMDAxNjN9LHsiZ2VucmVMZXZlbCI6
529
+ MSwiZ2VucmVOYW1lIjoi5a2m44Gz44O744K144O844OT44K544O75L+d6Zm6
530
+ IiwiZ2VucmVJZCI6MTAxNDM4fSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFt
531
+ ZSI6IueZvuiyqOW6l+ODu+e3j+WQiOmAmuiyqeODu+OCruODleODiCIsImdl
532
+ bnJlSWQiOjEwMDAwMH0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLj
533
+ g4fjgrjjgr/jg6vjgrPjg7Pjg4bjg7Pjg4QiLCJnZW5yZUlkIjo0MDI4NTN9
534
+ LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi6LuK55So5ZOB44O744OQ
535
+ 44Kk44Kv55So5ZOBIiwiZ2VucmVJZCI6NTAzMTkwfSx7ImdlbnJlTGV2ZWwi
536
+ OjEsImdlbnJlTmFtZSI6IuOCpOODs+ODiuODvOODu+S4i+edgOODu+ODiuOC
537
+ pOODiOOCpuOCqOOCoiIsImdlbnJlSWQiOjEwMDQzM30seyJnZW5yZUxldmVs
538
+ IjoxLCJnZW5yZU5hbWUiOiLml6XmnKzphZLjg7vnhLzphY4iLCJnZW5yZUlk
539
+ Ijo1MTA5MDF9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44OT44O8
540
+ 44Or44O75rSL6YWSIiwiZ2VucmVJZCI6NTEwOTE1fSx7ImdlbnJlTGV2ZWwi
541
+ OjEsImdlbnJlTmFtZSI6IuOCueOCpOODvOODhOODu+OBiuiPk+WtkCIsImdl
542
+ bnJlSWQiOjU1MTE2N30seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLl
543
+ jLvolqzlk4Hjg7vjgrPjg7Pjgr/jgq/jg4jjg7vku4vorbciLCJnZW5yZUlk
544
+ Ijo1NTExNjl9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi44Oh44Oz
545
+ 44K644OV44Kh44OD44K344On44OzIiwiZ2VucmVJZCI6NTUxMTc3fSx7Imdl
546
+ bnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6IumdtCIsImdlbnJlSWQiOjU1ODg4
547
+ NX0seyJnZW5yZUxldmVsIjoxLCJnZW5yZU5hbWUiOiLohZXmmYLoqIgiLCJn
548
+ ZW5yZUlkIjo1NTg5Mjl9LHsiZ2VucmVMZXZlbCI6MSwiZ2VucmVOYW1lIjoi
549
+ 44Kt44OD44OB44Oz55So5ZOB44O76aOf5Zmo44O76Kq/55CG5Zmo5YW3Iiwi
550
+ Z2VucmVJZCI6NTU4OTQ0fSx7ImdlbnJlTGV2ZWwiOjEsImdlbnJlTmFtZSI6
551
+ IuWutumbuyIsImdlbnJlSWQiOjU2MjYzN31dLCJjdXJyZW50IjpbXSwicGFy
552
+ ZW50IjpbXX19LCJIZWFkZXIiOnsiU3RhdHVzIjoiU3VjY2VzcyIsIkFyZ3Mi
553
+ OnsiQXJnIjp7ImFwaVZlcnNpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUi
554
+ OiIzMCJ9LCJvcGVyYXRpb24iOnsiY29udGVudCI6dHJ1ZSwidmFsdWUiOiJH
555
+ ZW5yZVNlYXJjaCJ9LCJkZXZlbG9wZXJJZCI6eyJjb250ZW50Ijp0cnVlLCJ2
556
+ YWx1ZSI6IjxERVZFTE9QRVJfSUQ+In0sImdlbnJlUGF0aCI6eyJjb250ZW50
557
+ Ijp0cnVlLCJ2YWx1ZSI6IjEifSwiZ2VucmVJZCI6eyJjb250ZW50Ijp0cnVl
558
+ LCJ2YWx1ZSI6IjAifSwidmVyc2lvbiI6eyJjb250ZW50Ijp0cnVlLCJ2YWx1
559
+ ZSI6IjIwMDctMDQtMTEifX19LCJTdGF0dXNNc2ciOiIifX0=
560
+ http_version:
561
+ recorded_at: Tue, 19 Jun 2012 16:22:42 GMT
562
+ recorded_with: VCR 2.2.0
@@ -47,6 +47,11 @@ private
47
47
  transform_values! @response, response_values_to_transform
48
48
  end
49
49
 
50
+ def request_keys_to_transform; {} end
51
+ def request_values_to_transform; {} end
52
+ def response_keys_to_transform; {} end
53
+ def response_values_to_transform; {} end
54
+
50
55
  def transform_keys! hash, transformation_index
51
56
  transformation_index.each do |k,v|
52
57
  hash[v] = hash.delete(k) if hash.has_key?(k)
@@ -56,7 +61,7 @@ private
56
61
 
57
62
  def transform_values! hash, transformation_index
58
63
  transformation_index.each do |k,v|
59
- hash[k] = v[hash[k]] if hash[k] && v.has_key?(hash[k])
64
+ hash[k] = v[hash[k]] if hash.has_key?(k) && v.has_key?(hash[k])
60
65
  end
61
66
  hash
62
67
  end
@@ -0,0 +1,77 @@
1
+ module Rakumarket
2
+ class GenreSearchClient < Client
3
+
4
+ OPERATION = "GenreSearch"
5
+ VERSION = "2007-04-11"
6
+
7
+ VALID_REQUEST_KEYS = [
8
+ :developer_id,
9
+ :affiliate_id,
10
+ :operation,
11
+ :call_back,
12
+ :genre_id,
13
+ :version,
14
+ :return_immediate_parent
15
+ ]
16
+
17
+ REQUEST_KEYS_TO_TRANSFORM = {
18
+ :developer_id => :developerId,
19
+ :affiliate_id => :affiliateId,
20
+ :call_back => :callBack,
21
+ :genre_id => :genreId,
22
+ :return_immediate_parent => :genrePath
23
+ }
24
+
25
+ REQUEST_VALUES_TO_TRANSFORM = {
26
+ :genrePath => {false => 1, true => 0}
27
+ }
28
+
29
+ RESPONSE_GENRE_KEYS_TO_TRANSFORM = {
30
+ :genreId => :genre_id,
31
+ :genreName => :genre_name,
32
+ :itemCount => :item_count,
33
+ :genreLevel => :genre_level
34
+ }
35
+
36
+ private
37
+ def respond
38
+ @response = @response['Body']['GenreSearch']
39
+ super
40
+ end
41
+
42
+ def default_options
43
+ { :developer_id => @developer_id,
44
+ :operation => OPERATION,
45
+ :version => VERSION }
46
+ end
47
+
48
+ def transform_response_values!
49
+ custom_transform!(@response, 'parent'){|h,k| h[k].first }
50
+ custom_transform!(@response, 'current'){|h,k| h[k].first }
51
+ super
52
+ end
53
+
54
+ def transform_response_keys!
55
+ custom_transform(@response,'child'){|h,k| h[:children] = h.delete(k) }
56
+ @response['children'].each do |child|
57
+ transform_keys! child, RESPONSE_GENRE_KEYS_TO_TRANSFORM
58
+ end
59
+ transform_keys! @response['parent'], RESPONSE_GENRE_KEYS_TO_TRANSFORM if @response['parent']
60
+ transform_keys! @response['current'], RESPONSE_GENRE_KEYS_TO_TRANSFORM if @response['current']
61
+ super
62
+ end
63
+
64
+ def valid_request_keys
65
+ VALID_REQUEST_KEYS
66
+ end
67
+
68
+ def request_keys_to_transform
69
+ REQUEST_KEYS_TO_TRANSFORM
70
+ end
71
+
72
+ def request_values_to_transform
73
+ REQUEST_VALUES_TO_TRANSFORM
74
+ end
75
+
76
+ end
77
+ end
@@ -339,12 +339,6 @@ module Rakumarket
339
339
  :genreId => :genre_id
340
340
  }
341
341
 
342
- RESPONSE_GENRE_INFO_KEYS_TO_TRANSFORM = {
343
- :genreId => :genre_id,
344
- :genreName => :genre_name,
345
- :itemCount => :item_count,
346
- :genreLevel => :genre_level
347
- }
348
342
 
349
343
  private
350
344
  def respond
@@ -419,10 +413,10 @@ private
419
413
  genre_info = @response['genreInformation']
420
414
  custom_transform(genre_info,'child'){|h,k| h[:children] = h.delete(k) }
421
415
  genre_info['children'].each do |child|
422
- transform_keys! child, RESPONSE_GENRE_INFO_KEYS_TO_TRANSFORM
416
+ transform_keys! child, GenreSearchClient::RESPONSE_GENRE_KEYS_TO_TRANSFORM
423
417
  end
424
- transform_keys! genre_info['parent'], RESPONSE_GENRE_INFO_KEYS_TO_TRANSFORM if genre_info['parent']
425
- transform_keys! genre_info['current'], RESPONSE_GENRE_INFO_KEYS_TO_TRANSFORM if genre_info['current']
418
+ transform_keys! genre_info['parent'], GenreSearchClient::RESPONSE_GENRE_KEYS_TO_TRANSFORM if genre_info['parent']
419
+ transform_keys! genre_info['current'], GenreSearchClient::RESPONSE_GENRE_KEYS_TO_TRANSFORM if genre_info['current']
426
420
  end
427
421
 
428
422
  def default_options
@@ -1,3 +1,3 @@
1
1
  module Rakumarket
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/rakumarket.rb CHANGED
@@ -12,9 +12,9 @@ module Rakumarket
12
12
  Rakumarket::ItemSearchClient.new.request({:keyword => keyword}.merge(options).hashie_symbolify_keys!)
13
13
  end
14
14
 
15
- #def self.genre_search(genre_id, options={})
16
- # Rakumarket::GenreSearchClient.new.request({:genre_id => genre_id}.merge(options).hashie_symbolify_keys!)
17
- #end
15
+ def self.genre_search(genre_id=0, options={})
16
+ Rakumarket::GenreSearchClient.new.request({:genre_id => genre_id}.merge(options).hashie_symbolify_keys!)
17
+ end
18
18
 
19
19
  #def self.item_code_search(item_code, options={})
20
20
  # Rakumarket::ItemCodeSearchClient.new.request({:item_code => item_code}.merge(options).hashie_symbolify_keys!)
@@ -65,3 +65,4 @@ end
65
65
 
66
66
  require File.join(directory, 'rakumarket', 'client')
67
67
  require File.join(directory, 'rakumarket', 'item_search_client')
68
+ require File.join(directory, 'rakumarket', 'genre_search_client')
@@ -7,7 +7,7 @@ describe Rakumarket do
7
7
  {:keep => "this", :drop => "that"}.slice(:keep).should eq({:keep => "this"})
8
8
  end
9
9
 
10
- describe "GET item_search" do
10
+ describe "#item_search" do
11
11
  before do
12
12
  VCR.insert_cassette 'item_search', :record => :new_episodes
13
13
  end
@@ -119,7 +119,76 @@ describe Rakumarket do
119
119
  }.to raise_error(Rakumarket::RakumarketError)
120
120
  end
121
121
  end
122
+ end
123
+
124
+
125
+ describe "#genre_search" do
126
+ before do
127
+ VCR.insert_cassette 'genre_search', :record => :new_episodes
128
+ end
129
+
130
+ after do
131
+ VCR.eject_cassette
132
+ end
133
+
134
+ context "given a simple search" do
135
+ before do
136
+ @response = Rakumarket.genre_search
137
+ end
138
+ it "returns a list of items" do
139
+ @response.children.should be_a(Array)
140
+ end
141
+ it "returns a single parent" do
142
+ @response.parent.should_not be_a(Array)
143
+ end
144
+ it "returns a single current" do
145
+ @response.current.should_not be_a(Array)
146
+ end
147
+ it "returns genres with rubyish attributes" do
148
+ @response.children.first.genre_name.should eq('CD・DVD・楽器')
149
+ end
150
+ end
122
151
 
152
+ context "given a search with a genre id" do
153
+ before do
154
+ @response = Rakumarket.genre_search(101240)
155
+ end
156
+ it "returns a list of items" do
157
+ @response.children.should be_a(Array)
158
+ end
159
+ it "returns a single parent" do
160
+ @response.parent.should_not be_a(Array)
161
+ end
162
+ it "returns a single current" do
163
+ @response.current.should_not be_a(Array)
164
+ end
165
+ it "returns genres with rubyish attributes" do
166
+ @response.children.first.genre_name.should eq('DVD')
167
+ end
168
+ it "returns the topmost parent" do
169
+ response = Rakumarket.genre_search(204491)
170
+ response.parent.genre_name.should eq('家電')
171
+ end
172
+ end
173
+
174
+ context "given a search with parameters" do
175
+ it "accepts rubyish parameter names" do
176
+ response = Rakumarket.genre_search(0, :return_immediate_parent => false)
177
+ response.children.should be_present
178
+ end
179
+ it "returns the immediate parent" do
180
+ response = Rakumarket.genre_search(204491, :return_immediate_parent => true)
181
+ response.parent.genre_name.should eq('生活家電')
182
+ end
183
+ end
184
+
185
+ context "given a fruitless search" do
186
+ it "raises an error " do
187
+ expect{
188
+ items = Rakumarket.genre_search("askdjfalsjdf")
189
+ }.to raise_error(Rakumarket::RakumarketError)
190
+ end
191
+ end
123
192
  end
124
193
 
125
194
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakumarket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-18 00:00:00.000000000 Z
12
+ date: 2012-06-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
@@ -134,9 +134,11 @@ files:
134
134
  - Gemfile.lock
135
135
  - README.rdoc
136
136
  - Rakefile
137
+ - fixtures/vcr_casettes/genre_search.yml
137
138
  - fixtures/vcr_casettes/item_search.yml
138
139
  - lib/rakumarket.rb
139
140
  - lib/rakumarket/client.rb
141
+ - lib/rakumarket/genre_search_client.rb
140
142
  - lib/rakumarket/item_search_client.rb
141
143
  - lib/rakumarket/version.rb
142
144
  - rakumarket.gemspec