Перейти к содержимому

интернет-биржа

Форумы


Lik

Регистрация: 22 янв 2016
Не в сети Активность: июл 30 2020 17:00
-----

Мои сообщения

В теме: Пример API Python 2.7.17

17 марта 2020 - 11:39

 

Jetix, Надеюсь к этому коде не замечаний?


Вот тут сразу три замечания:

def Tools(self):
    return self.api('Tools', make_params(self.AuthS),'','','','',True)

1. Похоже, что там закрывающая скобка в неправильном месте у make_params.
2. Сам вызов make_params неправильный - это же метод текущего класса, он должен вызываться через self.
3. Это же Python! Что это за куча пустых кавычек? В Python же не зря существуют именованные параметры.
 
Проблемы из пунктов 2 и 3 повторяются многократно.
 
 
Ещё одна проблема вот здесь:

class Ndx(self):

Если вы пишите под Python 2, то в скобках должен быть object (чтоб использовать классы нового стиля), а если под Python 3, то в скобках не должно ничего быть (если вы сознательно не наследуетесь от чего-то) и сами скобки тоже не нужны.
 
Я так понимаю, что вы этот код не запускали ни разу, иначе б увидели как вываливаются ошибки.
 
 
 

 
Ну, и менее критичное замечание - это формирование строки параметров. Тут, на самом деле, можно придраться ко многому.
Например, почему так:

self.Auth = Login + ";" + Password + ";" + Culture + ";" + Wmid
self.AuthS = Login + ";" + Password + ";" + Culture

А не так:

self.AuthS = Login + ";" + Password + ";" + Culture
self.Auth = self.AuthS + ";" + Wmid

То есть, зачем дважды формировать строку с нуля, если основная часть одинаковая?
 
А следующий пункт - это зачем вообще две разные переменные, если Wmid можно добавлять к строке при необходимости, как это происходит с остальными непостоянными параметрами?
 
И наконец лапша из if-оф при добавлении параметров. Это, в принципе, плохая практика, а для Python - совсем кощунство.

 

 

Все что мог поправил. Куча if делают make_params универсальным. Более простого варианта не придумал.

С именованными параметрами пока не сталкивался - не знаю, как тут их применить)

На github создал проект:

https://github.com/l...indx_api_python

Прошу туда внести правки если заметите еще что-то)


В теме: Пример API Python 2.7.17

16 марта 2020 - 15:39

Jetix, Надеюсь к этому коде не замечаний?

В теме: Пример API Python 2.7.17

16 марта 2020 - 15:38

import requests
import base64
import hashlib
import time
class Indx:
    
    def __init__(selfLogin,Password,Culture,Wmid):
        self.AuthS = Login + ";" + Password + ";" + Culture
        self.Auth = AuthS";" + Wmid
 
    def make_paramsselfAuthID = ''DateStart = ''
  DateEnd = ''sOfferID = ''ifS = FalseTick_ID = ''Tick_Kind = '')
        if not ifS:
            if ID: Auth += ';'+ID
            if DateStart: Auth += ';' + DateStart
            if DateEnd: Auth += ';' + DateEnd
            if sOfferID: Auth += ';' + sOfferID
            if Tick_ID: Auth += ';' + Tick_ID
            if Tick_Kind: Auth += ';' + Tick_Kind
        sig = base64.b64encode(hashlib.sha256(Auth.encode(
'utf-8')).digest())
        return  params = {"ApiContext": {"Login": Login, "Wmid": Wmid, 
       "Culture""ru-RU""Signature": sig} }
    
    def api(selfapi_nameapi_params={}):
        time.sleep(2)
        header = {"Content-type""application/json; charset=utf-8"}
        response=requests.post('api.indx.ru/api/v2/trade/'+api_name, data = api_params, headers = header )
        return response.text
    
    def Balance(self):
        return self.api('Balance', self.make_params(self.Auth))
    
    def Tools(self):
        return self.api('Tools', self.make_params(self.AuthS,'','','','',True)
    
    def HistoryTrading(self,ID,DateStart,DateEnd):
        params = self.make_params(self.Auth,ID,DateStart,DateEnd)
        params['Trading'] = {"ID":ID,"DateStart":DateStart,
"DateEnd":DateEnd}}
        return self.api('HistoryTrading', params)
    
    def HistoryTransaction(self,ID,DateStart,DateEnd):
        params = self.make_params(self.Auth,ID,DateStart,DateEnd)
        params['Trading'] = {"ID":ID,"DateStart":DateStart,"DateEnd":DateEnd}}
        return self.api('HistoryTransaction', params)
    
    def OfferMy(self):
        return self.api('OfferMy', self.make_params(self.Auth))
    
    def OfferList(selfID):
        params = self.make_params(self.Auth,ID)
        params['Trading'] = {'ID': ID}
        return self.api('OfferList', params)
    
    def OfferAdd(selfIDCountIsBidPrice):
        params = self.make_params(self.Auth,ID)
        params['Offer'] = {"ID": ID, "Count": Count, "IsAnonymous"'true',
 "IsBid": IsBid, "Price": Price}
        return self.api('OfferAdd', params)
    
    def OfferDelete(selfOfferID):
        params = self.make_params(self.Auth,'','','',str(OfferID))
        params['OfferId']=OfferID
        return self.api('OfferAdd', params)
    
    def Tick(selfTick_IDTick_Kind):
        params = self.make_params(self.Auth,'','','','',False,Tick_ID,Tick_Kind)
        params['Tick'] = {"ID": Tick_ID, "Kind": Tick_Kind} }
        return self.api('tick', params)

В теме: Пример API Python 2.7.17

16 марта 2020 - 13:50

Спасибо. Замечание все по существу.

А что все таки с запросом:

Tick - Статистика сделок за период времени ?


В теме: Пример API Python 2.7.17

11 марта 2020 - 14:24

Добрый день.

Все написано красиво.

Только хорошо бы добавить запрос:

Tick - Статистика сделок за период времени.