anywayanyday_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8724eba4d910816441d9b44711202699f0279e20
4
+ data.tar.gz: e00ca63a5c42ba51459094e416ba3fff90f23b7f
5
+ SHA512:
6
+ metadata.gz: 97c8bda7fb5d8c9fe1fa4a1e9816b5185038e95f2685e9a66a89ae04585c93fc9ff79df673606059c3e7be813be408b161d1cf90ac0bddef10f6845681ebe13b
7
+ data.tar.gz: 7e0121858ec273bc2d5c57aaa0abaf267196c98e59185ce11d2f70822a140c68f1c9da080fff67ff21926a1bd51815d9a5761fa2313016ee4f70f0b505482989
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.idea/.name ADDED
@@ -0,0 +1 @@
1
+ anywayanyday_api
data/.idea/.rakeTasks ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build anywayanyday_api-0.0.1.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install anywayanyday_api-0.0.1.gem into system gems" fullCmd="install" taksId="install" /><RakeTask description="Create tag v0.0.1 and build and push anywayanyday_api-0.0.1.gem to Rubygems" fullCmd="release" taksId="release" /></RakeGroup></Settings>
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="FacetManager">
4
+ <facet type="gem" name="Ruby Gem">
5
+ <configuration>
6
+ <option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
7
+ <option name="GEM_APP_TEST_PATH" value="" />
8
+ <option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
9
+ </configuration>
10
+ </facet>
11
+ </component>
12
+ <component name="NewModuleRootManager">
13
+ <content url="file://$MODULE_DIR$" />
14
+ <orderEntry type="inheritedJdk" />
15
+ <orderEntry type="sourceFolder" forTests="false" />
16
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.7.7, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.24, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.2, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="mime-types (v2.6.2, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="netrc (v0.10.3, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="rake (v10.4.2, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="rest-client (v1.8.0, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.7.1, RVM: ruby-1.9.3-p551 [sso]) [gem]" level="application" />
25
+ </component>
26
+ </module>
data/.idea/misc.xml ADDED
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
4
+ <OptionsSetting value="true" id="Add" />
5
+ <OptionsSetting value="true" id="Remove" />
6
+ <OptionsSetting value="true" id="Checkout" />
7
+ <OptionsSetting value="true" id="Update" />
8
+ <OptionsSetting value="true" id="Status" />
9
+ <OptionsSetting value="true" id="Edit" />
10
+ <ConfirmationsSetting value="0" id="Add" />
11
+ <ConfirmationsSetting value="0" id="Remove" />
12
+ </component>
13
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p551 [sso]" project-jdk-type="RUBY_SDK" />
14
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/anywayanyday_api.iml" filepath="$PROJECT_DIR$/.idea/anywayanyday_api.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,366 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="54c30a9d-f8ab-4b7a-a6ad-13a95986f416" name="Default" comment="">
5
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.gitignore" />
6
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Gemfile" />
7
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/LICENSE.txt" />
8
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/README.md" />
9
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/Rakefile" />
10
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/anywayanyday_api.gemspec" />
11
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/anywayanyday_api.rb" />
12
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/anywayanyday_api/api.rb" />
13
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/anywayanyday_api/version.rb" />
14
+ </list>
15
+ <ignored path="anywayanyday_api.iws" />
16
+ <ignored path=".idea/workspace.xml" />
17
+ <ignored path=".idea/dataSources.local.xml" />
18
+ <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
19
+ <option name="TRACKING_ENABLED" value="true" />
20
+ <option name="SHOW_DIALOG" value="false" />
21
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
22
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
23
+ <option name="LAST_RESOLUTION" value="IGNORE" />
24
+ </component>
25
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
26
+ <component name="CreatePatchCommitExecutor">
27
+ <option name="PATCH_PATH" value="" />
28
+ </component>
29
+ <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
30
+ <component name="FavoritesManager">
31
+ <favorites_list name="anywayanyday_api" />
32
+ </component>
33
+ <component name="FileEditorManager">
34
+ <leaf>
35
+ <file leaf-file-name="anywayanyday_api.gemspec" pinned="false" current-in-tab="false">
36
+ <entry file="file://$PROJECT_DIR$/anywayanyday_api.gemspec">
37
+ <provider selected="true" editor-type-id="text-editor">
38
+ <state vertical-scroll-proportion="0.0">
39
+ <caret line="23" column="0" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
40
+ <folding />
41
+ </state>
42
+ </provider>
43
+ </entry>
44
+ </file>
45
+ <file leaf-file-name="anywayanyday_api.rb" pinned="false" current-in-tab="true">
46
+ <entry file="file://$PROJECT_DIR$/lib/anywayanyday_api.rb">
47
+ <provider selected="true" editor-type-id="text-editor">
48
+ <state vertical-scroll-proportion="0.056461733">
49
+ <caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
50
+ <folding />
51
+ </state>
52
+ </provider>
53
+ </entry>
54
+ </file>
55
+ <file leaf-file-name="api.rb" pinned="false" current-in-tab="false">
56
+ <entry file="file://$PROJECT_DIR$/lib/anywayanyday_api/api.rb">
57
+ <provider selected="true" editor-type-id="text-editor">
58
+ <state vertical-scroll-proportion="0.0">
59
+ <caret line="7" column="4" selection-start-line="7" selection-start-column="4" selection-end-line="7" selection-end-column="4" />
60
+ <folding />
61
+ </state>
62
+ </provider>
63
+ </entry>
64
+ </file>
65
+ </leaf>
66
+ </component>
67
+ <component name="Git.Settings">
68
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
69
+ </component>
70
+ <component name="IdeDocumentHistory">
71
+ <option name="CHANGED_PATHS">
72
+ <list>
73
+ <option value="$PROJECT_DIR$/anywayanyday_api.gemspec" />
74
+ <option value="$PROJECT_DIR$/lib/anywayanyday_api/api.rb" />
75
+ <option value="$PROJECT_DIR$/lib/anywayanyday_api.rb" />
76
+ </list>
77
+ </option>
78
+ </component>
79
+ <component name="JsBuildToolGruntFileManager" detection-done="true" />
80
+ <component name="JsGulpfileManager">
81
+ <detection-done>true</detection-done>
82
+ </component>
83
+ <component name="NamedScopeManager">
84
+ <order />
85
+ </component>
86
+ <component name="ProjectFrameBounds">
87
+ <option name="y" value="23" />
88
+ <option name="width" value="2560" />
89
+ <option name="height" value="1348" />
90
+ </component>
91
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
92
+ <OptionsSetting value="true" id="Add" />
93
+ <OptionsSetting value="true" id="Remove" />
94
+ <OptionsSetting value="true" id="Checkout" />
95
+ <OptionsSetting value="true" id="Update" />
96
+ <OptionsSetting value="true" id="Status" />
97
+ <OptionsSetting value="true" id="Edit" />
98
+ <ConfirmationsSetting value="2" id="Add" />
99
+ <ConfirmationsSetting value="0" id="Remove" />
100
+ </component>
101
+ <component name="ProjectView">
102
+ <navigator currentView="ProjectPane" proportions="" version="1">
103
+ <flattenPackages />
104
+ <showMembers />
105
+ <showModules />
106
+ <showLibraryContents />
107
+ <hideEmptyPackages />
108
+ <abbreviatePackageNames />
109
+ <autoscrollToSource />
110
+ <autoscrollFromSource />
111
+ <sortByType />
112
+ </navigator>
113
+ <panes>
114
+ <pane id="Scratches" />
115
+ <pane id="Scope" />
116
+ <pane id="ProjectPane">
117
+ <subPane>
118
+ <PATH>
119
+ <PATH_ELEMENT>
120
+ <option name="myItemId" value="anywayanyday_api" />
121
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
122
+ </PATH_ELEMENT>
123
+ </PATH>
124
+ <PATH>
125
+ <PATH_ELEMENT>
126
+ <option name="myItemId" value="anywayanyday_api" />
127
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
128
+ </PATH_ELEMENT>
129
+ <PATH_ELEMENT>
130
+ <option name="myItemId" value="anywayanyday_api" />
131
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
132
+ </PATH_ELEMENT>
133
+ </PATH>
134
+ <PATH>
135
+ <PATH_ELEMENT>
136
+ <option name="myItemId" value="anywayanyday_api" />
137
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
138
+ </PATH_ELEMENT>
139
+ <PATH_ELEMENT>
140
+ <option name="myItemId" value="anywayanyday_api" />
141
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
142
+ </PATH_ELEMENT>
143
+ <PATH_ELEMENT>
144
+ <option name="myItemId" value="lib" />
145
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
146
+ </PATH_ELEMENT>
147
+ </PATH>
148
+ <PATH>
149
+ <PATH_ELEMENT>
150
+ <option name="myItemId" value="anywayanyday_api" />
151
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
152
+ </PATH_ELEMENT>
153
+ <PATH_ELEMENT>
154
+ <option name="myItemId" value="anywayanyday_api" />
155
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
156
+ </PATH_ELEMENT>
157
+ <PATH_ELEMENT>
158
+ <option name="myItemId" value="lib" />
159
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
160
+ </PATH_ELEMENT>
161
+ <PATH_ELEMENT>
162
+ <option name="myItemId" value="anywayanyday_api" />
163
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
164
+ </PATH_ELEMENT>
165
+ </PATH>
166
+ </subPane>
167
+ </pane>
168
+ </panes>
169
+ </component>
170
+ <component name="PropertiesComponent">
171
+ <property name="WebServerToolWindowFactoryState" value="false" />
172
+ <property name="FullScreen" value="false" />
173
+ </component>
174
+ <component name="RunManager">
175
+ <configuration default="true" type="CucumberRunConfigurationType" factoryName="Cucumber">
176
+ <predefined_log_file id="RUBY_CUCUMBER" enabled="true" />
177
+ <module name="" />
178
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
179
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
180
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
181
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
182
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
183
+ <envs />
184
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
185
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
186
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
187
+ <COVERAGE_PATTERN ENABLED="true">
188
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
189
+ </COVERAGE_PATTERN>
190
+ </EXTENSION>
191
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
192
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*.feature" />
193
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
194
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
195
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
196
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TAGS_FILTER" VALUE="" />
197
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_NAME_FILTER" VALUE="" />
198
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_ARGS" VALUE="--color -r features" />
199
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
200
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
201
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="VERBOSE_OPTION" VALUE="false" />
202
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
203
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
204
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
205
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_RUNNER_PATH" VALUE="" />
206
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_RUNNER" VALUE="false" />
207
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SETTINGS_VERSION" VALUE="2" />
208
+ <method />
209
+ </configuration>
210
+ <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
211
+ <method />
212
+ </configuration>
213
+ <configuration default="true" type="RSpecRunConfigurationType" factoryName="RSpec">
214
+ <predefined_log_file id="RUBY_RSPEC" enabled="true" />
215
+ <module name="" />
216
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
217
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
218
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
219
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
220
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
221
+ <envs />
222
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
223
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
224
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
225
+ <COVERAGE_PATTERN ENABLED="true">
226
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
227
+ </COVERAGE_PATTERN>
228
+ </EXTENSION>
229
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
230
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
231
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
232
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
233
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
234
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
235
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
236
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
237
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
238
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
239
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
240
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
241
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
242
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
243
+ <method />
244
+ </configuration>
245
+ <configuration default="true" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
246
+ <predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
247
+ <module name="" />
248
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
249
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
250
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
251
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
252
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
253
+ <envs />
254
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
255
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
256
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
257
+ <COVERAGE_PATTERN ENABLED="true">
258
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
259
+ </COVERAGE_PATTERN>
260
+ </EXTENSION>
261
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
262
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
263
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
264
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
265
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
266
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
267
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
268
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
269
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
270
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
271
+ <method />
272
+ </configuration>
273
+ <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
274
+ <method />
275
+ </configuration>
276
+ </component>
277
+ <component name="ShelveChangesManager" show_recycled="false" />
278
+ <component name="SvnConfiguration">
279
+ <configuration />
280
+ </component>
281
+ <component name="TaskManager">
282
+ <task active="true" id="Default" summary="Default task">
283
+ <changelist id="54c30a9d-f8ab-4b7a-a6ad-13a95986f416" name="Default" comment="" />
284
+ <created>1443040348414</created>
285
+ <option name="number" value="Default" />
286
+ <updated>1443040348414</updated>
287
+ </task>
288
+ <servers />
289
+ </component>
290
+ <component name="ToolWindowManager">
291
+ <frame x="0" y="23" width="2560" height="1348" extended-state="6" />
292
+ <editor active="true" />
293
+ <layout>
294
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
295
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
296
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
297
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
298
+ <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
299
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25377283" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
300
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
301
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292683" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
302
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
303
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
304
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
305
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
306
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
307
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
308
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
309
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
310
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
311
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
312
+ </layout>
313
+ </component>
314
+ <component name="Vcs.Log.UiProperties">
315
+ <option name="RECENTLY_FILTERED_USER_GROUPS">
316
+ <collection />
317
+ </option>
318
+ <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
319
+ <collection />
320
+ </option>
321
+ </component>
322
+ <component name="VcsContentAnnotationSettings">
323
+ <option name="myLimit" value="2678400000" />
324
+ </component>
325
+ <component name="XDebuggerManager">
326
+ <breakpoint-manager />
327
+ <watches-manager />
328
+ </component>
329
+ <component name="editorHistoryManager">
330
+ <entry file="file://$PROJECT_DIR$/README.md">
331
+ <provider editor-type-id="MarkdownPreviewEditor">
332
+ <state />
333
+ </provider>
334
+ <provider selected="true" editor-type-id="text-editor">
335
+ <state vertical-scroll-proportion="0.0">
336
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
337
+ <folding />
338
+ </state>
339
+ </provider>
340
+ </entry>
341
+ <entry file="file://$PROJECT_DIR$/anywayanyday_api.gemspec">
342
+ <provider selected="true" editor-type-id="text-editor">
343
+ <state vertical-scroll-proportion="0.0">
344
+ <caret line="23" column="0" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
345
+ <folding />
346
+ </state>
347
+ </provider>
348
+ </entry>
349
+ <entry file="file://$PROJECT_DIR$/lib/anywayanyday_api/api.rb">
350
+ <provider selected="true" editor-type-id="text-editor">
351
+ <state vertical-scroll-proportion="0.0">
352
+ <caret line="7" column="4" selection-start-line="7" selection-start-column="4" selection-end-line="7" selection-end-column="4" />
353
+ <folding />
354
+ </state>
355
+ </provider>
356
+ </entry>
357
+ <entry file="file://$PROJECT_DIR$/lib/anywayanyday_api.rb">
358
+ <provider selected="true" editor-type-id="text-editor">
359
+ <state vertical-scroll-proportion="0.056461733">
360
+ <caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
361
+ <folding />
362
+ </state>
363
+ </provider>
364
+ </entry>
365
+ </component>
366
+ </project>
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in anywayanyday_api.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Alexey Gordienko
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,213 @@
1
+ # AnywayanydayApi (Redirect)
2
+
3
+ Ruby gem for Anywayanyday XML-API (https://www.anywayanyday.com/partners/#commissioner) Redirect.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'anywayanyday_api'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install anywayanyday_api
20
+
21
+ ## Usage
22
+
23
+ Create an initializer in config/initializers:
24
+
25
+ ```ruby
26
+ # config/initializers/anywayanyday_api.rb
27
+ Anywayanyday.configure do |config|
28
+ config.host = "http://api.anywayanyday.com/api"
29
+ config.code = "testapic"
30
+ config.currency = 'RUB'
31
+ config.locale = 'RU'
32
+ end
33
+
34
+ ```
35
+
36
+ where
37
+
38
+ * `host` - Address anywayanyday system, for test "http://api.anywayanyday.com/api"
39
+ * `code` - Your client id in anywayanyday system, for test "testapic"
40
+ * `currency` - Display Language Answer: RU, EN.
41
+ * `locale` - Value of the currency code view: RUB, USD, EUR, CHF, UAH.
42
+
43
+ And now in your controller you can do something like this:
44
+
45
+ ```ruby
46
+ @api = Anywayanyday.api
47
+ ```
48
+
49
+ ### Initialization request
50
+
51
+ To define a search query, you must transfer the parameters of the route, the number of passengers and class of service.
52
+
53
+ ```ruby
54
+ @api.fare_new_request(route: '2610DYRLON2811LONDYR', ad: 1, cn: 0, inf: 0, sc: 'E')
55
+ ```
56
+ Options:
57
+
58
+ * `route` - Route containing points of departure, arrival, departure date and month. The route may comprise several sections, each of which is a set of ten consecutive symbols:
59
+ two characters day of departure with a leading zero; two characters month departure with leading zero; IATA code of the city or airport of departure; IATA code of the city or airport of departure; three characters - IATA code for the city or the airport of arrival.
60
+ * `ad` - The number of adult passengers. A number from 1 to 6. The default value is 1.
61
+ * `cn` - The number of children aged 2 to 12 years. A number from 0 to 4. The default value is 0.
62
+ * `in` - The number of children aged from 2 weeks to 2 years. A number from 0 to 2. The default value is 0.
63
+ * `sc` - Class service. Accepted values: E (Economy), B (business / first). Default value: E.
64
+
65
+ Restrictions:
66
+
67
+ * The maximum number of route segments - 4.
68
+ * The total number of passengers must not exceed 8.
69
+
70
+ ### Details of the request
71
+
72
+ Getting parts search.
73
+
74
+ ```ruby
75
+ data = @api.fare_request_info
76
+ puts [data.ad, data.cn, data.in, data.sc].join(', ')
77
+ data.directions.each do |direction|
78
+ puts [direction.route, direction.dc, direction.dp, direction.ac, direction.ap, direction.dd].join(', ')
79
+ end
80
+ ```
81
+
82
+ Sample answer:
83
+
84
+ ```ruby
85
+ #<OpenStruct ad="1", cn="0", in="0", sc="E", directions=[#<OpenStruct route="DYRMOW", dc="Россия", dp="Анадырь", ac="Россия", ap="Москва", dd=Mon, 26 Oct 2015>, #<OpenStruct route="MOWDYR", dc="Россия", dp="Москва", ac="Россия", ap="Анадырь", dd=Sun, 29 Nov 2015>]>
86
+ ```
87
+
88
+
89
+ ### Status of the search
90
+
91
+ Obtaining the status of the search query. The recommended interval request - every 2 seconds.
92
+ Returns the exit status of the search terms the percentage (0 to 100).
93
+
94
+ ```ruby
95
+ loop do
96
+ break if @api.fare_request_state == 100
97
+ sleep 2
98
+ end
99
+ ```
100
+
101
+ ### Search results
102
+
103
+ Preparation of the search result. Rates are grouped by the airlines.
104
+
105
+ ```ruby
106
+ @api.fares(s:, vb:, bc1:, dt1:, at1:, da1:, aa1:, ps:, pn:, ct:, pt:)
107
+ ```
108
+
109
+ Required parameters:
110
+
111
+ * `s` - Sorting: Price - the price (default); Time - the time in a way.
112
+ * `vb` - Method of displaying information on the rate of: false - a short (default) true - detailed
113
+
114
+ Not required parameters:
115
+
116
+ * `bc1` - Filter on the number of direct.
117
+ * `dt1` - Filter by time of departure: N - night; M - morning; D - day; E - evening.
118
+ * `at1` - Filter by time of arrival: N - night; M - morning; D - day; E - evening.
119
+ * `da1` - Filter on the departure airport, IATA airport code.
120
+ * `aa1` - Filter of the arrival airport, IATA airport code.
121
+ * `ps` - The size of the search results page (for the method List; recommended to refine the search query one request; pager, can be disabled in the future).
122
+ * `pn` - Number of the search results page (for the method List; recommended to refine the search query one request; pager, can be disabled in the future).
123
+ * `ct` - Filter the type of flight: All - all options (default) Direct - only direct flights
124
+ * `pt` - Type Price: All - the price for all passengers (default value); Adult - the price per adult; Filter options necessarily contain indeks.Indeks determines which section of the route filter is applied.
125
+
126
+ Sample answer:
127
+
128
+ ```ruby
129
+ #<OpenStruct c="RUB", l="RU", r="66p5ck6aj73153", pt=nil, ct="All", airlines=[#<OpenStruct c="UN", n="Transaero Airlines", fares=[#<OpenStruct id="0", at="57101", avl="true", res="true", mm="false", mmc="", cs="0", sts="unknown", dirs=[#<OpenStruct dep_apt="DYR", arr_apt="DME", sep_tm="D", arr_tm="D", hr="8", min="25", brd_cng="0", flt_num="UN-112">, #<OpenStruct dep_apt="DME", arr_apt="DYR", sep_tm="E", arr_tm="D", hr="8", min="20", brd_cng="0", flt_num="UN-111">]>, #<OpenStruct id="4", at="62645", avl="true", res="true", mm="false", mmc="", cs="0", sts="2", dirs=[#<OpenStruct dep_apt="DYR", arr_apt="DME", sep_tm="D", arr_tm="D", hr="8", min="25", brd_cng="0", flt_num="UN-112">, #<OpenStruct dep_apt="DME", arr_apt="DYR", sep_tm="E", arr_tm="D", hr="8", min="20", brd_cng="0", flt_num="UN-111">]>]>]>
130
+ ```
131
+
132
+ ### Details of the flight options
133
+
134
+ Get detailed information on the selected tariff.
135
+
136
+ ```ruby
137
+ @api.fare_detail(f:)
138
+ ```
139
+
140
+ Options:
141
+
142
+ * `f` - Key tariff.
143
+
144
+ Sample answer:
145
+
146
+ ```ruby
147
+ #<OpenStruct currency="RUB", available="True", r="b77y705842G3df", f="4", v="", can_make_reservation="true", mm="false", mmc="", cs="0", total_amount="62645", need_middle_name="false", min_avail_seats="2", adults="1", children="0", infants="0", airline_code="UN", airline_name="Transaero Airlines", reservation_time_limit=2015-09-29 19:59:00 +1200, a_base="50270", a_taxes="11720", a_total="61990", c_base="0", c_taxes="0", c_total="0", i_base="0", i_taxes="0", i_total="0", dirs=[#<OpenStruct variants=[#<OpenStruct id="0", tt="08:25", legs=[#<OpenStruct sc="E", bc="V", fn="UN-112", ft="08:25", plane_code="763", plane_name="Boeing 767", carrier_code=nil, carrier_name=nil, departure_code="DYR", departure_contry="Россия", departure_city="Анадырь", departure_airport="Анадырь", departure_terminal=nil, departure_date="2015-10-26", departure_time="15:25", departure_day_of_week="Monday", arrival_code="DME", arrival_contry="Россия", arrival_city="Москва", arrival_airport="Домодедово", arrival_terminal=nil, arrival_date="2015-10-26", arrival_time="14:50", arrival_day_of_week="Monday">]>]>, #<OpenStruct variants=[#<OpenStruct id="1", tt="08:20", legs=[#<OpenStruct sc="E", bc="V", fn="UN-111", ft="08:20", plane_code="763", plane_name="Boeing 767", carrier_code=nil, carrier_name=nil, departure_code="DME", departure_contry="Россия", departure_city="Москва", departure_airport="Домодедово", departure_terminal=nil, departure_date="2015-11-29", departure_time="19:05", departure_day_of_week="Sunday", arrival_code="DYR", arrival_contry="Россия", arrival_city="Анадырь", arrival_airport="Анадырь", arrival_terminal=nil, arrival_date="2015-11-30", arrival_time="12:25", arrival_day_of_week="Monday">]>]>]>
148
+ ```
149
+
150
+ ### Fare rules
151
+
152
+ Get the right fare. Possibility and conditions of the return and exchange.
153
+
154
+ ```ruby
155
+ @api.fare_rules(f:)
156
+ ```
157
+
158
+ Options:
159
+
160
+ * `f` - Key tariff.
161
+
162
+ Sample answer:
163
+
164
+ ```ruby
165
+ #<OpenStruct directions=[#<OpenStruct cbd="true", cad="true", rbd="false", rad="false", dep_ctry="Россия", dep_city="Анадырь", dep_apt="Анадырь", arr_ctry="MOW", arr_city="MOW", arr_apt="MOW", rules="RULES TEXT...">, #<OpenStruct cbd="true", cad="true", rbd="false", rad="false", dep_ctry="MOW", dep_city="MOW", dep_apt="MOW", arr_ctry="Россия", arr_city="Анадырь", arr_apt="Анадырь", rules="RULES TEXT...">]
166
+ ```
167
+
168
+
169
+ ### Check availability of flight options
170
+
171
+ Check availability on selected flights.
172
+
173
+ ```ruby
174
+ @api.confirm_fare(f:, v:)
175
+ ```
176
+
177
+ Options:
178
+
179
+ * `f` - Key tariff.
180
+ * `v` - Selected options, if there are several options, the version numbers must be separated by a ";".
181
+
182
+ Sample answer:
183
+
184
+ ```ruby
185
+ #<OpenStruct r="SYM465FV4Dd53f", f="0", confirmed="True", min_avail_seats="1">
186
+ ```
187
+
188
+ ### Getting a link to create order
189
+
190
+ Returns the URL to which you want to redirect the buyer if the contract involves design affiliate purchases online anywayanyday.
191
+
192
+ ```ruby
193
+ @api.get_create_order_url(f:, v:)
194
+ ```
195
+
196
+ Options:
197
+
198
+ * `f` - Key tariff.
199
+ * `v` - Selections; in the case of several options, the version numbers must be separated by a ";".
200
+
201
+ Sample answer:
202
+
203
+ ```ruby
204
+ https://www.anywayanyday.com/avia/makeorder/2610DYRMOW2911MOWDYRAD1CN0IN0SCE/DYR1525U825N112E1450DME-DME1905U820N111E11225DYR/RUB61761/65BFBE2C5C30811A747A3377458B70748AE63A66624582E7669138CF1543ABA5?RequestId=zHH06NF632Ycd5&FareId=1&SegmentId=0;1&FareConfirmed=False&Language=RU&Currency=RUB
205
+ ```
206
+
207
+ ## Contributing
208
+
209
+ 1. Fork it ( https://github.com/gordienko/anywayanyday_api/fork )
210
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
211
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
212
+ 4. Push to the branch (`git push origin my-new-feature`)
213
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'anywayanyday_api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "anywayanyday_api"
8
+ spec.version = AnywayanydayApi::VERSION
9
+ spec.authors = ["Alexey Gordienko"]
10
+ spec.email = ["alx@anadyr.org"]
11
+ spec.summary = %q{Anywayanyday API (Redirect)}
12
+ spec.description = %q{Ruby gem for Anywayanyday API Redirect.}
13
+ spec.homepage = "http://github.com/gordienko/anywayanyday_api"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+ spec.add_dependency 'rest-client'
21
+ spec.add_dependency 'nokogiri'
22
+ spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ end
@@ -0,0 +1,33 @@
1
+ require 'rest_client'
2
+ require 'nokogiri'
3
+
4
+ require 'anywayanyday_api/request'
5
+ require 'anywayanyday_api/version'
6
+ require 'anywayanyday_api/fare'
7
+ require 'anywayanyday_api/api'
8
+ require 'anywayanyday_api/error'
9
+
10
+ class Hash
11
+ def to_query(namespace = nil)
12
+ collect do |key, value|
13
+ value.to_query(namespace ? "#{namespace}[#{key}]" : key)
14
+ end.sort * '&'
15
+ end
16
+ end
17
+
18
+ module Anywayanyday
19
+ class << self
20
+
21
+ def configure
22
+ yield config
23
+ end
24
+
25
+ def config
26
+ @config ||= OpenStruct.new {}
27
+ end
28
+
29
+ def api(config = {})
30
+ Anywayanyday::Api.new(config)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,16 @@
1
+ module Anywayanyday
2
+ class Api
3
+ include Anywayanyday::Api::Request
4
+ include Anywayanyday::Api::Fare
5
+
6
+ attr_reader :config
7
+ attr_accessor :request_id
8
+
9
+ def initialize(config = {})
10
+ @config = Anywayanyday.config
11
+ for k,v in config
12
+ @config[k.to_sym] = v
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,6 @@
1
+ module Anywayanyday
2
+ class Error < RestClient::Exception
3
+ end
4
+ class AnywayanydayError < Exception
5
+ end
6
+ end
@@ -0,0 +1,124 @@
1
+ module Anywayanyday
2
+ class Api
3
+ module Fare
4
+
5
+ # NewRequest - Инициализация запроса
6
+ def fare_new_request(route:, ad: 0, cn: 0, inf: 0, sc: 0)
7
+ data = request 'NewRequest', {route: route, ad: ad, cn: cn, sc: sc, in: inf, partner: config.code}
8
+ @request_id = data['Id']
9
+ end
10
+
11
+ # RequestInfo - Детали запроса
12
+ def fare_request_info
13
+ data = request 'RequestInfo', {r: request_id, l: config.locale}
14
+ ds = []
15
+ data.xpath('Direction').each do |a|
16
+ ds << OpenStruct.new(route: a['Route'], dc: a['DC'], dp: a['DP'], ac: a['AC'], ap: a['AP'], dd: a['DD'].to_date)
17
+ end
18
+ OpenStruct.new(ad: data['AD'], cn: data['CN'], in: data['IN'], sc: data['SC'], directions: ds)
19
+ end
20
+
21
+ # RequestState - Статус поиска
22
+ def fare_request_state
23
+ data = request 'RequestState', {r: request_id}
24
+ data['Completed'].to_i
25
+ end
26
+
27
+ # Fares - Результат поиска
28
+ def fares(s: 'Price', vb: false,
29
+ bc1: nil, dt1: nil, at1: nil, da1: nil, aa1: nil, ps: nil, pn: nil, ct: 'All', pt: 'All')
30
+ data = request 'Fares', {r: request_id, v: 'Matrix', l: config.locale, c: config.currency, s: s, vb: vb,
31
+ bc1: bc1, dt1: dt1, at1: at1, da1: da1, aa1: aa1, ps: ps, pn: pn, ct: ct, pt: pt}
32
+ airlines = []
33
+ data.xpath('Arln').each do |a|
34
+ fares = []
35
+ a.xpath('Fare').each do |f|
36
+ dirs = []
37
+ f.xpath('Dir').each do |d|
38
+ dirs << OpenStruct.new(dep_apt: d["DepApt"], arr_apt: d["ArrApt"], sep_tm: d["DepTm"], arr_tm: d["ArrTm"], hr: d["Hr"], min: d["Min"], brd_cng: d["BrdCng"], flt_num: d["FltNum"])
39
+ end
40
+ fares << OpenStruct.new(id: f['Id'], at: f['AT'], avl: f['Avl'], res: f['Res'], mm: f['MM'], mmc: f['MMC'], cs: f['CS'], sts: f['Sts'], dirs: dirs)
41
+ end
42
+ airlines << OpenStruct.new(c: a['C'], n: a['N'], fares: fares)
43
+ end
44
+ OpenStruct.new(c: data['C'], l: data['L'], r: data['R'], pt: data['P'], ct: data['CT'], airlines: airlines)
45
+ end
46
+
47
+ # Fare - Детали варианта перелета
48
+ def fare_detail(f:)
49
+ data = request 'Fare', {r: request_id, f: f}
50
+ passengers = data.xpath('Passengers').first
51
+ airline = data.xpath('Airline').first
52
+ reservation_time_limit_tmp = data.xpath('ReservationTimeLimit').first
53
+ reservation_time_limit = Time.parse([reservation_time_limit_tmp['Date'], reservation_time_limit_tmp['Time']].join(" "))
54
+ amount = data.xpath('Amount').first
55
+
56
+ dirs = []
57
+ data.xpath('Dir').each do |d|
58
+ variants = []
59
+ d.xpath('Variant').each do |v|
60
+ legs = []
61
+ v.xpath('Leg').each do |l|
62
+ carrier = l.xpath('Carrier').first
63
+ plane = l.xpath('Plane').first
64
+ departure = l.xpath('Departure').first
65
+ arrival = l.xpath('Arrival').first
66
+ legs << OpenStruct.new(sc: l["SC"], bc: l["BC"], fn: l["FN"], ft: l["FT"], plane_code: plane['C'],
67
+ plane_name: plane['N'], carrier_code: carrier.try('C'), carrier_name: carrier.try('N'),
68
+ departure_code: departure["Code"],
69
+ departure_contry: departure["Contry"], departure_city: departure["City"],
70
+ departure_airport: departure["Airport"], departure_terminal: departure["Terminal"],
71
+ departure_date: departure["Date"], departure_time: departure["Time"],
72
+ departure_day_of_week: departure["DayOfWeek"], arrival_code: arrival["Code"],
73
+ arrival_contry: arrival["Contry"], arrival_city: arrival["City"],
74
+ arrival_airport: arrival["Airport"], arrival_terminal: arrival["Terminal"],
75
+ arrival_date: arrival["Date"], arrival_time: arrival["Time"],
76
+ arrival_day_of_week: arrival["DayOfWeek"])
77
+ end
78
+ variants << OpenStruct.new(id: v['Id'], tt: v['TT'], legs: legs)
79
+ end
80
+ dirs << OpenStruct.new(variants: variants)
81
+ end
82
+ OpenStruct.new(currency: data["Currency"], available: data["Available"], r: data["R"], f: data["F"],
83
+ v: data["V"], can_make_reservation: data["CanMakeReservation"], mm: data["MM"], mmc: data["MMC"],
84
+ cs: data["CS"], total_amount: data["TotalAmount"], need_middle_name: data["NeedMiddleName"],
85
+ min_avail_seats: data["MinAvailSeats"], adults: passengers['Adults'], children: passengers['Children'],
86
+ infants: passengers['Infants'], airline_code: airline['C'], airline_name: airline['N'],
87
+ reservation_time_limit: reservation_time_limit, a_base: amount["ABase"], a_taxes: amount["ATaxes"],
88
+ a_total: amount["ATotal"], c_base: amount["CBase"], c_taxes: amount["CTaxes"], c_total: amount["CTotal"],
89
+ i_base: amount["IBase"], i_taxes: amount["ITaxes"], i_total: amount["ITotal"], dirs: dirs)
90
+ end
91
+
92
+ # FareRules - Правила применения тарифа
93
+ def fare_rules(f:)
94
+ directions = []
95
+ data = request 'FareRules', {r: request_id, f: f, l: config.locale}
96
+ data.xpath('Direction').each do |d|
97
+ h=d.xpath('Header').first
98
+ dep = h.xpath('Dep').first
99
+ arr = h.xpath('Arr').first
100
+ r=d.xpath('Rules').first.text
101
+ directions << OpenStruct.new(cbd: h["CBD"], cad: h["CAD"], rbd: h["RBD"], rad: h["RAD"],
102
+ dep_ctry: dep["Ctry"], dep_city: dep["City"], dep_apt: dep["Apt"],
103
+ arr_ctry: arr["Ctry"], arr_city: arr["City"], arr_apt: arr["Apt"],
104
+ rules: r)
105
+ end
106
+ OpenStruct.new(directions: directions)
107
+ end
108
+
109
+ # ConfirmFare - Проверка доступности варианта перелета
110
+ def confirm_fare(f:, v:)
111
+ data = request 'ConfirmFare', {r: request_id, f: f, v: v}
112
+ OpenStruct.new(r: data["R"], f: data["F"], confirmed: data["Confirmed"], min_avail_seats: data["MinAvailSeats"])
113
+ end
114
+
115
+ # GetCreateOrderURL - Получение ссылки на страницу создания заказа сайта www.anywayanyday.com
116
+ def get_create_order_url(f:, v:)
117
+ data = request 'GetCreateOrderURL', {r: request_id, f: f, v: v, l: config.locale, c: config.currency}
118
+ data['URL']
119
+ end
120
+
121
+ end
122
+ end
123
+ end
124
+
@@ -0,0 +1,24 @@
1
+ module Anywayanyday
2
+ class Api
3
+ module Request
4
+ def request(resource, params)
5
+ url = [config.host, resource, nil].join('/')
6
+ params = Hash[params.map{|k,v| [k.to_s.size < 4 ? k.to_s.upcase : k.to_s.capitalize,v]}]
7
+ response = RestClient.get url, {:params => params}
8
+ # puts response.to_str
9
+ data = Nokogiri::XML(response.to_str).root
10
+ error_message = data['Error']
11
+ if error_message
12
+ err = Error.new
13
+ err.message = error_message
14
+ raise AnywayanydayError, err
15
+ end
16
+ data
17
+ rescue RestClient::Exception => e
18
+ err = Error.new(e.response, e.http_code)
19
+ err.message = e.message
20
+ raise err
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ module AnywayanydayApi
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: anywayanyday_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alexey Gordienko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: Ruby gem for Anywayanyday API Redirect.
70
+ email:
71
+ - alx@anadyr.org
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".idea/.name"
78
+ - ".idea/.rakeTasks"
79
+ - ".idea/anywayanyday_api.iml"
80
+ - ".idea/misc.xml"
81
+ - ".idea/modules.xml"
82
+ - ".idea/vcs.xml"
83
+ - ".idea/workspace.xml"
84
+ - Gemfile
85
+ - LICENSE.txt
86
+ - README.md
87
+ - Rakefile
88
+ - anywayanyday_api.gemspec
89
+ - lib/anywayanyday_api.rb
90
+ - lib/anywayanyday_api/api.rb
91
+ - lib/anywayanyday_api/error.rb
92
+ - lib/anywayanyday_api/fare.rb
93
+ - lib/anywayanyday_api/request.rb
94
+ - lib/anywayanyday_api/version.rb
95
+ homepage: http://github.com/gordienko/anywayanyday_api
96
+ licenses:
97
+ - MIT
98
+ metadata: {}
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 2.4.5.1
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: Anywayanyday API (Redirect)
119
+ test_files: []