nobetcieczane

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2026 License: MIT Imports: 9 Imported by: 0

README

🏥 nobetci-eczane-api-go (Go / Golang SDK)

Türkiye ve KKTC genelindeki 81 ilin nöbetçi eczane verilerine, il/ilçe sorgularına ve GPS koordinat bazlı en yakın eczane lokasyonlarına programatik erişim sağlayan resmi Go (Golang) istemci kütüphanesidir.

Go Reference Go Report Card


📦 Kurulum (Installation)

go get -u github.com/mehmeterdogan/nobetci-eczane-api-go

🚀 Hızlı Başlangıç (Quick Start)

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	nobetcieczane "github.com/mehmeterdogan/nobetci-eczane-api-go"
)

func main() {
	// 1. İstemciyi API anahtarınız ile başlatın
	client, err := nobetcieczane.NewClient("SENIN_API_ANAHTARIN")
	if err != nil {
		log.Fatal(err)
	}

	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	// 2. İstanbul (34) Nöbetçi Eczaneleri
	resp, err := client.GetSentryByCity(ctx, 34, 50)
	if err != nil {
		log.Fatalf("API Hatası: %v", err)
	}

	for _, p := range resp.Data {
		fmt.Printf("💊 %s - %s / %s (Tel: %v)\n", p.Name, p.District, p.City, p.Phone)
	}
}

💻 Kullanım Örnekleri

1. Kadıköy (34 / 440) Nöbetçi Eczaneleri
resp, err := client.GetSentryByDistrict(ctx, 34, 440, 50)
2. Koordinat Bazlı En Yakın Eczaneler (Nearby)
nearby, err := client.GetNearbyPharmacies(ctx, 40.9876, 28.9784, true, 10)
3. İller ve İlçeler Listesi
// Tüm İller
cities, err := client.GetCities(ctx)

// Ankara (06) İlçeleri
districts, err := client.GetDistricts(ctx, 6)
4. Hesap ve Kota Bilgisi
account, err := client.GetAccountInfo(ctx)
5. IP Whitelist Güncelleme
_, err := client.UpdateWhitelist(ctx, "5.132.*")

🛡️ Hata Yönetimi

resp, err := client.GetSentryByCity(ctx, 34, 50)
if err != nil {
    var apiErr *nobetcieczane.APIError
    if errors.As(err, &apiErr) {
        fmt.Printf("API Hatası [HTTP %d]: %s\n", apiErr.StatusCode, apiErr.Message)
    } else {
        fmt.Printf("Ağ Hatası: %v\n", err)
    }
}

📄 Lisans & İletişim

Documentation

Index

Constants

View Source
const (
	DefaultBaseURL = "https://api.eczaneler.org/v2"
	DefaultTimeout = 10 * time.Second
)

Variables

View Source
var (
	ErrUnauthorized = &APIError{StatusCode: 401, Message: "Geçersiz API Anahtarı veya X-Api-Key başlığı eksik."}
	ErrForbidden    = &APIError{StatusCode: 403, Message: "Erişim reddedildi. IP Whitelist listenizi veya lisans sürenizi kontrol edin."}
	ErrNotFound     = &APIError{StatusCode: 404, Message: "İstenen kaynak veya eczane bulunamadı."}
	ErrRateLimit    = &APIError{StatusCode: 429, Message: "İstek limiti aşıldı. Lütfen bir süre sonra tekrar deneyin."}
	ErrValidation   = &APIError{StatusCode: 400, Message: "Geçersiz istek parametresi."}
)

Standart hata referansları

Functions

This section is empty.

Types

type APIError

type APIError struct {
	StatusCode int
	Message    string
}

APIError API hata yapısıdır.

func (*APIError) Error

func (e *APIError) Error() string

type APIResponse

type APIResponse[T any] struct {
	Status     string      `json:"status"`
	Message    *string     `json:"message,omitempty"`
	Data       T           `json:"data"`
	Pagination *Pagination `json:"pagination,omitempty"`
}

APIResponse genel API yanıt sarmalayıcısıdır.

type AccountInfo

type AccountInfo struct {
	Status        *string  `json:"status,omitempty"`
	Email         *string  `json:"email,omitempty"`
	ActivePackage *string  `json:"active_package,omitempty"`
	DaysLeft      *int     `json:"days_left,omitempty"`
	EndDate       *string  `json:"end_date,omitempty"`
	AllowedIPs    []string `json:"allowed_ips,omitempty"`
	RateLimit     *string  `json:"rate_limit,omitempty"`
}

AccountInfo hesap ve kota bilgileri modelidir.

type City

type City struct {
	ID    int     `json:"id"`
	Name  string  `json:"name"`
	Slug  *string `json:"slug,omitempty"`
	Plate *int    `json:"plate,omitempty"`
}

City il veri modelidir.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client Nöbetçi Eczane REST API istemcisidir.

func NewClient

func NewClient(apiKey string, opts ...Option) (*Client, error)

NewClient yeni bir NobetciEczane API istemcisi oluşturur.

func (*Client) GetAccountInfo

func (c *Client) GetAccountInfo(ctx context.Context) (*APIResponse[AccountInfo], error)

GetAccountInfo hesap ve kota bilgilerini getirir.

func (*Client) GetAllPharmacies

func (c *Client) GetAllPharmacies(ctx context.Context, page, limit int) (*APIResponse[[]Pharmacy], error)

GetAllPharmacies [Premium] Türkiye'deki tüm eczaneleri getirir.

func (*Client) GetCities

func (c *Client) GetCities(ctx context.Context) (*APIResponse[[]City], error)

GetCities 81 il ve KKTC listesini getirir.

func (*Client) GetCityPharmacies

func (c *Client) GetCityPharmacies(ctx context.Context, cityID, limit int) (*APIResponse[[]Pharmacy], error)

GetCityPharmacies [Premium] bir ildeki tüm eczaneleri getirir.

func (*Client) GetDistrictPharmacies

func (c *Client) GetDistrictPharmacies(ctx context.Context, cityID, districtID, limit int) (*APIResponse[[]Pharmacy], error)

GetDistrictPharmacies [Premium] bir ilçedeki tüm eczaneleri getirir.

func (*Client) GetDistricts

func (c *Client) GetDistricts(ctx context.Context, cityID int) (*APIResponse[[]District], error)

GetDistricts bir ile ait ilçe listesini getirir.

func (*Client) GetNearbyPharmacies

func (c *Client) GetNearbyPharmacies(ctx context.Context, lat, lon float64, isSentry bool, limit int) (*APIResponse[[]Pharmacy], error)

GetNearbyPharmacies GPS koordinatlarına göre en yakın eczaneleri getirir.

func (*Client) GetSentryByCity

func (c *Client) GetSentryByCity(ctx context.Context, cityID, limit int) (*APIResponse[[]Pharmacy], error)

GetSentryByCity belirli bir ile ait nöbetçi eczaneleri getirir (Örn: cityID: 34 - İstanbul).

func (*Client) GetSentryByDistrict

func (c *Client) GetSentryByDistrict(ctx context.Context, cityID, districtID, limit int) (*APIResponse[[]Pharmacy], error)

GetSentryByDistrict belirli bir il ve ilçeye ait nöbetçi eczaneleri getirir (Örn: cityID: 34, districtID: 440).

func (*Client) GetSentryPharmacies

func (c *Client) GetSentryPharmacies(ctx context.Context, page, limit int) (*APIResponse[[]Pharmacy], error)

GetSentryPharmacies tüm nöbetçi eczaneleri sayfalı olarak getirir.

func (*Client) UpdateWhitelist

func (c *Client) UpdateWhitelist(ctx context.Context, ips string) (*APIResponse[map[string]any], error)

UpdateWhitelist izinli IP adresleri listesini (Whitelist) günceller.

type Coordinates

type Coordinates struct {
	Latitude  *float64 `json:"lat,omitempty"`
	Longitude *float64 `json:"lng,omitempty"`
}

Coordinates coğrafi koordinat bilgilerini temsil eder.

type District

type District struct {
	ID     int     `json:"id"`
	CityID int     `json:"city_id"`
	Name   string  `json:"name"`
	Slug   *string `json:"slug,omitempty"`
}

District ilçe veri modelidir.

type NearbyRequest

type NearbyRequest struct {
	Lat      float64 `json:"lat"`
	Lon      float64 `json:"lon"`
	IsSentry int     `json:"is_sentry"`
	Limit    int     `json:"limit"`
}

NearbyRequest yakındaki eczaneler sorgusu için istek gövdesidir.

type Option

type Option func(*Client)

Option Client yapılandırma opsiyonu fonksiyonudur.

func WithBaseURL

func WithBaseURL(baseURL string) Option

WithBaseURL özel bir taban URL belirler.

func WithHTTPClient

func WithHTTPClient(httpClient *http.Client) Option

WithHTTPClient özel bir http.Client belirler.

type Pagination

type Pagination struct {
	Total       int  `json:"total"`
	PerPage     int  `json:"per_page"`
	CurrentPage int  `json:"current_page"`
	TotalPages  int  `json:"total_pages"`
	HasMore     bool `json:"has_more"`
	PrevPage    *int `json:"prev_page,omitempty"`
	NextPage    *int `json:"next_page,omitempty"`
}

Pagination sayfalama meta verileridir.

type Pharmacy

type Pharmacy struct {
	ID                 int          `json:"id"`
	CityID             int          `json:"city_id"`
	DistrictID         int          `json:"district_id"`
	Name               string       `json:"name"`
	Phone              *string      `json:"phone,omitempty"`
	City               string       `json:"city"`
	District           string       `json:"district"`
	Locality           *string      `json:"locality,omitempty"`
	Address            string       `json:"address"`
	AddressDescription *string      `json:"address_description,omitempty"`
	Coordinates        *Coordinates `json:"coordinates,omitempty"`
	MapLink            *string      `json:"map_link,omitempty"`
	IsSentry           bool         `json:"is_sentry"`
	WorkingHours       *string      `json:"workingHours,omitempty"`
	DistanceKM         *float64     `json:"distance_km,omitempty"`
}

Pharmacy eczane veri modelidir.

type WhitelistRequest

type WhitelistRequest struct {
	IPs string `json:"ips"`
}

WhitelistRequest IP whitelist güncelleme istek gövdesidir.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL