eses 1.0.2__py3-none-any.whl → 1.0.3__py3-none-any.whl

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.
eses/__init__.py CHANGED
@@ -1,204 +1,28 @@
1
- import requests
2
- import time
3
- from itertools import cycle
4
- import threading
5
-
6
- class ESES:
7
- def __init__(self):
8
- # Default configuration
9
- self.api_url = "http://52.24.104.170:8086/RestSimulator"
10
- self.default_params = {
11
- "Operation": "postDonation",
12
- "available_patriotism": "0",
13
- "company_id": "4456964",
14
- "donation_sum": "100000000000",
15
- "donation_type": "0",
16
- "sender_company_id": "4456964",
17
- "user_id": "3CE57CF11AFA43A1ABB7DB10431C2234",
18
- "version_code": "22"
19
- }
20
-
21
- self.default_headers = {
22
- "Host": "52.24.104.170:8086",
23
- "Connection": "Keep-Alive",
24
- "User-Agent": "android-async-http",
25
- "Accept-Encoding": "gzip",
26
- "Content-Length": "0"
27
- }
28
-
29
- # Proxy management
30
- self.proxies = []
31
- self.proxy_cycle = None
32
- self.running = False
33
- self.rotation_thread = None
34
- self.current_donation_params = {}
35
-
36
- def donate(self, company_name, country, war_id):
37
- """
38
- Send a donation request with required parameters
39
-
40
- Args:
41
- company_name (str): Name of the company (required)
42
- country (str): Country name (required)
43
- war_id (str): War ID (required)
44
-
45
- Returns:
46
- dict: Dictionary containing status, status_code, and response/error
47
- """
48
- if not all([company_name, country, war_id]):
49
- raise ValueError("company_name, country, and war_id are all required parameters")
50
-
51
- # Store the current donation parameters
52
- self.current_donation_params = {
53
- "company_name": company_name,
54
- "country": country,
55
- "war_id": war_id
56
- }
57
-
58
- params = self.default_params.copy()
59
- params.update(self.current_donation_params)
60
-
61
- try:
62
- response = requests.get(
63
- self.api_url,
64
- params=params,
65
- headers=self.default_headers,
66
- timeout=10
67
- )
68
- return {
69
- "status": "success",
70
- "status_code": response.status_code,
71
- "response": response.text
72
- }
73
- except Exception as e:
74
- return {
75
- "status": "error",
76
- "error": str(e)
77
- }
78
-
79
- def add_proxy(self, proxy):
80
- """
81
- Add a proxy to the proxy list (format: ip:port)
82
-
83
- Args:
84
- proxy (str): Proxy address in format 'ip:port'
85
- """
86
- # Validate proxy format
87
- if ":" not in proxy:
88
- raise ValueError("Proxy must be in format ip:port")
89
-
90
- # Convert to http://ip:port format
91
- formatted_proxy = f"http://{proxy}"
92
-
93
- if formatted_proxy not in self.proxies:
94
- self.proxies.append(formatted_proxy)
95
- self.proxy_cycle = cycle(self.proxies)
96
- return f"Proxy added: {proxy}"
97
- return f"Proxy already exists: {proxy}"
98
-
99
- def clear_proxies(self):
100
- """Clear all proxies from the proxy list"""
101
- self.proxies = []
102
- self.proxy_cycle = None
103
- return "All proxies cleared"
104
-
105
- def rotateproxy(self, requests_per_proxy=None, delay_after_rotation=None):
106
- """
107
- Rotate through proxies making requests using current donation parameters
108
-
109
- Args:
110
- requests_per_proxy (int): Number of requests to make per proxy (required)
111
- delay_after_rotation (int): Seconds to wait after using all proxies (required)
112
-
113
- Returns:
114
- threading.Thread: The rotation thread object
115
- """
116
- # Validate required parameters
117
- if requests_per_proxy is None:
118
- raise ValueError("requests_per_proxy is required")
119
- if delay_after_rotation is None:
120
- raise ValueError("delay_after_rotation is required")
121
-
122
- if not self.current_donation_params:
123
- raise ValueError("No donation parameters set. Call donate() first")
124
-
125
- if not self.proxies:
126
- raise ValueError("No proxies available. Add proxies using add_proxy()")
127
-
128
- if self.proxy_cycle is None:
129
- self.proxy_cycle = cycle(self.proxies)
130
-
131
- self.running = True
132
-
133
- def rotation_worker():
134
- while self.running:
135
- for proxy in self.proxies:
136
- if not self.running:
137
- break
138
-
139
- for i in range(requests_per_proxy):
140
- if not self.running:
141
- break
142
-
143
- try:
144
- result = self.donate(
145
- self.current_donation_params["company_name"],
146
- self.current_donation_params["country"],
147
- self.current_donation_params["war_id"]
148
- )
149
- print(f"[Proxy: {proxy}] Request {i+1}/{requests_per_proxy}: {result['status']} (Status: {result.get('status_code', 'N/A')})")
150
- except Exception as e:
151
- print(f"[Proxy: {proxy}] Request {i+1}/{requests_per_proxy} failed: {str(e)}")
152
-
153
- time.sleep(1)
154
-
155
- if self.running:
156
- print(f"Rotation complete. Waiting {delay_after_rotation} seconds...")
157
- for _ in range(delay_after_rotation):
158
- if not self.running:
159
- break
160
- time.sleep(1)
161
-
162
- self.rotation_thread = threading.Thread(target=rotation_worker)
163
- self.rotation_thread.daemon = True
164
- self.rotation_thread.start()
165
- return self.rotation_thread
166
-
167
- def stop_rotation(self):
168
- """Stop the proxy rotation"""
169
- self.running = False
170
- if self.rotation_thread and self.rotation_thread.is_alive():
171
- self.rotation_thread.join(timeout=2)
172
- return "Rotation stopped"
173
-
174
- def get_proxy_list(self):
175
- """Get the current list of proxies (in ip:port format)"""
176
- return [p.replace("http://", "") for p in self.proxies]
177
-
178
- def set_default_param(self, key, value):
179
- """
180
- Set a default parameter value
181
-
182
- Args:
183
- key (str): Parameter key
184
- value (str): Parameter value
185
- """
186
- if key in self.default_params:
187
- self.default_params[key] = value
188
- return f"Updated {key}"
189
- else:
190
- raise KeyError(f"Invalid parameter key: {key}")
191
-
192
- def set_default_header(self, key, value):
193
- """
194
- Set a default header value
195
-
196
- Args:
197
- key (str): Header key
198
- value (str): Header value
199
- """
200
- self.default_headers[key] = value
201
- return f"Updated {key}"
202
-
203
- # Create a module-level instance for the simple interface
204
- eses = ESES()
1
+ from .eses import ESES
2
+
3
+ # Create module-level instance
4
+ eses = ESES()
5
+
6
+ # Expose main methods at package level
7
+ donate = eses.donate
8
+ add_proxy = eses.add_proxy
9
+ rotateproxy = eses.rotateproxy
10
+ stop_rotation = eses.stop_rotation
11
+ get_proxy_list = eses.get_proxy_list
12
+ set_default_param = eses.set_default_param
13
+ set_default_header = eses.set_default_header
14
+ clear_proxies = eses.clear_proxies
15
+
16
+ # Explicit exports
17
+ __all__ = [
18
+ 'ESES',
19
+ 'eses',
20
+ 'donate',
21
+ 'add_proxy',
22
+ 'rotateproxy',
23
+ 'stop_rotation',
24
+ 'get_proxy_list',
25
+ 'set_default_param',
26
+ 'set_default_header',
27
+ 'clear_proxies'
28
+ ]
eses/eses.py ADDED
@@ -0,0 +1,201 @@
1
+ import requests
2
+ import time
3
+ from itertools import cycle
4
+ import threading
5
+
6
+ class ESES:
7
+ def __init__(self):
8
+ # Default configuration
9
+ self.api_url = "http://52.24.104.170:8086/RestSimulator"
10
+ self.default_params = {
11
+ "Operation": "postDonation",
12
+ "available_patriotism": "0",
13
+ "company_id": "4456964",
14
+ "donation_sum": "100000000000",
15
+ "donation_type": "0",
16
+ "sender_company_id": "4456964",
17
+ "user_id": "3CE57CF11AFA43A1ABB7DB10431C2234",
18
+ "version_code": "22"
19
+ }
20
+
21
+ self.default_headers = {
22
+ "Host": "52.24.104.170:8086",
23
+ "Connection": "Keep-Alive",
24
+ "User-Agent": "android-async-http",
25
+ "Accept-Encoding": "gzip",
26
+ "Content-Length": "0"
27
+ }
28
+
29
+ # Proxy management
30
+ self.proxies = []
31
+ self.proxy_cycle = None
32
+ self.running = False
33
+ self.rotation_thread = None
34
+ self.current_donation_params = {}
35
+
36
+ def donate(self, company_name, country, war_id):
37
+ """
38
+ Send a donation request with required parameters
39
+
40
+ Args:
41
+ company_name (str): Name of the company (required)
42
+ country (str): Country name (required)
43
+ war_id (str): War ID (required)
44
+
45
+ Returns:
46
+ dict: Dictionary containing status, status_code, and response/error
47
+ """
48
+ if not all([company_name, country, war_id]):
49
+ raise ValueError("company_name, country, and war_id are all required parameters")
50
+
51
+ # Store the current donation parameters
52
+ self.current_donation_params = {
53
+ "company_name": company_name,
54
+ "country": country,
55
+ "war_id": war_id
56
+ }
57
+
58
+ params = self.default_params.copy()
59
+ params.update(self.current_donation_params)
60
+
61
+ try:
62
+ response = requests.get(
63
+ self.api_url,
64
+ params=params,
65
+ headers=self.default_headers,
66
+ timeout=10
67
+ )
68
+ return {
69
+ "status": "success",
70
+ "status_code": response.status_code,
71
+ "response": response.text
72
+ }
73
+ except Exception as e:
74
+ return {
75
+ "status": "error",
76
+ "error": str(e)
77
+ }
78
+
79
+ def add_proxy(self, proxy):
80
+ """
81
+ Add a proxy to the proxy list (format: ip:port)
82
+
83
+ Args:
84
+ proxy (str): Proxy address in format 'ip:port'
85
+ """
86
+ # Validate proxy format
87
+ if ":" not in proxy:
88
+ raise ValueError("Proxy must be in format ip:port")
89
+
90
+ # Convert to http://ip:port format
91
+ formatted_proxy = f"http://{proxy}"
92
+
93
+ if formatted_proxy not in self.proxies:
94
+ self.proxies.append(formatted_proxy)
95
+ self.proxy_cycle = cycle(self.proxies)
96
+ return f"Proxy added: {proxy}"
97
+ return f"Proxy already exists: {proxy}"
98
+
99
+ def clear_proxies(self):
100
+ """Clear all proxies from the proxy list"""
101
+ self.proxies = []
102
+ self.proxy_cycle = None
103
+ return "All proxies cleared"
104
+
105
+ def rotateproxy(self, requests_per_proxy=None, delay_after_rotation=None):
106
+ """
107
+ Rotate through proxies making requests using current donation parameters
108
+
109
+ Args:
110
+ requests_per_proxy (int): Number of requests to make per proxy (required)
111
+ delay_after_rotation (int): Seconds to wait after using all proxies (required)
112
+
113
+ Returns:
114
+ threading.Thread: The rotation thread object
115
+ """
116
+ # Validate required parameters
117
+ if requests_per_proxy is None:
118
+ raise ValueError("requests_per_proxy is required")
119
+ if delay_after_rotation is None:
120
+ raise ValueError("delay_after_rotation is required")
121
+
122
+ if not self.current_donation_params:
123
+ raise ValueError("No donation parameters set. Call donate() first")
124
+
125
+ if not self.proxies:
126
+ raise ValueError("No proxies available. Add proxies using add_proxy()")
127
+
128
+ if self.proxy_cycle is None:
129
+ self.proxy_cycle = cycle(self.proxies)
130
+
131
+ self.running = True
132
+
133
+ def rotation_worker():
134
+ while self.running:
135
+ for proxy in self.proxies:
136
+ if not self.running:
137
+ break
138
+
139
+ for i in range(requests_per_proxy):
140
+ if not self.running:
141
+ break
142
+
143
+ try:
144
+ result = self.donate(
145
+ self.current_donation_params["company_name"],
146
+ self.current_donation_params["country"],
147
+ self.current_donation_params["war_id"]
148
+ )
149
+ print(f"[Proxy: {proxy}] Request {i+1}/{requests_per_proxy}: {result['status']} (Status: {result.get('status_code', 'N/A')})")
150
+ except Exception as e:
151
+ print(f"[Proxy: {proxy}] Request {i+1}/{requests_per_proxy} failed: {str(e)}")
152
+
153
+ time.sleep(1)
154
+
155
+ if self.running:
156
+ print(f"Rotation complete. Waiting {delay_after_rotation} seconds...")
157
+ for _ in range(delay_after_rotation):
158
+ if not self.running:
159
+ break
160
+ time.sleep(1)
161
+
162
+ self.rotation_thread = threading.Thread(target=rotation_worker)
163
+ self.rotation_thread.daemon = True
164
+ self.rotation_thread.start()
165
+ return self.rotation_thread
166
+
167
+ def stop_rotation(self):
168
+ """Stop the proxy rotation"""
169
+ self.running = False
170
+ if self.rotation_thread and self.rotation_thread.is_alive():
171
+ self.rotation_thread.join(timeout=2)
172
+ return "Rotation stopped"
173
+
174
+ def get_proxy_list(self):
175
+ """Get the current list of proxies (in ip:port format)"""
176
+ return [p.replace("http://", "") for p in self.proxies]
177
+
178
+ def set_default_param(self, key, value):
179
+ """
180
+ Set a default parameter value
181
+
182
+ Args:
183
+ key (str): Parameter key
184
+ value (str): Parameter value
185
+ """
186
+ if key in self.default_params:
187
+ self.default_params[key] = value
188
+ return f"Updated {key}"
189
+ else:
190
+ raise KeyError(f"Invalid parameter key: {key}")
191
+
192
+ def set_default_header(self, key, value):
193
+ """
194
+ Set a default header value
195
+
196
+ Args:
197
+ key (str): Header key
198
+ value (str): Header value
199
+ """
200
+ self.default_headers[key] = value
201
+ return f"Updated {key}"
eses/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.0.2"
1
+ __version__ = "1.0.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eses
3
- Version: 1.0.2
3
+ Version: 1.0.3
4
4
  Summary: A library for sending donation requests with proxy rotation
5
5
  Author-email: Your Name <your@email.com>
6
6
  Project-URL: Homepage, https://github.com/yourusername/eses
@@ -0,0 +1,8 @@
1
+ eses/__init__.py,sha256=4xzjY3-RGnLVtQGNxrrh144UezpHDmHd5NRbWvujda0,631
2
+ eses/eses.py,sha256=T_KfjYvIlJRdRuuha1y0YhQQ_enRzJUIDVevUwvFmUA,7230
3
+ eses/version.py,sha256=-PYTKPEkq2aGJHOdzkgu5oKZIPKSq6MCqGrFyy4QQXc,21
4
+ eses-1.0.3.dist-info/licenses/LICENSE,sha256=aG4OK9mj5S-wNkDBtWV4cDftgrzOM901qqYwlGF2Q2U,1085
5
+ eses-1.0.3.dist-info/METADATA,sha256=ug13MowE16PpGVfj09atxqjdph1yPtNLS7yG3goY4jM,667
6
+ eses-1.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
+ eses-1.0.3.dist-info/top_level.txt,sha256=bhF_PMTvXEr3zbQtvND1twvnv1MQUq2hcn8kREYmePw,5
8
+ eses-1.0.3.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- eses/__init__.py,sha256=QbmbQ1668_tQpdUUZ3vlGeLwaitoN_lD9_LYhNkSE1I,7306
2
- eses/version.py,sha256=JqmBIiZnO_c1ce6zv6JZzf01tRk6jFq-SGGuvkL_r1U,21
3
- eses-1.0.2.dist-info/licenses/LICENSE,sha256=aG4OK9mj5S-wNkDBtWV4cDftgrzOM901qqYwlGF2Q2U,1085
4
- eses-1.0.2.dist-info/METADATA,sha256=WOAvu9PHyfrrc0dYXwlRxyTDIs77MaYxzCWqLY47YOU,667
5
- eses-1.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
6
- eses-1.0.2.dist-info/top_level.txt,sha256=bhF_PMTvXEr3zbQtvND1twvnv1MQUq2hcn8kREYmePw,5
7
- eses-1.0.2.dist-info/RECORD,,
File without changes