rakumarket 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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