baidu-sms 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 467956a341609a3efc3097829b0d6e73e5477000
4
+ data.tar.gz: d25a8d79594572a236f926d9546d14e92894b6e3
5
+ SHA512:
6
+ metadata.gz: 5286357283500638e14684c7e4af00959e16a9bb4b767bdf90dea09b780ab038f1b6096070ee19daa557ccb3fbf704f566ef4cfd048d2cbcac601b1f4b1dfd19
7
+ data.tar.gz: 7f812d56c67aa4ed755496b45b4bdb56de5eb993dadca0dfe80fdd449a094a7c59f172255626f0b31ae3f2da9506d2b963e533e976e750b1601208186fde448b
data/lib/baidu-sms.rb ADDED
@@ -0,0 +1,9 @@
1
+ require_relative 'baidu-sms/core'
2
+ require_relative 'baidu-sms/report_service'
3
+ require_relative 'baidu-sms/reports'
4
+ require_relative 'baidu-sms/level_of_details'
5
+ require_relative 'baidu-sms/device'
6
+ require_relative 'baidu-sms/version'
7
+
8
+ module BaiduSMS
9
+ end
@@ -0,0 +1,29 @@
1
+ module BaiduSMS
2
+ module Core
3
+
4
+ BAIDU_HOST = { basic: "http://api.baidu.com", secure: "https://api.baidu.com" }
5
+ SMS_RESOURCE = "/sem/sms/v3/"
6
+ COMMON_RESOURCE = "/sem/common/v2"
7
+ AUTH_NS = "ns2"
8
+
9
+ def authorise_headers(username, password, token)
10
+ { auth_namespace('AuthHeader') => { auth_namespace('username') => username,
11
+ auth_namespace('password') => password,
12
+ auth_namespace('token') => token } }
13
+ end
14
+
15
+ def initialise_client(service, credentials)
16
+ wsdl_namespace_location = BAIDU_HOST[:secure] + SMS_RESOURCE + service + "?wsdl"
17
+ authorise_namespace_location = BAIDU_HOST[:basic] + COMMON_RESOURCE
18
+ Savon.client(wsdl: wsdl_namespace_location,
19
+ namespaces: { "xmlns:#{AUTH_NS}" => authorise_namespace_location },
20
+ soap_header: authorise_headers(credentials[:username], credentials[:password], credentials[:token])
21
+ )
22
+ end
23
+
24
+ def auth_namespace(str)
25
+ "#{AUTH_NS}:#{str}"
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ module BaiduSMS
2
+ module Device
3
+
4
+ ALL = 0
5
+ DESKTOP = 1
6
+ MOBILE = 2
7
+
8
+ def self.from_name(str)
9
+ self.const_get(str.upcase)
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ module BaiduSMS
2
+ module LevelOfDetails
3
+
4
+ ACCOUNT = 2
5
+ CAMPAIGN = 3
6
+ AD_GROUP = 5
7
+ KEYWORD = 6
8
+ CREATIVE = 7
9
+ KEYWORD_KEYWORD_ID = 11
10
+ KEYWORD_PLUS_CREATIVE = 12
11
+
12
+ def self.from_name(str)
13
+ self.const_get(str.upcase)
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ module BaiduSMS
2
+ class ReportService
3
+ include BaiduSMS::Core
4
+
5
+ REPORT_SERVICE = "ReportService"
6
+
7
+ def initialize(credentials)
8
+ @client = initialise_client(REPORT_SERVICE, credentials)
9
+ end
10
+
11
+ def create_report(report, params)
12
+ message = { reportRequestType: params.merge({reportType: report}) }
13
+
14
+ response = call(:get_professional_report_id, message: message)
15
+ response.body[:get_professional_report_id_response][:report_id]
16
+ end
17
+
18
+ def report_ready?(report_id)
19
+ response = call(:get_report_state, message: { report_id: report_id })
20
+ response.body[:get_report_state_response][:is_generated].to_i == 3
21
+ end
22
+
23
+ def report_url(report_id)
24
+ response = call(:get_report_file_url, message: { report_id: report_id })
25
+ response.body[:get_report_file_url_response][:report_file_path]
26
+ end
27
+
28
+ private
29
+
30
+ def call(*args)
31
+ response = @client.call(*args)
32
+ # debugger
33
+ header = response.header[:res_header]
34
+ raise BaiduSMSInvalidRequestError.new("#{header[:failures][:code]} - #{header[:failures][:message]}") unless header[:status].to_i == 0
35
+ response
36
+ end
37
+
38
+ class BaiduSMSInvalidRequestError < StandardError; end
39
+ end
40
+ end
@@ -0,0 +1,19 @@
1
+ module BaiduSMS
2
+ module Reports
3
+
4
+ ACCOUNTS = 2
5
+ CAMPAIGN = 10
6
+ AD_GROUP = 11
7
+ KEYWORD = 14
8
+ CREATIVE = 12
9
+ KEYWORDS = 9
10
+ LOCATION = 3
11
+ SEARCH_TERM = 6
12
+ MATCHING = 15
13
+
14
+ def self.from_name(str)
15
+ self.const_get(str.upcase)
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module BaiduSMS
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: baidu-sms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Robert Borkowski
8
+ - Daniel Padden
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: savon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: debugger
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ description: Baidu Search Marketing Service API
43
+ email:
44
+ - robert.borkowski@forward3d.com
45
+ - daniel.padden@forward3d.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - lib/baidu-sms.rb
51
+ - lib/baidu-sms/core.rb
52
+ - lib/baidu-sms/report_service.rb
53
+ - lib/baidu-sms/reports.rb
54
+ - lib/baidu-sms/level_of_details.rb
55
+ - lib/baidu-sms/device.rb
56
+ - lib/baidu-sms/version.rb
57
+ homepage: ''
58
+ licenses:
59
+ - MIT
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.1.5
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: Wrapper for connecting to the Baidu Search Marketing API
81
+ test_files: []
82
+ has_rdoc: