parse-ruby-client 0.2.0 → 0.3.0

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.
Files changed (49) hide show
  1. checksums.yaml +15 -0
  2. data/.travis.yml +2 -1
  3. data/Gemfile +4 -6
  4. data/Gemfile.lock +18 -18
  5. data/README.md +1 -1
  6. data/Rakefile +1 -1
  7. data/VERSION +1 -1
  8. data/example.rb +2 -1
  9. data/fixtures/vcr_cassettes/test_batch_update_nils_delete_keys.yml +57 -0
  10. data/fixtures/vcr_cassettes/test_empty_response.yml +72 -0
  11. data/fixtures/vcr_cassettes/test_get_missing.yml +95 -38
  12. data/fixtures/vcr_cassettes/test_image_file_associate_with_object.yml +2089 -0
  13. data/fixtures/vcr_cassettes/test_image_file_save.yml +1928 -0
  14. data/fixtures/vcr_cassettes/test_object_id.yml +56 -0
  15. data/fixtures/vcr_cassettes/test_reset_password.yml +109 -0
  16. data/fixtures/vcr_cassettes/test_retries.yml +357 -0
  17. data/fixtures/vcr_cassettes/test_retries_404.yml +72 -0
  18. data/fixtures/vcr_cassettes/test_retries_404_correct.yml +72 -0
  19. data/fixtures/vcr_cassettes/test_retries_json_error.yml +357 -0
  20. data/fixtures/vcr_cassettes/test_retries_server_error.yml +357 -0
  21. data/fixtures/vcr_cassettes/test_server_update.yml +248 -191
  22. data/fixtures/vcr_cassettes/test_user_login.yml +276 -0
  23. data/fixtures/vcr_cassettes/test_xget.yml +280 -0
  24. data/lib/faraday/better_retry.rb +94 -0
  25. data/lib/faraday/extended_parse_json.rb +39 -0
  26. data/lib/faraday/get_method_override.rb +32 -0
  27. data/lib/parse-ruby-client.rb +9 -9
  28. data/lib/parse/batch.rb +2 -3
  29. data/lib/parse/client.rb +72 -161
  30. data/lib/parse/cloud.rb +2 -1
  31. data/lib/parse/datatypes.rb +6 -1
  32. data/lib/parse/error.rb +7 -3
  33. data/lib/parse/installation.rb +18 -0
  34. data/lib/parse/model.rb +2 -1
  35. data/lib/parse/object.rb +7 -1
  36. data/lib/parse/protocol.rb +10 -0
  37. data/lib/parse/push.rb +3 -0
  38. data/lib/parse/query.rb +5 -2
  39. data/lib/parse/user.rb +1 -0
  40. data/lib/parse/util.rb +2 -0
  41. data/parse-ruby-client.gemspec +35 -15
  42. data/test/helper.rb +55 -1
  43. data/test/middleware/better_retry_test.rb +57 -0
  44. data/test/middleware/extend_parse_json_test.rb +55 -0
  45. data/test/test_client.rb +78 -28
  46. data/test/test_datatypes.rb +14 -0
  47. data/test/test_object.rb +16 -0
  48. metadata +39 -34
  49. data/lib/parse/http_client.rb +0 -84
@@ -1,84 +0,0 @@
1
- module Parse
2
- class HttpClient
3
- class TimeoutError < StandardError; end
4
-
5
- attr_accessor :base_url, :headers
6
-
7
- def initialize(base_url=nil, headers = {})
8
- @base_url = base_url
9
- @headers = headers
10
- end
11
-
12
- def build_query(hash)
13
- hash.to_a.map{|k, v| "#{k}=#{v}"}.join('&')
14
- end
15
-
16
- def request(method, uri, headers, options)
17
- NotImplementedError.new("Subclass responsibility")
18
- end
19
- end
20
-
21
- class NetHttpClient < HttpClient
22
- class NetHttpResponseWrapper
23
- def initialize(response) @response = response end
24
- def status() @response.code.to_i end
25
- def body() @response.read_body end
26
- end
27
-
28
- def request(method, uri, headers, options)
29
- request_class = eval("Net::HTTP::#{method.to_s.capitalize}")
30
- uri = "#{uri}?#{options[:query]}" if options[:query]
31
- request = request_class.new(uri, @headers.dup.update(headers))
32
- request.body = options[:data] if options.has_key?(:data)
33
- NetHttpResponseWrapper.new(
34
- @client.start do
35
- @client.request(request)
36
- end
37
- )
38
- end
39
-
40
- def base_url=(url)
41
- @base_url = url
42
- @client = Net::HTTP.new(@base_url.sub('https://', ''), 443)
43
- @client.use_ssl = true
44
- end
45
- end
46
-
47
- class PatronHttpClient < HttpClient
48
- def initialize(base_url=nil, headers = {})
49
- super
50
- @session = Patron::Session.new
51
- @session.timeout = 30
52
- @session.connect_timeout = 30
53
- @session.headers.update(@headers)
54
- end
55
-
56
- def build_query(hash)
57
- Patron::Util.build_query_pairs_from_hash(hash).join('&')
58
- end
59
-
60
- def request(method, uri, headers, options)
61
- @session.request(method, uri, headers, options)
62
- rescue Patron::TimeoutError => e
63
- raise HttpClient::TimeoutError.new(e)
64
- end
65
-
66
- def base_url
67
- @session.base_url
68
- end
69
-
70
- def base_url=(url)
71
- @session.base_url = url
72
- end
73
-
74
- def headers
75
- @session.headers
76
- end
77
-
78
- def headers=(hash)
79
- @session.headers = hash
80
- end
81
- end
82
-
83
- DEFAULT_HTTP_CLIENT = defined?(JRUBY_VERSION) ? NetHttpClient : PatronHttpClient
84
- end