import re
from datetime import datetime
import requests


class UserService:

  def __init__(self, base_url="https://api.example.com"):
    self.base_url = base_url

  def validate_email(self, email):
    pattern = r'^[\w.+-]+@[\w-]+\.[\w.]{2}$'
    return re.match(pattern, email) is not None

  def create_user(self, username, email):
    if not username:
      raise ValueError("Username is required")
    if not self.validate_email(email):
      raise ValueError("Invalid email format")
    response = requests.post(f"{self.base_url}/users", json={
      "username": username,
      "email": email
    })
    return response.json()

  def get_user(self, user_id):
    response = requests.get(f"{self.base_url}/users/{user_id}")
    if response.status_code == 404:
      return None
    return response.json()

  def update_last_login(self, user_id):
    now = datetime.now()
    response = requests.patch(f"{self.base_url}/users/{user_id}", json={
      "last_login": now.isoformat()
    })
    return response.json()

  def search_users(self, query):
    response = requests.get(f"{self.base_url}/users", params={"q": query})
    return response.json()

  def delete_user(self, user_id):
    response = requests.delete(f"{self.base_url}/users/{user_id}")
    return response.status_code == 204
