neuron-client 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/README.md +34 -8
  2. data/lib/neuron-client.rb +61 -12
  3. data/lib/neuron-client/{connection.rb → admin_connection.rb} +7 -7
  4. data/lib/neuron-client/api.rb +48 -31
  5. data/lib/neuron-client/membase_connection.rb +18 -0
  6. data/lib/neuron-client/model/admin/ad.rb +22 -0
  7. data/lib/neuron-client/model/admin/ad_zone.rb +15 -0
  8. data/lib/neuron-client/model/admin/base.rb +91 -0
  9. data/lib/neuron-client/model/admin/blocked_referer.rb +12 -0
  10. data/lib/neuron-client/model/admin/blocked_user_agent.rb +12 -0
  11. data/lib/neuron-client/model/admin/geo_target.rb +16 -0
  12. data/lib/neuron-client/model/admin/report.rb +15 -0
  13. data/lib/neuron-client/model/admin/s3_file.rb +12 -0
  14. data/lib/neuron-client/model/admin/zone.rb +15 -0
  15. data/lib/neuron-client/model/base.rb +38 -0
  16. data/lib/neuron-client/model/common/ad.rb +40 -0
  17. data/lib/neuron-client/model/common/ad_calculations.rb +329 -0
  18. data/lib/neuron-client/model/common/ad_zone.rb +17 -0
  19. data/lib/neuron-client/model/common/base.rb +67 -0
  20. data/lib/neuron-client/model/common/blocked_referer.rb +16 -0
  21. data/lib/neuron-client/model/common/blocked_user_agent.rb +16 -0
  22. data/lib/neuron-client/model/common/geo_target.rb +16 -0
  23. data/lib/neuron-client/model/common/report.rb +21 -0
  24. data/lib/neuron-client/model/common/s3_file.rb +16 -0
  25. data/lib/neuron-client/model/common/zone.rb +22 -0
  26. data/lib/neuron-client/model/common/zone_calculations.rb +41 -0
  27. data/lib/neuron-client/model/membase/ad.rb +31 -0
  28. data/lib/neuron-client/model/membase/ad_zone.rb +11 -0
  29. data/lib/neuron-client/model/membase/blocked_referer.rb +18 -0
  30. data/lib/neuron-client/model/membase/blocked_user_agent.rb +18 -0
  31. data/lib/neuron-client/model/membase/geo_target.rb +11 -0
  32. data/lib/neuron-client/model/membase/report.rb +11 -0
  33. data/lib/neuron-client/model/membase/s3_file.rb +11 -0
  34. data/lib/neuron-client/model/membase/zone.rb +19 -0
  35. data/lib/neuron-client/model/models.rb +14 -0
  36. data/lib/neuron-client/version.rb +1 -1
  37. data/neuron-client.gemspec +18 -11
  38. data/spec/fixtures/vcr_cassettes/s3_file.yml +186 -4
  39. data/spec/lib/admin_connection_spec.rb +82 -0
  40. data/spec/lib/api_spec.rb +80 -0
  41. data/spec/lib/membase_connection_spec.rb +27 -0
  42. data/spec/lib/model/admin/ad_spec.rb +34 -0
  43. data/spec/lib/model/admin/ad_zone_spec.rb +19 -0
  44. data/spec/lib/model/admin/base_spec.rb +11 -0
  45. data/spec/lib/model/admin/blocked_referer_spec.rb +11 -0
  46. data/spec/lib/model/admin/blocked_user_agent_spec.rb +11 -0
  47. data/spec/lib/model/admin/geo_target_spec.rb +30 -0
  48. data/spec/lib/model/admin/report_spec.rb +21 -0
  49. data/spec/lib/model/admin/s3_spec.rb +11 -0
  50. data/spec/lib/model/admin/zone_spec.rb +21 -0
  51. data/spec/lib/model/base_spec.rb +89 -0
  52. data/spec/lib/model/common/ad_calculations_spec.rb +1148 -0
  53. data/spec/lib/model/common/ad_spec.rb +11 -0
  54. data/spec/lib/model/common/ad_zone_spec.rb +11 -0
  55. data/spec/lib/model/common/base_spec.rb +11 -0
  56. data/spec/lib/model/common/blocked_referer_spec.rb +11 -0
  57. data/spec/lib/model/common/blocked_user_agent_spec.rb +11 -0
  58. data/spec/lib/model/common/geo_target_spec.rb +11 -0
  59. data/spec/lib/model/common/report_spec.rb +11 -0
  60. data/spec/lib/model/common/s3_spec.rb +11 -0
  61. data/spec/lib/model/common/zone_calculations_spec.rb +54 -0
  62. data/spec/lib/model/common/zone_spec.rb +11 -0
  63. data/spec/lib/model/membase/ad_spec.rb +50 -0
  64. data/spec/lib/model/membase/ad_zone_spec.rb +11 -0
  65. data/spec/lib/model/membase/base_spec.rb +11 -0
  66. data/spec/lib/model/membase/blocked_referer_spec.rb +30 -0
  67. data/spec/lib/model/membase/blocked_user_agent_spec.rb +30 -0
  68. data/spec/lib/model/membase/geo_target_spec.rb +11 -0
  69. data/spec/lib/model/membase/report_spec.rb +11 -0
  70. data/spec/lib/model/membase/s3_spec.rb +11 -0
  71. data/spec/lib/model/membase/zone_spec.rb +28 -0
  72. data/spec/lib/old_spec.rb +192 -149
  73. data/spec/lib/s3_file_spec.rb +45 -42
  74. data/spec/spec_helper.rb +2 -1
  75. metadata +296 -57
  76. data/lib/neuron-client/ad.rb +0 -39
  77. data/lib/neuron-client/ad_zone.rb +0 -16
  78. data/lib/neuron-client/blocked_referer.rb +0 -12
  79. data/lib/neuron-client/blocked_user_agent.rb +0 -12
  80. data/lib/neuron-client/connected.rb +0 -138
  81. data/lib/neuron-client/geo_target.rb +0 -16
  82. data/lib/neuron-client/real_time_stats.rb +0 -0
  83. data/lib/neuron-client/report.rb +0 -20
  84. data/lib/neuron-client/s3_file.rb +0 -10
  85. data/lib/neuron-client/zone.rb +0 -16
@@ -1,39 +0,0 @@
1
- module Neuron
2
- module Client
3
- class Ad
4
- include Connected
5
- resource_name("ad")
6
- resources_name("ads")
7
-
8
- attr_accessor :name, :approved, :response_type, :parameters, :geo_target_ids,
9
- # redirect
10
- :redirect_url,
11
- # video
12
- :video_api_url, :video_setup_xml, :video_flv_url,
13
- :video_clickthru_url, :video_companion_ad_html, :social_links, :social_links_attributes,
14
- # caps
15
- :frequency_cap_limit, :frequency_cap_window, :overall_cap,
16
- :daily_cap, :day_partitions, :ideal_impressions_per_hour,
17
- # range
18
- :start_datetime, :end_datetime, :time_zone,
19
- # timestamps
20
- :created_at, :updated_at
21
-
22
- def self.stringify_day_partitions(days)
23
- result = ""
24
- 168.times do |i|
25
- result << (days[i.to_s] || "F")
26
- end
27
- result
28
- end
29
-
30
- def recent(statistic, parameters)
31
- self.class.connection.get("ads/#{id}/recent/#{statistic}", parameters)
32
- end
33
-
34
- def unlink(ad_id)
35
- self.class.connection.delete("ads/#{id}/zones/#{ad_id}")
36
- end
37
- end
38
- end
39
- end
@@ -1,16 +0,0 @@
1
- module Neuron
2
- module Client
3
- class AdZone
4
- include Connected
5
- resource_name("ad_zone")
6
- resources_name("ad_zones")
7
-
8
- attr_accessor :ad_id, :zone_id, :priority, :weight,
9
- :created_at, :updated_at
10
-
11
- def self.unlink(ad_id, zone_id)
12
- self.connection.delete("zones/#{zone_id}/ads/#{ad_id}")
13
- end
14
- end
15
- end
16
- end
@@ -1,12 +0,0 @@
1
- module Neuron
2
- module Client
3
- class BlockedReferer
4
- include Connected
5
- resource_name("blocked_referer")
6
- resources_name("blocked_referers")
7
-
8
- attr_accessor :referer, :reversed_referer, :created_at, :updated_at
9
-
10
- end
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- module Neuron
2
- module Client
3
- class BlockedUserAgent
4
- include Connected
5
- resource_name("blocked_user_agent")
6
- resources_name("blocked_user_agents")
7
-
8
- attr_accessor :user_agent, :description, :created_at, :updated_at
9
-
10
- end
11
- end
12
- end
@@ -1,138 +0,0 @@
1
- module Neuron
2
- module Client
3
- module Connected
4
- def initialize(attrs=nil)
5
- (attrs || {}).each do |k,v|
6
- next if k.to_s == 'id' && self.class.remote_id != 'id'
7
- k = 'id' if k.to_s == self.class.remote_id
8
- self.send("#{k}=", v) if self.respond_to?("#{k}=")
9
- end
10
- end
11
-
12
- def attributes
13
- self.class.attributes || []
14
- end
15
-
16
- def to_hash(*except)
17
- hash = {}
18
- attributes.reject{|a| except.collect(&:to_sym).include?(a.to_sym)}.each do |attribute|
19
- value = send(attribute)
20
- hash[attribute] = value unless value.nil?
21
- end
22
- hash
23
- end
24
-
25
- def new_record?
26
- id.nil?
27
- end
28
-
29
- def save
30
- @errors = catch :errors do
31
- if new_record?
32
- response = self.class.connection.post("#{self.class.resources_name}", {self.class.resource_name => self.to_hash(:errors, :updated_at, :created_at)})
33
- self.id = response[self.class.resource_name][self.class.remote_id]
34
- else
35
- response = self.class.connection.put("#{self.class.resources_name}/#{id}", {self.class.resource_name => self.to_hash(:errors, :updated_at, :created_at)})
36
- end
37
- []
38
- end
39
-
40
- @errors.empty?
41
- end
42
-
43
- def update_attributes(attrs={})
44
- @errors = catch :errors do
45
- response = self.class.connection.put("#{self.class.resources_name}/#{id}", {self.class.resource_name => attrs})
46
- attrs.each do |key, value|
47
- self.send("#{key}=", value) if self.respond_to?("#{key}=")
48
- end
49
- []
50
- end
51
-
52
- @errors.empty?
53
- end
54
-
55
- def valid?
56
- @errors.empty?
57
- end
58
-
59
- def destroy
60
- self.class.connection.delete("#{self.class.resources_name}/#{id}")
61
- end
62
-
63
- def self.included(base)
64
- base.send(:attr_accessor, :id)
65
- base.send(:attr_accessor, :errors)
66
- base.extend(ClassMethods)
67
- end
68
-
69
- module ClassMethods
70
- def attr_accessor(*vars)
71
- @attributes ||= []
72
- @attributes += vars
73
- super(*vars)
74
- end
75
-
76
- def attributes
77
- @attributes
78
- end
79
-
80
- attr_accessor :connection
81
-
82
- def connected?
83
- !connected.nil?
84
- end
85
-
86
- def connection
87
- API.connection
88
- end
89
-
90
- def resource_name(res=nil)
91
- if res
92
- @resource_name = res.to_s
93
- end
94
- @resource_name
95
- end
96
-
97
- def resources_name(res=nil)
98
- if res
99
- @resources_name = res.to_s.downcase
100
- end
101
- if @resources_name.nil? && !@resource_name.nil?
102
- @resources_name = "#{@resource_name}s"
103
- end
104
- @resources_name
105
- end
106
-
107
- def remote_id(remote_id=nil)
108
- if remote_id
109
- @remote_id = remote_id.to_s
110
- end
111
- @remote_id || 'id'
112
- end
113
-
114
- def find(id)
115
- response = self.connection.get("#{self.resources_name}/#{id}")
116
- self.new(response[self.resource_name])
117
- end
118
-
119
- def all
120
- response = self.connection.get("#{self.resources_name}")
121
- response.map{|hash| self.new(hash[self.resource_name])}
122
- end
123
-
124
- def create(attrs={})
125
- @errors = catch (:errors) do
126
- return create!(attrs)
127
- end
128
- nil
129
- end
130
-
131
- def create!(attrs={})
132
- response = self.connection.post("#{self.resources_name}", {self.resource_name => attrs})
133
- self.new(response[self.resource_name])
134
- end
135
- end
136
- end
137
- end
138
- end
@@ -1,16 +0,0 @@
1
- module Neuron
2
- module Client
3
- class GeoTarget
4
- include Connected
5
- resource_name("geo_target")
6
- resources_name("geo_targets")
7
-
8
- attr_accessor :geo_type, :full_name, :name, :abbreviation, :updated_at
9
-
10
- def self.query(parameters)
11
- response = self.connection.get("geo_targets", parameters)
12
- response.map{|hash| self.new(hash[self.resource_name])}
13
- end
14
- end
15
- end
16
- end
File without changes
@@ -1,20 +0,0 @@
1
- module Neuron
2
- module Client
3
- class Report
4
- include Connected
5
- resource_name("report")
6
- resources_name("reports")
7
-
8
- attr_accessor :errors
9
- attr_accessor :template, :parameters, :state
10
-
11
- def status
12
- @state
13
- end
14
-
15
- def result
16
- self.class.connection.get("reports/#{id}/result", :format => "")
17
- end
18
- end
19
- end
20
- end
@@ -1,10 +0,0 @@
1
- module Neuron
2
- module Client
3
- class S3File
4
- include Connected
5
- resource_name("s3_file")
6
- resources_name("s3_files")
7
- attr_accessor :bucket, :filename, :purpose, :created_at, :updated_at
8
- end
9
- end
10
- end
@@ -1,16 +0,0 @@
1
- module Neuron
2
- module Client
3
- class Zone
4
- include Connected
5
- resource_name("zone")
6
- resources_name("zones")
7
-
8
- attr_accessor :slug, :response_type, :template_slug, :parameters,
9
- :created_at, :updated_at
10
-
11
- def unlink(ad_id)
12
- self.class.connection.delete("zones/#{id}/ads/#{ad_id}")
13
- end
14
- end
15
- end
16
- end